Текстовый файл состоит не более чем из
Для выполнения этого задания следует написать программу. Ниже приведён файл, который необходимо обработать с помощью данного алгоритма.
Приведём решение Чуркина Николая (Тимашевск) на языке Python.
f = open('24.txt').readline()
k = m = 0
for i in range(len(f)):
if (f[i] == 'X' and k%3 == 0) or (f[i] == 'Y' and k%3 == 1) or (f[i] == 'Z' and k%3 == 2):
k += 1
m = max(m, k)
elif f[i] == 'X': k = 1
else: k = 0
print(m)
В результате работы данного алгоритма при вводе данных из файла в условии получаем ответ — 13.
Ответ: 13.
Приведём решение Новикова Андрея на языке Python.
import re
f = open('24_demo.txt').read()
r = re.findall(r'(?:XYZ)+(?:XY|X)?', f)
r = map(lambda x: len(x), r)
print(max(r))
Приведём решение Фефелова Сергея на языке Python.
f = open('24.txt').readline()
k = mx = 0
for i in range(len(f)):
if f[i-1:i+1] in 'XYZX' and k:
k += 1
elif f[i] == 'X':
k = 1
else:
k = 0
mx = max(mx, k)
print(mx)
Приведём решение Пученко Дениса на языке Python.
f=open('24.txt').readline()
k = 1
while ('XYZ' * k) in f:
k = k + 1
R = 'XYZ'*(k - 1)
if (R + 'X') in f:
if (R + 'XY') in f: print(len(R + 'XY'))
else: print(len(R + 'X'))
else: print(len(R))
Приведём решение Юрия Лысакова на языке Python.
f = open("24_demo.txt")
s = f.read()
s1 = 'XYZ'
a = s.split(s1)
while len(a) > 1:
s2 = s1
s1 += 'XYZ'
a = s.split(s1)
if s2 + 'X' in s:
s2 += 'X'
if s2 + 'Y' in s:
s2 += 'Y'
print(len(s2))
Приведём решение Дмитрия Бурнина на языке Python.
from re import *
s = open('24_demo.txt').readline()
reg = r'(?=((XYZ)+((XY)*|X*)*))'
print(max(([len(x.group(1)) for x in finditer(reg,s)])))
Приведём решение Романа Шатило на языке Python.
s = open('24_demo.txt').readline()
s = s.replace('XYZ','***')
s = s.replace('*X','*+').replace('+Y','*+')
s = s.replace('+','+ ')
s = s.replace('X',' ').replace('Y',' ').replace('Z',' ')
print(max(len(x) for x in s.split()))
Приведём другое решение данной задачи на языке Pascal.
Для решения данной задачи будем посимвольно считывать текстовый файл. Объявим переменные: s — строка для работы с символами из файла, maxCount — максимальная длина последовательности, count — временное хранение длины последовательности, i — переменная для перебора всех символов. Алгоритм будет сравнивать значения на трех позициях, если символы будут удовлетворять нужным условиям, то значение счетчика будет увеличиваться
Приведём решение данной задачи на языке Pascal.
begin
var s: string;
var i, count, maxCount: integer;
assign(input, '24.txt');
readln(s);
count:=0;
maxCount:=0;
for i:=1 to Length(s) do
if ((s[i]='X') and (count mod 3=0)) or
((s[i]='Y') and (count mod 3=1)) or
((s[i]='Z') and (count mod 3=2)) then begin
count := count+1;
if count > maxCount then
maxCount := count;
end
else if s[i]='X' then count:=1
else count := 0;
writeln(maxCount);
end.

