Задание №19: Теория игр: выигрышная стратегия (1 ход)
Основные типы и прототипы задания №19:
Одна куча камней (Победа за 1 ход)
Две кучи камней (Победа Вани за 1 ход)
Условие задания
(А. Минак) Два игрока, Петя и Ваня, играют в следующую игру. На координатной плоскости стоит фишка. Игроки ходят по очереди, первый ход делает Петя. Ход состоит в том, что игрок перемещает фишку из точки с координатами (x, y) в одну из трех точек: (x-10, y+5), (x-5, y-5), (x+5, y-5). Например, при если фишка стоит в позиции (10,5), то за один ход можно получить любую из трёх позиций: (0,10), (5, 0), (15,0). Игра завершается в тот момент, когда расстояние от фишки до точки с координатами (0, 0) становится больше 20 единиц. Победителем считается игрок, сделавший последний ход, т.е. первым получивший позицию, от которой расстояние до точки с координатами (0, 0) больше 20 единиц. В начальный момент фишка находится в позиции (-1, S), где S - целое число. Будем говорить, что игрок имеет выигрышную стратегию, если он может выиграть при любых ходах противника.
Ответьте на следующие вопросы:
Вопрос 1. Укажите количество всех возможных S, при которых игра имеет смысл, т. е. для которых расстояние от начальной позиции до точки с координатами (0, 0) не больше 20.
Вопрос 2. Найдите два числа: первое – количество значения S, при которых Петя выигрывает первым ходом; и второе число – количество значений S при которых, у Пети есть выигрышная стратегия, причём одновременно выполняются два условия:
− Петя не может выиграть за один ход;
− Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня.
Вопрос 3. Найдите максимальное значение S, при котором одновременно выполняются два условия:
– у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом при любой игре Пети;
– у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом.
Ответьте на следующие вопросы:
Вопрос 1. Укажите количество всех возможных S, при которых игра имеет смысл, т. е. для которых расстояние от начальной позиции до точки с координатами (0, 0) не больше 20.
Вопрос 2. Найдите два числа: первое – количество значения S, при которых Петя выигрывает первым ходом; и второе число – количество значений S при которых, у Пети есть выигрышная стратегия, причём одновременно выполняются два условия:
− Петя не может выиграть за один ход;
− Петя может выиграть своим вторым ходом независимо от того, как будет ходить Ваня.
Вопрос 3. Найдите максимальное значение S, при котором одновременно выполняются два условия:
– у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом при любой игре Пети;
– у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом.
Ответ:
1) 39<br/>2) 13 2<br/>3) 2
Шаблон решения на Python
# === Задания 19-21: Теория игр (1 или 2 кучи) ===
def moves(h):
return [h + 1, h * 2]
def game(h):
if h >= 129: return 0 # Победа
next_g = [game(m) for m in moves(h)]
if any(g == 0 for g in next_g): return 1 # Победа 1 ходом (П1)
if all(g == 1 for g in next_g): return 2 # Победа 1 ходом (В1)
if any(g == 2 for g in next_g): return 3 # Победа 2 ходом (П2)
if all(g in (1, 3) for g in next_g): return 4 # Победа 2 ходом (В2)
return -1
for s in range(1, 129):
res = game(s)
if res in (1, 2, 3, 4):
print(f"S={s}: {['П1', 'В1', 'П2', 'В2'][res-1]}")