Текстовый файл содержит строки различной длины. Общий объём файла не превышает 1 Мбайт. Строки содержат только заглавные буквы латинского алфавита (ABC…Z).
В строках, содержащих
Пример. Исходный файл:
GIGA
GABLAB
NOTEBOOK
AGAAA
В этом примере во всех строках меньше 25 букв A. Самое большое расстояние между одинаковыми буквами — в третьей строке между
Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.
Будем последовательно считывать строки из файла. В каждой считанной строке будем считать количество
Приведём решение данной задачи на языке PascalABC.
var
i, count, max, submax: integer;
j: char;
s: string;
f: text;
begin
assign(f,'C:\inf_26_04_21_24.txt');
reset(f);
s := '';
max := 0;
while not eof(f) do begin
count := 0;
readln(f, s);
for i := 1 to s.Length do begin
if s[i] = 'A' then count := count + 1;
end;
if count < 25 then
for j := 'A' to 'Z' do begin
submax := s.LastIndexOf(j) - s.IndexOf(j);
if submax > max then max := submax;
end;
end;
writeln(max);
end.
В результате работы данного алгоритма при вводе данных из файла в условии получаем ответ — 1004.
Ответ: 1004.
Примечание. Путь к файлу необходимо указать согласно расположению файла на Вашем компьютере.
Приведём другое решение на языке Python.
with open("inf_26_04_21_24.txt") as f:
p = f.readlines()
maxx = 0
a = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"]
for j in p:
for i in a:
if j.rfind(i) - j.find(i) > maxx and j.count("A") < 25:
maxx = j.rfind(i) - j.find(i)
print(maxx)
Приведём другое решение на языке Python.
f=open('inf_26_04_21_24.txt')
rr=0
for x in f:
s=f.readline()
m=[]
r=0
ss=int(len(s))
for x in range (ss+1):
for y in range(ss-1,x,-1):
if s[x]==s[y] and s.count('A')<25:
r=max(r,y-x)
break
rr=max(rr,r)
print(rr)
Приведём другое решение Карпенко Татьяны на языке Python.
lines = open('inf_26_04_21_24.txt').readlines()
max_distance = 0
for line in lines:
if line.count('A') < 25:
for s in 'ABCDEFGHIJKLMNOPQRSTUVWXYZ':
max_distance = max(line.rindex(s) - line.index(s), max_distance)
print(max_distance)
Приведём другое решение Петрова Влада на языке Python.
f=open('inf_26_04_21_24.txt').readlines()
mx = 0
for a in f:
if a.count('A') < 25:
m =0
for i in range(len(a)):
if a.count(a[i]) > 1:
r = a.rfind(a[i]) -a.find(a[i])
m = max(m,r)
mx = max(mx,m)
print(mx)
Приведём другое решение Егора Ершова на языке Python.
print(max([max([line.rfind(c) - line.find(c) for c in set(line)]) for line in open('inf_26_04_21_24.txt', 'r') if line.count('A') < 25]))

