Задания
Версия для печати и копирования в MS Word

Тек­сто­вый файл со­сто­ит не более чем из 106 сим­во­лов X, Y и Z. Опре­де­ли­те длину самой длин­ной по­сле­до­ва­тель­но­сти, со­сто­я­щей из сим­во­лов Z. Хотя бы один сим­вол Z на­хо­дит­ся в по­сле­до­ва­тель­но­сти.

Для вы­пол­не­ния этого за­да­ния сле­ду­ет на­пи­сать про­грам­му. Ниже при­ведён файл, ко­то­рый не­об­хо­ди­мо об­ра­бо­тать с по­мо­щью дан­но­го ал­го­рит­ма.

За­да­ние 24

Спрятать решение

Ре­ше­ние.

При­ведём ре­ше­ние Ни­ко­лая Чур­ки­на (Ти­ма­шевск) на языке Python.

f = open('24.txt').readline()

k = 1

m = 0

for i in range(len(f) - 1):

if f[i] == 'Z' and f[i + 1] == 'Z':

k += 1

m = max(m, k)

else:

k = 1

print(m)

В ре­зуль­та­те ра­бо­ты дан­но­го ал­го­рит­ма при вводе дан­ных из файла в усло­вии по­лу­ча­ем ответ  — 7.

 

Ответ: 7.

 

При­ведём ре­ше­ние Артёма Гри­ди­на на языке Python.

import re

print(len(max(re.findall(r'Z+', open('24_demo.txt').readline()))))

 

При­ведём дру­гое ре­ше­ние дан­ной за­да­чи на языке Pascal.

Для ре­ше­ния дан­ной за­да­чи будем по­сим­воль­но счи­ты­вать тек­сто­вый файл. Объ­явим пе­ре­мен­ные: maxLen  — мак­си­маль­ная длина по­сле­до­ва­тель­но­сти, curLen  — вре­мен­ное хра­не­ние длины по­сле­до­ва­тель­но­сти, i  — пе­ре­мен­ная для пе­ре­бо­ра всех сим­во­лов, s  — стро­ка для ра­бо­ты с сим­во­ла­ми из файла. Ал­го­ритм будет срав­ни­вать зна­че­ние те­ку­ще­го сим­во­ла со зна­че­ни­ем преды­ду­ще­го, и если сим­во­лы не будут раз­ли­чать­ся и будут яв­лять­ся бук­вой Z, то зна­че­ние счет­чи­ка будет уве­ли­чи­вать­ся на 1.

 

При­ведём ре­ше­ние дан­ной за­да­чи на языке Pascal.

var maxLen, curLen, i: integer;

s: string;

begin

assign(input, '24.txt');

readln(s);

maxLen := 1;

curLen := 1;

for i:=2 to Length(s) do

if (s[i] = s[i-1]) and (s[i] = 'Z') then begin

curLen := curLen + 1;

if curLen > maxLen then

maxLen := curLen;

end

else

curLen := 1;

writeln(maxLen);

end.


Аналоги к заданию № 27686: 27687 27688 27692 ... Все

Раздел кодификатора ФИПИ: