Условие
Решение
Для начала разберемся с сочетанием букв ПИЛАЕВЛА. Фрагмент состоит из восьми букв и находится в начале каждого странного слова. Также в нем по четыре гласных и согласных букв. Следовательно свободных позиций для букв осталось десять.
Пример странного слова:
П И Л А Е В Л А _ _ _ _ _ _ _ _ _ _
Так как согласных и гласных букв должно быть одинаково, то в пропусках должно быть по пять согласных и гласных букв. Суммарно в каждом слове будет по девять и тех и других. В перечне доступных букв пять согласных: В, Л, М, П и Й; и три гласных буквы: Е, А и И.
Нам необходимо рассмотреть все варианты комбинаций данных букв между собой. Одна из возможных комбинаций:
5 5 5 5 5 3 3 3 3 3
Числа 5 и 3 показывают какое количество различных букв может быть на каждой позиции. В конкретном примере все согласные буквы стоят в начале, а гласные в конце. Чтобы узнать сколько слов можно получить при таких данных, необходимо перемножить между собой все числовые значения:
5 ∙ 5 ∙ 5 ∙ 5 ∙ 5 ∙ 3 ∙ 3 ∙ 3 ∙ 3 ∙ 3 = 759375
Остается выяснить, сколько таких комбинаций может быть. Для этого напишем небольшую программу.
Подключим функцию permutations() из библиотеки itertools.
#начало фрагмента
from itertools import permutations
#конец фрагмента
Объявим множество sp — в нем будем хранить уникальные комбинации.
#начало фрагмента
sp = set()
#конец фрагмента
Так как permutations() произведет все возможные перестановки исходной комбинации, то будут появляться повторения, например замена двух позиций с согласными буквами не приведет к появлению новых слов, а повторит уже имеющиеся.
Напишем цикл для перестановок, и каждую внесем в множество.
#начало фрагмента
for i in permutations('5555533333'):
sp.add(i)
#конец фрагмента
Выведем длину полученного множества на экран.
#начало фрагмента
print(len(sp))
#конец фрагмента
Узнаем сколько странных слов существует:
759375 ∙ 252 = 191362500
Или выведем на экран сразу ответ.
#начало фрагмента
print(len(sp) * 5**5 * 3**5)
#конец фрагмента
Листинг программы
from itertools import permutations
sp = set()
for i in permutations('5555533333'):
sp.add(i)
#print(len(sp))
print(len(sp) * 5**5 * 3**5)