Доброго времени суток, возникла проблема - не знаю то, как грамотно задать условие к этой задаче : "Текстовый файл состоит не более чем из 10^6 символов X, Y и Z. Определите максимальную длину цепочки вида XYZXYZXYZ... (составленной из фрагментов XYZ, последний фрагмент может быть неполным).
."
Ответы
Ответ дал:
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)):" ?
изначально 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. (возможно плохо объяснил, если что могу попробовать объяснить по-другому)
Вас заинтересует
2 года назад
2 года назад
2 года назад
2 года назад
8 лет назад
9 лет назад