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