Базовый (1 балл)
Время: 2-4 мин
Python
itertools.product
itertools.permutations
Все задачи №{ topic_num } в каталоге
Задание №8. Комбинаторика, перестановки и слова по порядку
Тема: Модуль itertools (product, permutations), правила подсчета слов и алфавитные списки
Подсчёт количества допустимых слов или определение номера слова в алфавитном списке с ограничениями на повторы и соседние буквы. Решается за 10 строк на Python.
1. Инструменты itertools для Задания №8:
product(sorted('АВГОР'), repeat=5)— слова с повторением букв. Обязательно сортируйте алфавит для алфавитного списка!permutations('ДРАКОН')— перестановки букв без повторений.enumerate(..., start=1)— нумерация с 1.
Разновидности и прототипы задания на экзамене
Тип 1: Номер слова в алфавитном списке
Слова генерируются через `product(sorted(alphabet), repeat=N)` с `enumerate(..., 1)`.
Тип 2: Количество слов с ограничениями на буквы
Гласные/согласные не стоят рядом или буква встречается не более N раз.
Тип 3: Анаграммы (перестановки permutations)
Перестановка букв слова без повторений.
Боевой шаблон решения на Python
Запустить код в онлайн-песочнице# === Боевой шаблон Задания №8 на Python ===
from itertools import product, permutations
# 1. Порядковый номер слова в списке:
alphabet = sorted("МАТВЕЙ") # Обязательно сортируем!
ans_idx = 0
for idx, p in enumerate(product(alphabet, repeat=6), start=1):
w = "".join(p)
# Пример: начинается на согласную и содержит ровно одну букву 'А'
if w[0] not in "АЕ" and w.count('А') == 1:
ans_idx = idx
print("Номер слова:", ans_idx)
# 2. Количество слов без двух гласных подряд:
valid_words = 0
for p in product("КОМПЬЮТЕР", repeat=5):
w = "".join(p)
# Заменяем все гласные на '0':
clean_w = w
for v in "ОУЕ": clean_w = clean_w.replace(v, '0')
if '00' not in clean_w:
valid_words += 1
print("Количество подходящих слов:", valid_words)
Анти-примеры (Типичные ошибки vs Как делать правильно)
Как делать НЕ надо:
Ошибка: Забыть отсортировать алфавит перед product
product('БАВ', repeat=3) сгенерирует слова не в алфавитном порядке!
Как делать ПРАВИЛЬНО:
Правильно: Всегда передавать sorted(alphabet)!
ГРОБ
ГРОБ №8: Повторяющиеся буквы в слове для permutations
В слове 'ТАТЬЯНА' буквы повторяются. `permutations` выдаст дубликаты.
Как обойти ловушку: Обязательно заворачивайте в `set()`: `words = set(''.join(p) for p in permutations('ТАТЬЯНА'))`.
Лайфхаки и подводные камни на экзамене:
- Для проверки 'не стоят рядом' заменяйте все гласные на символ 'Г', согласные на 'С' через `.replace()` и проверяйте `'ГГ' not in s and 'СС' not in s`.