Статья Автор: Деникина Н.В., Деникин А.В.

Задание 8: посчитать, не выписывая

«Слово» здесь — просто цепочка букв. Осмысленная или нет, неважно. Дают набор букв и длину, спрашивают: сколько разных цепочек получится.

Выписывать их никто не станет — счёт идёт на сотни и тысячи. Значит, нужно правило, которое даёт ответ сразу. Оно одно, и оно закрывает почти всё задание 8.


Правило произведения

Смотри на слово как на пустые клетки. Для каждой клетки считаешь, сколько букв туда можно поставить. Потом всё перемножаешь.

Слова длины 4 из букв слова КОНУС (5 букв)51-я×52-я×53-я×54-я5 × 5 × 5 × 5 = 625буквы можно повторять — на каждом месте доступны все 5

Почему умножаем, а не складываем? Потому что каждый выбор на 2-й клетке делается для каждого варианта 1-й. Клетки размножают друг друга, а не суммируются.


Клетки бывают разными

Часто места устроены по-своему: тут буквы, там цифры. Правило не меняется — просто у клеток разные числа.

Пароль: 2 буквы (из 5) + 3 цифры5буква×5буква×10цифра×10цифра×10цифра5 × 5 × 10 × 10 × 10 = 25000считаем каждую клетку отдельно, потом перемножаем

Программное решение

Формулу мы получили рассуждением: три клетки, на каждой три буквы, значит 3 × 3 × 3 = 27. Но рассуждение можно и испортить — например, забыть, что буквы повторяются, и посчитать 3 × 2 × 1.

Напишем программу, которая выписывает все слова длины 3, состоящие из букв К, О, Т и честно их пересчитывает.

Для перебора будем использовать функцию product().

product("КОТ", repeat=3) — это готовый перебор всех цепочек: он берёт 1-ю букву, для неё перебирает все варианты 2-й, для каждой пары — все варианты 3-й. Буквально правило произведения, только выполненное машиной. Цикл проходит по цепочкам, счётчик kol растёт на единицу за каждую.

Почему это эффективно: руками все слова выписывать долго и легко сбиться, а компьютер сделает это мгновенно и в счёте не ошибётся. Проверять формулу на маленьком примере — самый дешёвый способ поймать ошибку до того, как применишь ту же формулу к 625 словам, которые уже не выпишешь.



Результат работы программы
27

Ровно столько же, сколько дала формула 3 × 3 × 3. 


Проверь себя


Посчитайте: сколько слов длины 5 можно составить из букв слова МОСТ? Буквы могут повторяться. Введите число.


Код состоит из 2 букв (используются буквы слова ЛУНА) и 3 десятичных цифр. Сколько различных кодов? Введите число.


Сколько существует пятизначных чисел в системе счисления с основанием 5? Напомним: запись числа не может начинаться с нуля.

Печать