Задача Python. Помогите
Сколько 3-буквенных слов можно составить перестановкой букв слова «НАГЛЕЖ»? При условии, что слов с двумя подряд гласными нужно избегать.
Примечание. Подходящие слова — это все возможные последовательности, вне зависимости от того, имеет или нет данный набор букв смысловое содержание. Я написал свое решение, но это условие только для 3-буквенных слов. Может есть какое-то универсальное решение?
cnt =0
for i in permutations("НАГЛЕЖ", r=3):
if (i.count("А") == 1 and i.count("Е") == 0) or (i.count("Е") == 1 and i.count("А") == 0):
cnt +=1
print(cnt)
Ответы (1 шт):
Автор решения: Алексей Р
→ Ссылка
from itertools import permutations
vowels = set('АОУЫЭЕЁИЮЯ')
word, length = 'наглеж', 3
for comb in permutations(word.upper(), length):
for x in zip(comb, comb[1:]):
if len(vowels.intersection(x)) == 2: # если обе буквы - гласные
break
else: # если цикл пройден до конца, без break,
print(''.join(comb)) # то печатаем комбинацию
НАГ
НАЛ
НАЖ
НГА
НГЛ
НГЕ
НГЖ
НЛА
НЛГ
...