Лена составляет 6-буквенные коды. В кодах разрешается использовать только буквы Р,О,Я,Л,Ь, при этом код не может начинаться с гласной буквы и мягкого знака, а также не может содержать двух одинаковых букв подряд. Сколько различных кодов может составить Лена?
На первом месте может стоять только одна из двух букв — Р или Л
На втором месте может стоять одна из четырех букв без буквы Р или Л, так как код не содержит двух одинаковых букв подряд
На третьем месте может стоять одна из четырех букв, то есть все буквы, кроме стоящей на втором месте. На четвертой, пятой и шестой позиции аналогично.
Тогда количество последовательностей считается таким образом:
Решение программой (циклы):
ans = set()
alf = ’РОЯЛЬ’
for x1 in alf:
for x2 in alf:
for x3 in alf:
for x4 in alf:
for x5 in alf:
for x6 in alf:
w = x1 + x2 + x3 + x4 + x5 + x6
if w[0] not in ’ОЯЬ’:
f = 1 # Переменная флаг
for i in range(len(w) - 1):
if w[i] == w[i + 1]:
# Если условие нарушается - флаг становится 0
f = 0
break
# Только если флаг остался единицей
if f:
ans.add(w)
print(len(ans))
Решение программой (itertools):
from itertools import product
ans = set()
alf = ’РОЯЛЬ’
for w in product(alf, repeat=6):
w = ’’.join(w)
if w[0] not in ’ОЯЬ’:
f = 1 # Переменная флаг
for i in range(len(w) - 1):
if w[i] == w[i + 1]:
# Если условие нарушается - флаг становится 0
f = 0
break
# Только если флаг остался единицей
if f:
ans.add(w)
print(len(ans))