Полина составляет 6-буквенные коды из букв П,О,Л,И,Н,А. Буква Л может использоваться в коде не более одного раза, при этом она не может стоять на первом месте, на последнем месте и рядом с буквой А. Все остальные буквы могут встречаться любое количество раз или не встречается совсем. Сколько различных кодов может составить Полина?
Найдем слова без буквы Л, в таком случае на каждой из шести позиций может стоять любая буква из пятибуквенного набора П,О,И,Н,А слов.
Найдем слова с одной буквой Л; есть четыре варианта расстановки, так как эта буква не может стоять на первом и последнем месте:
* Л * * * *
* * Л * * *
* * * Л * *
* * * * Л *
Так как рядом с Л не может стоять буква А, то слева и справа от Л можно поставить только одну из четырех букв, исключая А, а на другие оставшиеся места — одну из пяти.
4 Л 4 5 5 5
5 4 Л 4 5 5
5 5 4 Л 4 5
5 5 5 4 Л 4
Итого: 15625 + = 23625.
Решение программой (циклы):
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.count(’Л’) <= 1 and w[0] != ’Л’ and w[-1] != ’Л’ and ’ЛА’ not in w and ’АЛ’ not in w:
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.count(’Л’) <= 1 and w[0] != ’Л’ and w[-1] != ’Л’ and ’ЛА’ not in w and ’АЛ’ not in w:
ans.add(w)
print(len(ans))