К содержанию

Задания 19–21 · Выигрышная стратегия

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

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

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

Задача темы — игра с двумя кучами, ходы «+3» и «×2» до 100 и три вопроса 19–21 — прошла через подтемы, и каждая добавляла к решению новый шаг. Пролистай черновик: точками отмечены строки, которых не было после предыдущей подтемы.

  1. Подтема 1, «Игра и вопросы 19–21»: возможность или гарантия. Точками отмечены новые строки.
  2. Подтема 2, «Позиции от конца»: группы от конца игры.
  3. Подтема 3, «Программа»: any — свой ход, all — соперника.
  4. Подтема 4, «Две кучи»: позиция — пара куч. Ответы задачи темы: 24; 23 42; 39.

Функция g не меняется от игры к игре — меняются только moves и finished. Подтема 5 переносит её на уменьшение кучи и ходы с условием, а дополнительный урок — на третий ход и позиции шире одного числа.

Карта темы

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

  1. Правилаmoves и finished дословно по условию
  2. ГруппыВ1, П1, В2, П2 от конца игры
  3. Ответперебор S и то, что просят

1Игра и вопросы 19–21

  • свой ходхватает одного удачного
  • ход соперникагодиться должны все его ходы
  • неудачный ход Петивозможность, а не гарантия

2Позиции от конца игры

  • В1есть ход, который кончает игру
  • П1все ходы ведут в В1
  • В2не В1, есть ход в П1 — задание 20
  • П2не П1, все ходы в В1 или В2 — задание 21

3Программа

  • any / allсвой ход / ход соперника
  • @cacheкаждая позиция считается один раз
  • mistakeнеудачный ход Пети — задание 19

4Две кучи

  • (a, b)позиция — пара, а не сумма
  • четыре ходакаждая операция с каждой кучей

5Уменьшение кучи и ходы с условием

  • s // 2округление вниз; вверх — (s + 1) // 2
  • наибольшее Sграница — самый быстрый путь до порога

6Третий ход и позиция шире числадополнительный урок

  • В3, П3ещё один шаг от конца
  • (s, last)позиция помнит последний ход
Карта темы: путь к ответу сверху и главное из каждой подтемы. Номер блока — номер подтемы.

Как решать

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

Главный шаг — прочитать вопрос: возможность это или гарантия, второй ход Пети или второй ход игры. Проверка — маленькая игра «+1 или ×2 до 21»: если ответы на ней не сошлись, ошибка в правилах программы.

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

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

партия вместо стратегии
нашли удачную партию — победа гарантирована → на ходе соперника проверяют все его ходы. Спроси себя: а если соперник ответит иначе?подтема 1
неудачный ход как гарантия
g(s) == -1 → mistake(s). Спроси себя: спрашивают о гарантии или о возможности?подтема 1
второй ход
«Петя выиграл вторым ходом» — два хода игры → второй ход Пети — третий ход игры. Спроси себя: чей это ход по счёту?подтема 2
сравнение в finished
a + b > 100 → a + b >= 100. Спроси себя: «не менее» — это ≥?подтема 3
сумма вместо пары
позиция двух куч — их сумма → позиция — пара (a, b). Спроси себя: одинаковы ли ходы из (7, 10) и (10, 7)?подтема 4
округление
round(s / 2) → s // 2. Спроси себя: вниз или вверх сказано в условии?подтема 5
граница для наибольшего
наибольшее S — перебором до случайного числа → граница — самый быстрый путь до порога. Спроси себя: почему больше S не бывает?подтема 5

Итог

Тема пройдена: задача темы решена от смысла вопросов до ответов 24; 23 42; 39. Вот что взять с собой.

  • ПорядокПравила, вопрос, группы, программа, ответ.
  • ХодыСвой — хватит одного, соперника — все.
  • ГруппыВ2 — задание 20, П2 — задание 21, mistake — 19.
  • ПрограммаМеняются только moves и finished.
  • Задача темы19 — 24, 20 — 23 и 42, 21 — 39.

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

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

Вопрос 1

В позиции все ходы ведут в позиции В1. Кто выигрывает и к какой группе она относится?

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

П1: какой бы ход ни сделал игрок, соперник сразу заканчивает игру.

Вопрос 2

Чем вопрос задания 19 отличается от заданий 20 и 21?

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

В 19 — возможность: Петя ошибся, хватит одной такой партии. В 20 и 21 — гарантия при любой игре соперника.

Вопрос 3

Почему в программе свой ход проверяют через any, а ход соперника — через all?

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

Игроку достаточно одного удачного хода, а против соперника должны сработать все его ответы.

Вопрос 4

Сколько ходов из позиции (7, 10) в задаче темы?

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

Четыре: (10, 10), (14, 10), (7, 13), (7, 20).

Практика

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

+2 или ×3: неудачный ход Пети

Два игрока, Петя и Ваня, играют в игру с кучей камней. Игроки ходят по очереди, первый ход делает Петя. За один ход игрок может добавить в кучу два камня или увеличить количество камней в куче в три раза. Игра завершается, когда количество камней в куче становится не менее 70. Победителем считается игрок, сделавший последний ход. В начальный момент в куче было S камней, 1 ≤ S ≤ 69. Известно, что Ваня выиграл своим первым ходом после неудачного первого хода Пети. Укажите минимальное значение S, когда такая ситуация возможна.

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

Задание 20: наименьшее и наибольшее

Игра с кучей камней: за один ход можно добавить один камень, добавить три камня или удвоить кучу. Игра завершается, когда в куче не менее 45 камней, 1 ≤ S ≤ 44. Найдите наименьшее и наибольшее значения S, при которых Петя не может выиграть первым ходом, но у Пети есть выигрышная стратегия, позволяющая ему выиграть вторым ходом при любой игре Вани.

Введите два числа через пробел: наименьшее, затем наибольшее.

Две кучи: задание 21

Две кучи камней: за один ход можно добавить в одну из куч два камня или удвоить одну кучу. Игра завершается, когда суммарное количество камней в кучах становится не менее 100. В первой куче 7 камней, во второй — S, 1 ≤ S ≤ 92. Найдите минимальное значение S, при котором у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом при любой игре Пети, но нет стратегии, которая позволит ему гарантированно выиграть первым ходом.

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

Уменьшение кучи: наибольшее S

Куча камней: за один ход можно убрать три камня, убрать четыре камня или уменьшить количество камней в два раза с округлением вниз. Игра завершается, когда в куче становится не более 40 камней; S ≥ 41. Укажите максимальное значение S, при котором Петя не может выиграть за один ход, но при любом ходе Пети Ваня может выиграть своим первым ходом.

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

Победа третьим ходом

Куча камней: за один ход можно добавить один камень, добавить четыре камня или утроить кучу. Игра завершается, когда в куче не менее 100 камней, 1 ≤ S ≤ 99. Найдите два наименьших значения S, при которых у Пети есть выигрышная стратегия, причём одновременно выполняются два условия: Петя не может выиграть за один ход; Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня.

Введите два числа через пробел в порядке возрастания.