8.02 Подсчет количества слов/чисел
Ошибка.
Попробуйте повторить позже
Ростислав составляет 5-буквенные слова перестановкой букв слова МУЖИК. При этом в слове не могут стоять рядом две гласные буквы. Словом считается любая допустимая последовательность букв, не обязательно осмысленная. Сколько слов может составить Ростислав?
Решение руками
1. Общее количество перестановок без ограничений: слов.
2. Возьмем УИ/ИУ как одну букву Y. Тогда набор букв: Y, М, Ж, К и длина слова - 4. Тогда количество слов
равно: . Учтем, что Y означает две буквы:
.
3. Тогда количество подходящих под условие слов: .
Решение через циклы:
Для решения задачи через циклы мы будем поэтапно формировать все 5-буквенные слова из букв слова "МУЖИК"и проверять их на выполнение двух условий: все буквы в слове различны, а также гласные буквы (У, И) не стоят рядом. Алгоритм реализуется следующим образом:
Сначала создаём строку a = ’МУЖИК’, которая содержит все буквы исходного слова. Создаём пустое множество count = set() для хранения уникальных слов, удовлетворяющих условиям.
Далее используем 5 вложенных циклов for, по одному на каждую позицию слова:
1. for x1 in a — выбираем первую букву слова.
2. for x2 in a — выбираем вторую букву слова.
3. for x3 in a — третью букву.
4. for x4 in a — четвёртую букву.
5. for x5 in a — пятую букву.
Внутри циклов формируем строку s = x1+x2+x3+x4+x5, которая представляет текущее слово.
Затем проверяем условия:
- len(set(s)) == len(s) — все буквы различны. Функция set() превращает строку в множество, которое содержит только уникальные элементы. Если длина множества равна длине строки, значит все буквы различны.
- ’УИ’ not in s and ’ИУ’ not in s — гласные буквы не стоят рядом. Проверяем, что в слове нет подстрок "УИ"или "ИУ".
Если слово удовлетворяет условиям, добавляем его в множество count. После завершения перебора всех комбинаций выводим len(count) — количество допустимых слов.
# Создаём строку с буквами исходного слова a = ’МУЖИК’ # Создаём множество для хранения уникальных допустимых слов count = set() # Перебор всех возможных букв на каждой позиции слова for x1 in a: for x2 in a: for x3 in a: for x4 in a: for x5 in a: # Формируем слово из выбранных букв s = x1+x2+x3+x4+x5 # Проверяем условия: # 1. Все буквы различны (len(set(s)) == len(s)) # 2. Гласные буквы ’У’ и ’И’ не стоят рядом if len(set(s)) == len(s) and ’УИ’ not in s and ’ИУ’ not in s: # Добавляем слово в множество, если условия выполнены count.add(s) # Выводим количество допустимых слов print(len(count))
Решение через itertools:
Для упрощения перебора всех перестановок используем модуль itertools и функцию permutations, которая генерирует все возможные перестановки букв без повторений. Поскольку буквы не могут повторяться, проверка на уникальность в этом случае не требуется.
1. Импортируем функцию permutations из модуля itertools.
2. Создаём счётчик count = 0 для подсчёта допустимых слов.
3. Перебираем все перестановки букв слова "МУЖИК".
4. Преобразуем кортеж x в строку s = ’’.join(x).
5. Проверяем, что в слове нет подстрок "УИ"и "ИУ чтобы гласные не стояли рядом.
6. Если условие выполнено, увеличиваем счётчик count.
В конце выводим count — количество допустимых слов.
from itertools import permutations # Импортируем функцию для генерации перестановок # Счётчик допустимых слов count = 0 # Перебираем все возможные перестановки букв исходного слова for x in permutations(’МУЖИК’): # Преобразуем кортеж в строку слова s = ’’.join(x) # Проверяем условие: гласные ’У’ и ’И’ не стоят рядом if (’УИ’ not in s) and (’ИУ’ not in s): # Увеличиваем счётчик, если условие выполнено count += 1 # Выводим количество допустимых слов print(count)
Специальные программы

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

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

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

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

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

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