Статья Автор: Лебедев Дмитрий Алексеевич

Игры с запретами

Рассмотрим следующую модель игры для двух игроков
  • Играют два игрока Петя и Ваня (Петя всегда ходит первым)
  • Задано V - множество чисел допустимых в игре
  • Каждый игрок имеет свой набор команд
  • Запрещено использовать/получать числа, которые уже были использованы в игре
  • Проигравшим считается игрок,  который не сможет сделать ход 

Пример игры
Правила игры
  • Множество игровых чисел - натуральные числа, меньшие N = 30
  • start - натуральное число, меньшее N
  • Петя может преобразовать числа a по одному из следующих правил
    • увеличить или уменьшить на 2
    • увеличить или уменьшить в 2 раза (деление целочисленное)
    • "приписать к числу"  слева или справа цифру 2
  • Ваня может преобразовать числа a по одному из следующих правил
    • увеличить или уменьшить на 3
    • увеличить или уменьшить в 3 раза (деление целочисленное)
    • "приписать к числу"  слева или справа цифру 3
  • Оба игрока не могут получать числа, которые уже использовались
Задание
Для заданного start определить, у кого из игроков есть ВС (выигрышная стратегия)

Для решения задания надо определить подрограммы
  • piA(x, V), piB(x, V) - подпрограммы получения возможных ходов игроками 
    (без учета траекторий)
  • Подпрограмма шага (рекурсия, обход в глубину)
    game(st,V, track, tt) - где:
    • st - вершина входа
    • V - множество разрешенных вершин
    • track - путь до st (запретные позиции)
    • tt -  служебный список ( tt[0] - такт работы, tt[1] - максимальная длина track)
       


Печать