Тема 19. Теория игр

19.04 Уменьшение количества камней

Вспоминай формулы по каждой теме
Решай новые задачи каждый день
Вдумчиво разбирай решения
ШКОЛКОВО.
Готовиться с нами - ЛЕГКО!
Подтемы раздела теория игр
Решаем задачу:

Ошибка.
Попробуйте повторить позже

Задача 1#139234

Для игры, описанной в задании 19, найдите минимальное значение S  , при котором одновременно выполняются два условия:

– у Вани есть выигрышная стратегия, позволяющая ему выиграть первым или вторым ходом при любой игре Пети;

– у Вани нет стратегии, которая позволит ему гарантированно выиграть первым ходом.

Показать ответ и решение

Решение руками
Из предыдущих заданий известно, что Петя гарантированно побеждает своим вторым ходом из позиций

91...93, 95...97, 352...363,

а своим первым ходом – из позиций на отрезке [22;87]  . Нам нужно найти минимальное S > 87  , при котором все ходы Пети переводят игру в эти выигрышные позиции, чтобы Ваня гарантированно выигрывал первым или вторым ходом.

Проверим подряд кандидаты, начиная с S = 88  .

  • S = 88  : после ходов Пети получаем 85, 81, 22  – все в [22;87]  , значит Ваня выигрывает сразу первым ходом при любых ходах Пети, поэтому 88  не подходит (нужна ситуация, когда Ваня не гарантированно выигрывает первым ходом).
  • S = 89  : после ходов Пети получаем 86, 82, 22  – опять все в [22;87]  , поэтому не подходит.
  • S = 90  : после ходов Пети получаем 87, 83, 22  – опять все в [22;87]  , не подходит.
  • S = 91  : после ходов Пети получаем 88, 84, 22  . Здесь 88 ∕∈ [22;87]  и 88∈∕{91...93,95...97,...} , значит для хода Пети в 88  Ваня не получает гарантированного выигрыша за 1 или 2 хода, поэтому 91  не подходит.
  • S = 92,93  аналогично дают одно из образовавшихся значений вне множества выигрышных позиций, поэтому тоже не подходят.
  • S = 94  : после ходов Пети получаем

    94 − 3 = 91 ∈ {91 ...93},  94− 7 = 87 ∈ [22;87],   ⌊94∕4⌋ = 23 ∈ [22;87].

    Все три результата принадлежат либо множеству позиций «выигрыш за 1 ход» ([22;87]  ), либо множеству позиций «выигрыш за 2 хода» (91...93, 95...97, 352...363  ). Значит при любом ходе Пети Ваня имеет выигрышную стратегию, позволяющую ему выиграть первым или вторым ходом, и при этом не во всех ветках у Вани есть мгновенная победа за 1 ход (поскольку для хода Пети, давшего 91  , Ваня выигрывает вторым ходом).

Следовательно, минимальное значение S  , удовлетворяющее требованиям, равно 94

Решение программой
Этот код почти идентичен реализации из задачи 19, а единственное отличие заключается в условии проверки в цикле: здесь проверяется game(S) == -2, что соответствует поиску начальных значений S  , из которых Ваня выигрывает первым или вторым ходом.

from functools import lru_cache


@lru_cache(None) # Кэширует данные, ускоряя работу программы
def game(first_heap):  # Функция игры
    if first_heap <= 21:  # Если камней в куче стало не более 21
        return 0  # Прекращаем игру
    moves = [game(first_heap - 3), game(first_heap - 7), game(first_heap // 4)]  # Прописываем возможные ходы в партии
    win = [i for i in moves if i <= 0]
    if win:  # Проверяем, есть ли выигрыш в данной позиции
        return -max(win) + 1
    else:  # Если в данной позиции выигрыш соперника
        return -max(moves)


for i in range(22, 1000):
    if game(i) == -2:  # Если в данной позиции возможен выигрыш Вани за один или два хода
        print(i)

Ответ: 94

Специальные программы

Все специальные программы

Программа
лояльности v2.0

Приглашай друзей в Школково и получай вознаграждение до 10%!

Крути рулетку
и выигрывай призы!

Крути рулетку и покупай курсы со скидкой, которая привязывается к вашему аккаунту.

Бесплатное онлайн-обучение

Для школьников из приграничных территорий России, проживающих в ДНР, ЛНР, Херсонской, Запорожской, Белгородской, Курской, Брянской областях и Крыму.

Налоговые вычеты

Узнай, как получить налоговый вычет при оплате обучения в «Школково».

Специальное предложение
для учителей

Бесплатный доступ к любому курсу подготовки к ЕГЭ, ОГЭ и олимпиадам от «Школково». Мы с вами делаем общее и важное дело, а потому для нас очень значимо быть чем-то полезными для учителей по всей России!

Вернём деньги за курс
за твою сотку на ЕГЭ

Сдать экзамен на сотку и получить обратно деньги за подготовку теперь вполне реально!

cyberpunkMouse
cyberpunkMouse
Рулетка
Вы можете получить скидку в рулетке!