8.02 Подсчет количества слов/чисел
Ошибка.
Попробуйте повторить позже
Дима составляет 6-буквенные слова из букв В, С, Е, Р, О, Л, И. Каждая из букв может встречаться в слове ровно один раз или не встречаться совсем, причём буква С не может стоять первой и/или последней. Сколько различных слов может составить Дима?
Первой буквой Дима может поставить любую из букв, кроме С, т.е. одну из 6 букв. Последней буквой
Дима может поставить любую из 5 оставшихся букв, т.е. без первой уже использованной и без буквы С.
На второе место в слове Дима может поставить любую из 5 ещё не использованных букв, на
третье — любую из 4 оставшихся букв, на четвёртое — любую из 3 оставшихся, и на пятое —
любую из 2 оставшихся. Всего Дима может составить различных слов.
Решение кодом через циклы:
Для решения задачи с помощью циклов мы перебираем все возможные 6-буквенные комбинации из заданного набора букв. Для этого используем 6 вложенных циклов, по одному на каждую позицию в слове. Каждый цикл последовательно перебирает все буквы алфавита, формируя новые слова.
После формирования слова проверяем условия:
1. Все буквы уникальны. Для этого преобразуем слово в множество с помощью set(w). Множество хранит только уникальные элементы, поэтому если длина множества равна 6, значит все буквы различны.
2. Буква С не стоит на первой или последней позиции. Проверяем, что x1 != ’С’ и x6 != ’С’.
Если слово удовлетворяет этим условиям, добавляем его в множество ans, чтобы автоматически исключить дубликаты.
# создаем пустое множество для хранения уникальных слов ans = set() # набор букв для формирования слов alf = ’ВСЕРОЛИ’ # первая буква for x1 in alf: # вторая буква for x2 in alf: # третья буква for x3 in alf: # четвертая буква for x4 in alf: # пятая буква for x5 in alf: # шестая буква for x6 in alf: # формируем слово w = x1 + x2 + x3 + x4 + x5 + x6 # Проверяем условия: # 1. Все буквы уникальны # 2. Буква С не на первой и последней позиции if len(w) == len(set(w)) and x1 != ’С’ and x6 != ’С’: # добавляем слово во множество ans.add(w) # выводим количество допустимых слов print(len(ans))
Решение кодом через itertools:
Более удобный способ — использовать модуль itertools и функцию permutations. Она генерирует все возможные перестановки заданного набора букв без повторений. Так как буквы должны встречаться ровно один раз, проверка уникальности уже выполняется автоматически.
Далее проверяем только условие: буква С не может быть первой или последней.
# импортируем функцию для генерации перестановок from itertools import permutations # создаем множество для хранения слов ans = set() # исходный набор букв alf = ’ВСЕРОЛИ’ # перебираем все перестановки длиной 6 for x in permutations(alf, 6): # проверяем условие по первой и последней букве if x[0] != ’С’ and x[-1] != ’С’: # добавляем слово во множество ans.add(x) # выводим количество допустимых слов print(len(ans))
Специальные программы

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

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

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

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

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

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