Сколько 8-буквенных слов может составить Петя из букв П, Е, Т, Я, если буква П должна использоваться менее трёх раз и при этом должна стоять рядом с Е и не может быть на последней позиции? Каждая буква может использоваться несколько раз или не использоваться совсем.
Решение программой (циклы):
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:
for x7 in alf:
for x8 in alf:
w = x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8
if w.count(’П’) < 3 and w[-1] != ’П’:
f = 1 # Переменная-флаг
# Добавляем буферный символ в начало, чтобы w1[i - 1] отрабатывало корректно
# для первого символа
w1 = ’_’ + w
for i in range(1, len(w1) - 1):
if w1[i] == ’П’ and w1[i - 1] != ’Е’ and w1[i + 1] != ’Е’:
f = 0
break
# Только если флаг остался 1
if f:
ans.add(w)
print(len(ans))
Решение программой (itertools):
from itertools import product
ans = set()
alf = ’ПЕТЯ’
for w in product(alf, repeat=8):
w = ’’.join(w)
if w.count(’П’) < 3 and w[-1] != ’П’:
f = 1 # Переменная-флаг
# Добавляем буферный символ в начало, чтобы w1[i - 1] отрабатывало корректно
# для первого символа
w1 = ’_’ + w
for i in range(1, len(w1) - 1):
if w1[i] == ’П’ and w1[i - 1] != ’Е’ and w1[i + 1] != ’Е’:
f = 0
break
# Только если флаг остался 1
if f:
ans.add(w)
print(len(ans))