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

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

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

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

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

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

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