Решение. Приведём решение на языке Python.
f = open("24.txt").readline()
f = f.replace('X','X ').replace('Y','Y ').split(' ')
maxi = 0
for i in range(len(f)-2):
c = f[i] + f[i+1]+ f[i+2][:-1]
if c.count('X') == 1 and c.count('Y') == 1:
maxi= max(maxi, len(c))
c = f[-3] + f[-2]+ f[-1]
if c.count('X') == 1 and c.count('Y') == 1:
maxi= max(maxi, len(c))
print(maxi)
Ответ: 224.
Приведём решение Георгия Вострикова на языке Python.
f = open('24.txt').readline()
X = [0,0] #первое значение показывает встречалось ли X, второе значение - позиция последнего X
Y = [0,0] #первое значение показывает встречалось ли Y, второе значение - позиция последнего Y
count = 0
maxi = 0
for i in range(len(f)):
if f[i] == 'X':
if X[0] == 0: #если встретили X первый раз
X = [1,i] # выставляем флаг X в состояние 1 и запоминаем позицию А
else: #если встретили X второй раз
if X[1] > Y[1]:#если предыдущее X идёт после предыдущего Y, то предыдущее Y не входит в новую цепочку
Y = [0,0]#«забываем» предыдущее Y
maxi = max(maxi,count) #обновляем максимум
count = i - X[1] - 1 #вычисляем длину начала новой цепочки(с позиции предыдущего X, до текущего X)
X[1] = i#запоминаем позицию нового X
else:#если предыдущее X идёт до предыдущего Y, то предыдущее Y входит в новую цепочку и его значения остаются
maxi = max(maxi,count)
count = i - X[1] - 1
X[1] = i
elif f[i] == 'Y': #всё то же самое что до этого, только для Y
if Y[0] == 0:
Y = [1,i]
else:
if Y[1] > X[1]:
X = [0,0]
maxi = max(maxi,count)
count = i - Y[1] - 1
Y[1] = i
else:
maxi = max(maxi,count)
count = i - Y[1] - 1
Y[1] = i
count += 1 #увеличиваем число символов в цепочке
print(maxi)
Приведём решение Бориса Савельева на языке Python.
f=open('24.txt').readline()
maxi=0
f=f.split('X')
for i in range (0,len(f)-1):
if (f[i].count('Y')==1 and f[i+1].count('Y')==0) or (f[i].count('Y')==0 and f[i+1].count('Y')==1):
maxi=max(len(f[i])+len(f[i+1])+1,maxi)
elif (f[i].count('Y')==1 and f[i+1].count('Y')==1):
maxi=max(len(f[i])+1,maxi)
maxi = max(len(f[i+1]) + 1, maxi)
elif f[i].count('Y')>1 and f[i+1].count('Y')>1:
maxi=max((len(f[i])-f[i].rindex('Y')-1)+1+(len(f[i+1])-f[i].index('Y')-1),maxi)
print(maxi)
Приведём решение Юрия Красильникова на языке Python.
s = open('24.txt').readline()
ndx = [-1]+[i for i in range(len(s)) if s[i] in 'XY']+[len(s)]
print(max([ndx[i+3]-ndx[i]-1 for i in range(len(ndx)-3) if s[ndx[i+1]]!=s[ndx[i+2]]]))