Информатика, вопрос задал Chamelion1337 , 2 года назад

Доброго времени суток, возникла проблема - не знаю то, как грамотно задать условие к этой задаче : "Текстовый файл состоит не более чем из 10^6 символов X, Y и Z. Определите максимальную длину цепочки вида XYZXYZXYZ... (составленной из фрагментов XYZ, последний фрагмент может быть неполным).
."

Ответы на вопрос

Ответил uzurunamaru
2

s = open("") #твой текстовый файл

f = s.readline()

k = 0

kmax = 0

for i in range (0,len(f)-1):

   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

   else:

       kmax = max(k,kmax)

       k = 0

kmax = max(k,kmax)

print(kmax)


Chamelion1337: Если не затруднит, то возможно объяснить этот момент: "if ((f[i]=='X') and (k % 3==0)) or ((f[i]=='Y') and (k % 3==1)) or ((f[i]=='Z') and (k % 3==2)):" ?
uzurunamaru: изначально k=0 и при делении на 3 остаток получается равным нулю. последовательность должна начинаться с X. если идет X и k=0(или числу, которое делится на 3 без остатка), то к k прибавляется 1. проверка идет по новой, но k =1. если (1%3==1) и при этом буква равна Y, то k+=1. если допустим дальше идет снова X,то: k=2(k%3==2), но буква у нас X и получается что программа идет в else, где фиксируется kmax и обнуляется k. (возможно плохо объяснил, если что могу попробовать объяснить по-другому)
Новые вопросы