Python

Где ошибка в коде питон Может перенос не так сделал.. именно в условиях код засивает

z=0
for x1 in "CONST":
for x2 in "CONST":
for x3 in "CONST":
for x4 in "CONST":
for x5 in "CONST":
for x6 in "CONST":
for x7 in "CONST":
for x8 in "CONST":
for x9 in "CONST":
for x10 in "CONST":
for x11 in "CONST":
for x12 in "CONST":
for x13 in "CONST":
for x14 in "CONST":
for x15 in "CONST":
for x16 in "CONST":
s=x1+x2+x3+x4+x5+x6+x7+x8+x9+x10+x11+x12+x13+x14+x15+x16
if s.count("CC")==0 and s.count("OO")==0 and \
s.count("NN")==0 and s.count("SS")==0 and \
s.count("TT")==0 and x1!='S' and x16!='S' and \
s.count("CSC")==0 and s.count("NSN")==0 and \
s.count("OSO")==0 and s.count("SSS")==0 and \
s.count("TST")==0:
print(z)
z+=1
print(z)
 t = [[0, 0], [4, 0]]
for i in range(15): t.append([t[-1][0] * 3 + t[-1][1] * 4, t[-1][0]])
print(t[16][0])
Банальное динамическое программирование.
t[k][0] - сколько слов длины k НЕ заканчиваются на S.
t[k][1] - сколько слов длины k заканчиваются на S.
После S может идти любая из 4 других букв.
После НЕ S может идти либо S, либо одна из 3 букв, не совпадающих с текущей или S.
t[0] добавлен для того, чтобы индекс совпадал с длиной строки.

Но учитывая, что t[-1][1] == t[-2][0], код можно ещё упростить:
 t = [0, 4]
for i in range(15): t.append(t[-1] * 3 + t[-2] * 4)
print(t[16])
Артем Владимиров
Артем Владимиров
96 628
Лучший ответ
В данном коде не хватает дополнительной отступа перед вложенным циклом for x1 in "CONST":. Кроме того, последние две строки print(z) и z+=1 также нужно отступить внутрь цикла if. Вот исправленный вариант:
z=0
for x1 in "CONST":
for x2 in "CONST":
for x3 in "CONST":
for x4 in "CONST":
for x5 in "CONST":
for x6 in "CONST":
for x7 in "CONST":
for x8 in "CONST":
for x9 in "CONST":
for x10 in "CONST":
for x11 in "CONST":
for x12 in "CONST":
for x13 in "CONST":
for x14 in "CONST":
for x15 in "CONST":
for x16 in "CONST":
s=x1+x2+x3+x4+x5+x6+x7+x8+x9+x10+x11+x12+x13+x14+x15+x16
if s.count("CC")==0 and s.count("OO")==0 and \
s.count("NN")==0 and s.count("SS")==0 and \
s.count("TT")==0 and x1!='S' and x16!='S' and \
s.count("CSC")==0 and s.count("NSN")==0 and \
s.count("OSO")==0 and s.count("SSS")==0 and \
s.count("TST")==0:
print(z)
z+=1
print(z)
Ильдар Зямилев Отступ же есть. И z+=1 в цикле тк только при положительной фильтре For +1 сделает, разве нет?
Максим Темников Извините, но я без силин! Однако лучший вариант для вас это StackOverFlow