Текстовый файл содержит строки различной длины. Общий объём файла не превышает 1 Мбайт. Строки содержат только заглавные буквы латинского алфавита (ABC…Z).
В строках, содержащих
Пример. Исходный файл:
GIGA
GABLAB
NOTEBOOK
AGAAA
В этом примере во всех строках
Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.
Будем последовательно считывать строки из файла. В каждой считанной строке будем считать количество
Приведём решение данной задачи на языке PascalABC.
var
i, count, max, submax: integer;
j: char;
s: string;
c: array['A'..'Z'] of integer;
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] = 'G' 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.
В результате работы данного алгоритма при вводе данных из файла в условии получаем ответ — 1001.
Приведём решение Тимура Дидигова (Калининград) на языке Python.
f = open('24.txt')
a = [x for x in f.readlines()]
max_s = 0
for i in range(len(a)):
if a[i].count('G') < 25:
for j in range(len(a[i])-1):
for q in range(j+1, len(a[i])):
if a[i][j] == a[i][q]:
if abs(j - q) > max_s:
max_s = abs(j - q)
print(max_s)
Ответ: 1001.
Примечание. Путь к файлу необходимо указать согласно расположению файла на Вашем компьютере.
Приведём решение Марка Свеженцева (Новосибирск) на языке Python.
with open('24.txt') as f:
s = f.readlines()
maxi = 0
for i in range(len(s)):
if s[i].count('G') < 25:
for j in s[i]:
if s[i].rfind(j) - s[i].find(j):
maxi = max(maxi, s[i].rfind(j) - s[i].find(j))
print(maxi)
Приведём решение Виталия Белоусова на языке Python.
with open('inf_26_04_21_24.txt', encoding='utf-8') as txt_file:
indent = 0
for line in txt_file:
if line.count('G') < 25:
my_set = set(line)
for char in my_set:
start = line.find(char) + 1
end = line.rfind(char) + 1
if indent < end - start:
indent = end - start
print(indent)
Приведём решение Юрия Красильникова на языке Python.
def mras(s):
return max([s.rfind(c)-s.find(c) for c in set(s)])
a = [s for s in open('inf_26_04_21_24.txt') if s.count('G') < 25]
print(max([mras(s) for s in a]))
Приведём решение Бориса Савельева на языке Python.
f = open('inf_26_04_21_24.txt').readlines()
maxi=0
for i in range (0,len(f)):
if f[i].count('G')<25:
for j in range (0,len(f[i])):
maxi=max(f[i].rindex(f[i][j])-j,maxi)
print(maxi)

