Марина составляет 6-буквенные коды из букв П, Р, И, К, А, З. Каждую букву нужно использовать ровно один раз, при этом нельзя ставить рядом две гласные. Сколько различных кодов может составить Марина?
Всего можно составить таких слов , так как на 6 мест у нас есть 6 букв для расстановки.
Из них нужно вычесть те варианты, при которых две гласные стоят рядом. Вариантов поставить две гласные рядом всего два: ИА и АИ, комбинацию из двух букв можно разместить в 5-и местах, останется ещё 4 места и 4 буквы, значит количество вариантов расставить их будет равно .
Итоговая формула будет выглядеть вот так:
Решение через циклы
a = ’ПРИКАЗ’ # Наше слово
c = 0 # Итоговый счётчик
# Переборы для букв слова
for i in a:
for j in a:
for n in a:
for k in a:
for m in a:
for l in a:
s = i + j + n + k + m + l # формируем слово
if (s.count(’П’) == 1) and (s.count(’Р’) == 1) and (s.count(’И’) == 1) and (s.count(’К’) == 1) and (s.count(’А’) == 1) and (s.count(’З’) == 1) and
(not ’ИИ’ in s) and (not ’АИ’ in s) and (not ’ИА’ in s) and (not ’АА’ in s): # проверка, что каждая буква встречается единожды и что гласные не стоят рядом
c += 1
print(c) # вывод ответа
Решение через itertools
from itertools import permutations # импортируем permutations из модуля itertools. permutations - перестановки
count = 0 # итоговый счётчик
for x in permutations(’ПРИКАЗ’): # проход по всевозможным перестановкам букв слова ПРИКАЗ
s = ’’.join(x) # формируем слово
if ’ИА’ not in s and ’АИ’ not in s: # проверка по условию
count += 1
print(count) # вывод ответа