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

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

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

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

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

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

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