ex exxam.ruВсе задания
практикагенератор заданийлексикографический порядокбез регистрации

Тренажёр: перебор слов по условию

Тренажёр придумывает набор букв и условие. Напишите программу, которая печатает подходящие слова, нажмите «Выполнить», затем «Проверить» — вывод сверится с эталоном.

Список слов — это как числа

Слова одной длины из алфавита в m букв идут в том же порядке, что и числа в системе счисления с основанием m. Первое слово списка — это «число» из всех первых букв, а его номер — единица.

Например, буквы А, К и слова длины 2 дают список: АА — 1, АК — 2, КА — 3, КК — 4.

Перебираем все варианты: product

Чтобы решить задачу, нужно перебрать все возможные варианты — все слова заданной длины из алфавита. Удобно сразу сформировать их готовым инструментом из модуля itertools.

Это функция product. Python про неё по умолчанию не знает, поэтому её нужно импортировать: from itertools import product.

Ей передают параметры — набор (alphabet) и сколько раз повторять (repeat=length) — и она сразу строит все возможные комбинации; вложенные циклы писать не нужно. Результат удобно сразу подавать в for: на каждой итерации приходит очередной набор (кортеж букв).

Кортеж склеиваем в слово: w = ''.join(comb); номер слова считаем счётчиком (i = i + 1).

Фильтры из условия

После перебора накладываем условия: номер слова чётный, слово не начинается с некоторых букв, содержит ровно k заданных букв. Подходящие слова печатаем — по одному на строку.

Как отсеивать слова: continue

Внутри цикла проверяем условия-исключения. continue прерывает текущий проход цикла и переходит к следующему слову (это не break — цикл не останавливается). Неподходящее слово пропускается, до print(w) доходят только подходящие. Поэтому проверку пишут «наоборот»: if w.count('О') != 1: continue означает «если буква О встречается не ровно один раз — пропустить это слово».

Как пользоваться этим режимом. Прочитайте алфавит, длину слова и условия, напишите программу, нажмите «Выполнить», затем «Проверить». Если не получается — откройте решение и вставьте готовый код.

Загрузка практикума…

Частые вопросы

Что тренирует этот тренажёр?
Перебор слов в лексикографическом порядке с фильтрами: программа должна напечатать подходящие слова. Это ровно те шаги, из которых состоит задание 8.
Почему номер слова совпадает с числом?
Слова одной длины перебираются как числа в системе счисления с основанием, равным числу букв. Значение слова плюс один даёт его номер в списке.
Как проверяется ответ?
Тренажёр сравнивает вывод вашей программы с эталоном построчно. Если строки совпали по порядку и содержанию — ответ верный. Подходящих слов не больше 20, чтобы их было удобно просмотреть.

Разбор задания 8Все задания