Пашка составляет 5-буквенные слова из букв П, А, Р, Е, К. Каждую букву нужно использовать ровно 1 раз, при этом нельзя ставить подряд две гласные или две согласные. Сколько различных кодов может составить Пашка?
Решение руками
В предложенном алфавите согласных букв больше чем гласных, при этом они должны чередоваться между собой. Значит, слово не может начинаться с гласной. Получаем, что набор букв должен выглядеть как «СГСГС», где С — согласная, а Г — гласная.
Так как каждая буква должна появляться в слове только 1 раз, получаем число возможных вариантов:
Решение через циклы
s1 = ’ПРК’
s2 = ’АЕ’
cnt = 0
# слово, удовлетворяющее условие может выглядеть только следующим образом: СГСГС, где С - согласная буква, а Г - гласная буква.
for i in s1:
for j in s2:
for k in s1:
for l in s2:
for m in s1:
t = [i, j, k, l, m]
tmp = set(t)
if len(tmp) == 5:
cnt += 1
print(cnt)
Решение через itertools
from itertools import permutations
count = set()
gl = ’АЕ’
for x in permutations(’ПАРЕК’):
s = ’’.join(x)
# проверка, что в слове нет подряд идуших гласных или согласных букв
if all((s[i] in gl) != (s[i+1] in gl) for i in range(len(s)-1)):
count.add(s)
print(len(count))