Тип 24 № 40740 

Обработка символьных строк. Задания для подготовки
i
Текстовый файл содержит только заглавные буквы латинского алфавита (ABC...Z). Определите максимальное количество идущих подряд символов, среди которых нет ни одной буквы A и при этом не менее трёх букв E.
Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.
Задание 24
Решение. Для решения данной задачи будем посимвольно считывать текстовый файл. Объявим переменную c, которая будет хранить очередной считанный символ. Далее объявим переменную countE, в которой будем хранить число символов E в текущей последовательности. Также объявим переменные k и max. Первая нужна для определения длины каждой последовательности символов, среди которых нет символов A, вторая — для хранения максимальной длины такой последовательности. Если будет встречен символ A и переменная countE будет больше двух, будет сравниваться текущая длина последовательности со значением в переменной max. Если текущая длина больше, переменная max перезаписывается.
Приведём решение данной задачи на языке Pascal.
var k, max, countE: integer;
c: char;
f: text;
begin
assign(f,'C:\24.txt');
reset(f);
k := 0;
max := 0;
countE := 0;
while not Eof(f) do begin
read(f, c);
if (c = 'A') then begin
if countE > 2 then begin
if k > max then max := k;
end;
k := 0;
countE := 0;
end
else begin
if c = 'E' then countE := countE + 1;
k := k + 1;
end;
end;
if k > max then
max := k;
writeln(max);
end.
В результате работы данного алгоритма при вводе данных из файла в условии получаем ответ — 282.
Ответ: 282.
Примечание. Путь к файлу необходимо указать согласно расположению файла на Вашем компьютере.
Приведём решение Константина Дубова на языке Python.
with open('24.txt')as f:
l = f.readline()
count, mak = 0, 0
k = 0
for i in range(0, len(l)):
if l[i] != 'A':
count += 1
if l[i] == 'A':
if count >= 3:
t = l[i - count: i]
u = 0
while "E" in t:
u += 1
t = t.replace('E', 'K', 1)
if u >= 3:
mak = max(mak, count)
count = 0
print(mak)
Приведём решение Никиты Соколова на языке Python.
f = open('24.txt').readline()
s = f.split("A")
s = list(filter(lambda x: x.count('E') >= 3, s))
print(len(max(s, key=len)))
Приведём решение Николая Минина на языке Python.
f = open('24.txt').readline()
cfl = fl = maxs = 0
for i in range(0, len(f)):
if f[i] == "C":
cfl += 1
if (f[i] != "A") and (i != len(f)):
fl += 1
elif cfl >= 3:
maxs = max(fl, maxs)
fl = cfl = 0
else:
fl = cfl = 0
print(maxs)
Приведём решение Юрия Лысакова на языке Python.
s = open('242.txt').read()
maxi = 0
for i in range(0,len(s)-1):
for j in range(i+1,len(s)):
s1 = s[i:j+1]
if 'A' in s1: break
else:
if s1.count('E') > 2:
maxi = max(maxi,len(s1))
print(maxi)
Приведём решение Евгения Петченко на языке Python.
print(len(max([i for i in open("24.txt").readline().split("A") if i.count("E") >= 3], key=len)))
Приведём решение Дарии Дроздовой на языке Python.
f = open('24.txt').readline()
count=0
m = -1
count_e = 0
i=0
while i!=len(f):
if f[i] =='A':
if count_e>=3 and count>m:
m = count
count_e=0
count=0
elif f[i]=='E':
count_e += 1
count += 1
else:
count+=1
i+=1
print(m)
Ответ: 282