8.02 Подсчет количества слов/чисел
Ошибка.
Попробуйте повторить позже
БУ составляет 5-буквенные слова из букв Т, А, Р, У, Х. Каждую букву нужно использовать ровно 1 раз, при этом нельзя ставить подряд две гласные или две согласные. Сколько различных кодов может составить БУ?
Решение руками
У нас в распоряжении 2 гласные и 3 согласные буквы. Чтобы соблюсти условия, нам надо расставить гласные и согласные в таком порядке:
ГСГСГ либо СГСГС
Так как согласных букв у нас больше, то нам подхожит только второй вариант Значит, кол-во возможных кодов будет составлять:
Решение через циклы:
Для решения задачи через циклы мы будем формировать все 5-буквенные слова из букв Т, А, Р, У, Х, используя каждую букву ровно один раз, и проверять условие, что две гласные или две согласные не стоят подряд. Алгоритм реализуется следующим образом:
Сначала создаём строки sogl = ’ТРХ’ и gl = ’АУ’, которые содержат согласные и гласные буквы соответственно. Создаём пустое множество count = set() для хранения уникальных слов, удовлетворяющих условиям.
Поскольку слово должно чередовать согласные и гласные и состоять из 5 букв, возможная структура слова — СГСГС, где С — согласная, а Г — гласная. Для перебора всех вариантов используем 5 вложенных циклов:
1. for x1 in sogl — выбираем первую букву (согласная).
2. for x2 in gl — выбираем вторую букву (гласная).
3. for x3 in sogl — выбираем третью букву (согласная).
4. for x4 in gl — выбираем четвёртую букву (гласная).
5. for x5 in sogl — выбираем пятую букву (согласная).
Внутри циклов формируем слово s = x1+x2+x3+x4+x5. Затем проверяем, что все буквы различны: len(set(s)) == len(s). Если условие выполняется, добавляем слово в множество count.
После завершения перебора выводим len(count) — количество допустимых слов.
# Согласные буквы sogl = ’ТРХ’ # Гласные буквы gl = ’АУ’ # Множество для хранения всех уникальных слов count = set() # Перебор всех слов по шаблону СГСГС for x1 in sogl: # первая буква (согласная) for x2 in gl: # вторая буква (гласная) for x3 in sogl: # третья буква (согласная) for x4 in gl: # четвёртая буква (гласная) for x5 in sogl: # пятая буква (согласная) # Формируем слово s = x1+x2+x3+x4+x5 # Проверяем, что все буквы уникальны if len(set(s)) == len(s): # Добавляем слово в множество count.add(s) # Выводим количество допустимых слов print(len(count))
Решение через itertools:
Для решения задачи с помощью модуля itertools используем функцию permutations, которая генерирует все возможные перестановки букв без повторений, что автоматически обеспечивает использование каждой буквы ровно один раз.
1. Импортируем функцию permutations из модуля itertools.
2. Создаём пустое множество count = set() для хранения слов, удовлетворяющих условиям.
3. Задаём строку гласных gl = ’АУ’ для проверки соседних букв.
4. Перебираем все перестановки букв ’ТАРУХ’ длиной 5 и преобразуем каждую в строку s = ’’.join(x).
5. Проверяем условие, что нет подряд стоящих двух гласных или двух согласных: all((s[i] in gl) != (s[i+1] in gl) for i in range(len(s)-1)). Если оно выполняется, добавляем слово в множество count.
6. После перебора выводим размер множества len(count) — количество допустимых слов.
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))
Специальные программы

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

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

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

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

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

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