Задание №8 ЕГЭ по информатике: разбор, шаблоны кода Python и анти-примеры | СмартКИМ
СмартКИМ УДОБНАЯ ПОДГОТОВКА К ЕГЭ И ОГЭ
Задачи №8 Решать в тренажере Войти в СмартКИМ
ЕГЭ (1–27) ОГЭ (1–15) Python: шпаргалка
Быстрый переход по номерам и темам
Базовый (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`.
Банк реальных задач №8 Открыть в тренажере СмартКИМ