Задача типа #21: Стратегия игр
Стратегия игр
Два игрока, Петя и Ваня, играют в следующую игру. Перед игроками лежит куча камней. Игроки ходят по очереди, первый ход делает Петя.
За один ход игрок может:
− убрать из кучи 3 камня,
− убрать из кучи 7 камней,
− уменьшить количество камней в куче в 3 раза (количество камней, полученное при делении, округляется до меньшего).
У каждого игрока есть неограниченное количество камней, чтобы делать ходы. Игра завершается в тот момент, когда количество камней в куче становится не более 11. Победителем считается игрок, сделавший последний ход, т.е. первым получивший в куче 11 камней или меньше.
В начальный момент в куче было S камней; S > 11.
Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника.
Для игры, описанной в задании 19, найдите минимальное значение S, при котором одновременно выполняются два условия:
– у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом при любой игре Пети;
– у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом.
Алгоритм решения: Создадим в Python рекурсивную функцию для перебора всех возможных ходов. Переберём все (до разумного предела) значения начального количества камней с вызовом созданной функции.
Возможно другое решение.
Посмотреть решение задачи (код на Python) в Telegram боте по ID задачи 121009