К содержанию

Задание 8 · Измерение количества информации

Практика и итог

Вся тема на одной странице: как решилась задача темы, главное из подтем, порядок решения и частые ошибки.

Одна задача — вся тема

Задача темы — слова из Т, О, Р, К, А с нечётными номерами, ровно двумя О не подряд и не на А, — прошла через подтемы, и каждая добавляла к программе новое условие. Пролистай версии: точками отмечены строки, которых не было в предыдущей.

  1. Подтема 1, «Слова и перебор»: все слова — product. Точками отмечены новые строки.
  2. Подтема 2, «Сколько раз буква»: ровно две О, не с А.
  3. Подтема 3, «Соседние буквы»: нет двух О подряд.
  4. Подтема 5, «Нумерованный список»: номер слова — enumerate с 1. Ответ задачи темы — 168.

Каждое условие — отдельная проверка, и каждую можно сверить с рассуждением: 544 и 336 в подтемах 2 и 3 получены и умножением. Подтема 4 переносит те же приёмы на записи чисел, а дополнительный урок — на слова, которые перебором не перебрать.

Карта темы

Каждая подтема дала несколько приёмов, и любое решение собирается из них. Сверху — путь от условия к ответу, ниже — по блоку на подтему. Заголовок блока ведёт на подтему.

  1. Словаалфавит, длина, повторы
  2. Условиякаждая фраза — отдельная проверка
  3. Подсчётумножение или перебор product

1Слова и перебор

  • mⁿслов длины n из m букв
  • без повторов5 · 4 · 3…: каждый раз на букву меньше
  • product(…, repeat=n)все слова по очереди

2Сколько раз встречается буква

  • ровно kвыбрать места, остальные — из других букв
  • хотя бы однавсе слова минус слова без неё
  • word.count('О')по одной букве, не фрагментом

3Соседние буквы

  • не рядомрасставить по промежуткам
  • рядомсклеить в один блок
  • 'ОО' not in wordнет двух О подряд

4Числа в системе счисления

  • первая цифране ноль
  • range(q)цифры системы q числами
  • чётность числапри нечётном основании — по сумме цифр

5Нумерованный список

  • номерзначение записи + 1
  • алфавитбуквы по порядку, а не как в условии
  • enumerate(…, start=1)номер отдельно от счётчика

6Когда перебор не успеваетдополнительный урок

  • оценкаmⁿ вариантов до запуска
  • состоянияхранить количества, а не слова
Карта темы: путь к ответу сверху и главное из каждой подтемы. Номер блока — номер подтемы.

Как решать

Любое задание 8 решается одним порядком из пяти шагов. Каждому шагу ты уже учился — под ним номера подтем:

Главный шаг — условия: каждую фразу превращают в отдельную проверку и сверяют с текстом. Если ответ не сошёлся с рассуждением, перечитывают условие, а не правят числа.

Частые ошибки

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

лишняя буква
«ровно две О»: остальные места — из всех пяти букв → остальные — из четырёх, без О. Спроси себя: не появится ли на этих местах третья О?подтема 2
count('АО')
word.count('АО') → word.count('А') + word.count('О'). Спроси себя: я считаю буквы или фрагмент подряд?подтема 2
in и соседство
«А и Б рядом» проверили через наличие обеих → 'АБ' in word or 'БА' in word. Спроси себя: стоят ли буквы подряд и в каком порядке?подтема 3
начальный ноль
посчитали числа с нулём впереди → первая цифра — не ноль. Спроси себя: будет ли это n-значное число?подтема 4
чётность числа
чётность по последней цифре в системе 9 → при нечётном основании — по сумме цифр. Спроси себя: основание чётное или нечётное?подтема 4
алфавит не по порядку
product('ТОРКА', repeat=5) → product('АКОРТ', repeat=5). Спроси себя: буквы стоят по алфавиту?подтема 5
номер с нуля
enumerate(…) → enumerate(…, start=1). Спроси себя: какой номер у первого слова?подтема 5
номер и счётчик
номером считали счётчик подходящих слов → номер растёт на каждом слове списка. Спроси себя: это место в полном списке или число найденных?подтема 5

Итог

Тема пройдена: задача темы решена от перебора всех слов до ответа 168. Вот что взять с собой.

  • ПорядокСлова, условия, подсчёт, номер, проверка.
  • УсловияКаждая фраза — отдельная проверка в программе.
  • РассуждениеМеста и промежутки — сверка с программой.
  • НомерАлфавит по порядку, enumerate с единицы.
  • Задача темы3125 → 544 → 336 → 168 с нечётными номерами.

Проверьте себя

Ответь сначала сам, потом открой ответ.

Вопрос 1

Сколько четырёхбуквенных слов из букв А, Б, В, если буквы могут повторяться? А если не могут?

ОтветСкрыть ответ
Ответ

3⁴ = 81. Без повторов четырёхбуквенных слов из трёх букв нет: на четвёртое место буквы не останется.

Вопрос 2

Сколько пятибуквенных слов из Т, О, Р, К, А содержат хотя бы одну О?

ОтветСкрыть ответ
Ответ

5⁵ − 4⁵ = 3125 − 1024 = 2101: все слова минус слова без О.

Вопрос 3

Слова из А, К, О, Р, Т по алфавиту. Какой номер у слова ААААК?

ОтветСкрыть ответ
Ответ

2: это запись 00001 в пятеричной системе, значение 1, номер на единицу больше.

Вопрос 4

Слова длины 20 из шести букв. Успеет ли перебор product?

ОтветСкрыть ответ
Ответ

Нет: 6²⁰ ≈ 3,7 · 10¹⁵ слов. Нужно считать умножением или хранить количества по состояниям.

Практика

Для проверки ответов нужен JavaScript. Условия, подсказки и решения доступны ниже.

Коды Лены

Лена составляет 6-буквенные коды из букв Ф, И, Л, Ь, М. Каждую букву можно использовать любое количество раз, при этом код не может начинаться с буквы Ь, а буква Ф должна встретиться ровно один раз. Сколько различных кодов может составить Лена?

Введите число.

Чередование чётности, различные цифры

Сколько существует девятеричных пятизначных чисел, все цифры которых различны и никакие две чётные или две нечётные цифры не стоят рядом?

Введите число.

Одна цифра A и не более двух малых

Сколько существует 11-ричных шестизначных чисел, в записи которых ровно одна цифра A и не более двух цифр с числовым значением меньше 3?

Введите число.

Слово под номером 444

Все 5-буквенные слова, составленные из букв Ш, А, Р, Ф, записаны в алфавитном порядке и пронумерованы, начиная с 1. Какое слово стоит под номером 444?

Введите слово заглавными буквами.

Последнее слово с чётным номером

Все 6-буквенные слова, составленные из букв П, О, Л, Е, Т, записаны в алфавитном порядке и пронумерованы, начиная с 1. Под каким номером стоит последнее слово с чётным номером, которое не начинается с буквы О, содержит ровно две буквы Л и не содержит двух букв Е, стоящих рядом?

Введите число.