8.02 Подсчет количества слов/чисел
Ошибка.
Попробуйте повторить позже
Артём составляет 5-буквенные слова из букв Л, О, П, У, Х. Каждая буква может встречаться ровно один раз. При этом в слове не могут стоять рядом две гласные буквы, а буква О может только стоять на первом или последнем месте. Словом считается любая допустимая последовательность букв, не обязательно осмысленная. Сколько слов может составить Артём?
Решение аналитически
Найдем все слова, в которых О стоит на 1 месте, за ней может стоять только согласная, на остальных трех позициях
буквы могут стоять в произвольном порядке, так как гласная осталась всего 1 и она точно не будет соседствовать с
другой гласной. Тогда таких слов всего .
В случае когда О стоит на последнем месте, мы просто может развернуть предыдущую комбинацию и получим тоже 18 слов.
Итого, ответ
Решение программой с помощью циклов
Напишем программу для перебора всевозможных 5-буквенных слов из букв Л, О, П, У, Х. Для этого организуем 5 вложенных циклов (по одному на каждую позицию в слове). Каждый цикл перебирает буквы заданной строки, формируя все возможные комбинации.
После составления очередного слова необходимо его проверить на соответствие условиям:
1. Все буквы уникальны → len(set(w)) == 5. set() – это множество, оно хранит только уникальные элементы, поэтому set(w) преобразует слово в множество, удаляя дубликаты. Если длина множества равна 5, значит, все буквы встречаются ровно один раз.
2. Буква О только на первом или последнем месте → будем проверять что буквы О нет на остльных позициях. Используем срез строки и проверим позиции 2, 3 и 4 (индексы 1, 2, 3), исключая крайние, на наличие среди них буквы О.
3. Нет соседних гласных ("О"и "У") → будем проверять что в составленном слове нет сочетаний ОУ или УО.
Если слово проходит все проверки, счетчик допустимых вариантов увеличивается.
s = "ЛОПУХ" # доступные буквы k = 0 # счётчик допустимых слов # Перебор всех возможных 5-буквенных комбинаций for a in s: for b in s: for c in s: for d in s: for e in s: w = a + b + c + d + e # формируем слово # Проверяем условия: # 1. Нет "ОУ" или "УО" (гласные не стоят рядом) # 2. Все буквы уникальны (длина множества = 5) # 3. Буква "О" не в середине (только на 1-й или 5-й позиции) if ("ОУ" not in w and "УО" not in w and len(set(w)) == 5 and "О" not in w[1:4]): # w[1:4] — буквы на позициях 1, 2, 3 k += 1 # если условия выполнены, увеличиваем счётчик print(k) # вывод результата
Решение программой с помощью модуля itertools
Для решения задачи с помощью модуля itertools воспользуемся функцией permutations. Она генерирует все возможные перестановки без повторений из заданного алфавита – лучший вариант для решения задачи, так как по условия каждая буква может встречаться ровно один раз, следовательно нет необходмости делать дополнительную проверку.
Условия «Буква О только на первом или последнем месте» и «две гласные буквы не могут стоять рядом» записываются в программе аналогично решению с помощью циклов.
from itertools import permutations # Импорт функции для генерации перестановок s = "ЛОПУХ" # Исходный набор букв n = 0 # Счётчик допустимых слов # Перебираем все возможные перестановки из 5 букв for x in permutations(s): w = "".join(x) # Преобразуем перестановку в строку # Проверяем условия: # 1. Нет "ОУ" или "УО" (гласные не стоят рядом) # 2. Буква "О" не в середине (только на 1-й или 5-й позиции) if not("ОУ" in w) and not("УО" in w) and not("О" in w[1:4]): n += 1 # Увеличиваем счётчик, если условия выполнены print(n) # Выводим количество допустимых слов
Специальные программы

Программа
лояльности v2.0
Приглашай друзей в Школково и получай вознаграждение до 10%!

Крути рулетку
и выигрывай призы!
Крути рулетку и покупай курсы со скидкой, которая привязывается к вашему аккаунту.

Бесплатное онлайн-обучение
Для школьников из приграничных территорий России, проживающих в ДНР, ЛНР, Херсонской, Запорожской, Белгородской, Курской, Брянской областях и Крыму.

Налоговые вычеты
Узнай, как получить налоговый вычет при оплате обучения в «Школково».

Специальное предложение
для учителей
Бесплатный доступ к любому курсу подготовки к ЕГЭ, ОГЭ и олимпиадам от «Школково». Мы с вами делаем общее и важное дело, а потому для нас очень значимо быть чем-то полезными для учителей по всей России!

Вернём деньги за курс
за твою сотку на ЕГЭ
Сдать экзамен на сотку и получить обратно деньги за подготовку теперь вполне реально!