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

19.01 Перекладывание камней одна куча

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

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

Задача 1#59597

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

В начальный момент в куче было S камней; 1 ≤ S ≤ 39  .

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

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

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

Решение руками

Максимальный ход доступный нам в партии это ∗3  . Определим отрезок, в котором игра заканчивается за один ход. Минимальное значение отрезка равняется: 40
--= 13,33..
3  (округляем в большую сторону) = 14

Получается, что в отрезке [14;39] игра заканчивается в один ход. Если значение S после первого хода Пети не находится в данном отрезке, то Ваня специально совершит такой ход, чтобы после него значение S находилось в данном отрезке для того чтобы Петя смог завершить партию следующим ходом. А если значение S после первого хода уже находится в данном отрезке, то Ваня специально совершить такой ход, чтобы не завершить партию, а просто передать очередь хода Пете для того чтобы он завершил партию. Распишем значения и стратегии, при которых Петя не может победить за один ход, но может победить вторым ходом после неудачного хода Вани:

S = 1  . Петя увеличит количество камней до 7  , а Ваня увеличит количество камней до 21  . Пете не составит труда завершить партию следующим ходом.

S = 2  . Петя увеличит количество камней до 8  , а Ваня увеличит количество камней до 14  или 24  . Пете не составит труда завершить партию следующим ходом.

S = 3  . Петя увеличит количество камней до 9  , а Ваня увеличит количество камней до 15  или 27  . Пете не составит труда завершить партию следующим ходом.

S = 4  . Петя увеличит количество камней до 5  или 10  или 12  , а Ваня увеличит количество камней до 15  или 16  ,30  или 18  ,36  . Пете не составит труда завершить партию следующим ходом.

S = 5  . Петя увеличит количество камней до 6  или 11  или 15  , а Ваня увеличит количество камней до 18  или 17  ,33  или 16  ,21  .Пете не составит труда завершить партию следующим ходом.

S = 6  . Петя увеличит количество камней до 7  или 12  или 18  , а Ваня увеличит количество камней до 21  или 18  ,36  или 19  ,24  . Пете не составит труда завершить партию следующим ходом.

S = 7  . Петя увеличит количество камней до 8  или 13  или 21  , а Ваня увеличит количество камней до 14  , 24  или 14  ,19  ,39  или 22  ,27  . Пете не составит труда завершить партию следующим ходом.

S = 8  . Петя увеличит количество камней до 9  или 14  или 24  , а Ваня увеличит количество камней до 15  , 27  или 15  ,20  или 25  ,30  . Пете не составит труда завершить партию следующим ходом.

S = 9  . Петя увеличит количество камней до 10  или 15  или 27  , а Ваня увеличит количество камней до 16  ,  30  или 16  ,21  или 28  ,33  . Пете не составит труда завершить партию следующим ходом.

S = 10  . Петя увеличит количество камней до 11  или 16  или 30  , а Ваня увеличит количество камней до 17  ,   33  или 17  ,22  или 31  ,36  . Пете не составит труда завершить партию следующим ходом.

S = 11  . Петя увеличит количество камней до 12  или 17  или 33  , а Ваня увеличит количество камней до 18  ,   36  или 18  ,23  или 34  ,39  . Пете не составит труда завершить партию следующим ходом.

S = 12  . Петя увеличит количество камней до 13  или 18  или 36  , а Ваня увеличит количество камней до 19  ,   39  или 19  ,24  или 37  . Пете не составит труда завершить партию следующим ходом.

S = 13  . Петя увеличит количество камней до 14  или 19  , а Ваня увеличит количество камней до 15  ,20  или 20  ,25  . Пете не составит труда завершить партию следующим ходом.

В ответ нужно указать количество значений S. Ответ: 13

Программное решение

from functools import lru_cache
@lru_cache(None)
def game(first_heap): # функция игры
    if first_heap >= 40: # если камней в куче стало больше 39
        return 0 # прекращаем игру
    moves = [game(first_heap+1),game(first_heap+6),game(first_heap*3)] # расписываем ходы доступные нам в партии
    petya_win = [i for i in moves if i <= 0]
    if petya_win: # проверяем есть ли выигрыш Пети в данной позиции
        return -max(petya_win) + 1
    else: # если в данной позиции выигрыш Вани
        return -max(moves)
count = 0
for i in range(1,40):
    # проверка, что Петя не может выиграть за один ход
    # проверка, что Петя может выиграть вторым ходом после неудачного хода Вани. Расписываем всевозможные первые два хода и проверяем можно ли после них завершить игру за один ход.
    if game(i) != 1 and (game(i+1+1) == 1 or game(i+1+6) == 1 or game(i+1*3) == 1 or game(i+6+1) == 1 or game(i+6+6) == 1 or game(i+6*3) == 1 or game(i*3+1) == 1 or game(i*3+6) == 1 or game(i*3*3) == 1):
        count += 1
print(count)

Ответ: 13

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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