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

Что наша жизнь. ИГРА!

#Базовая постановка задачи на одну кучу#
Два игрока, Пятачок и Винни, играют в следующую игру.
Перед игроками лежит одна куча из S камней. Игроки ходят по очереди, первый ход делает Пятачок. За один ход игрок может:
- добавить в кучу a1, a2,...,ak  камней (уменьшить количество камней в куче m1, m2,...,ml  камней);
- увеличить количество камней в куче на в  p1, p2,...,pl  раз  (уменьшить количество камней в куче  в  p1, p2,...,pl  раз с окрулениес вверх/низ)
Игра заканчивается, если количество камней в куче становится не менее N  (не более N).
Игрок, сделавший последний ход:
  • , т.е. первым получивший такую позицию, при которой в куче будет не меньше, чем N камней  (не более N).
  1. считается победителем
  2. считается проигравшим, то есть победа присуждается его сопернику
  3. считается победителем, если выполнено <условие победы>, иначе считается проигравшим
Изначально количество камней в куче определяется <множеством Старта>:-
множеством простых чисел, меньших чего-то и т.п. 

Вопросы могут быть интегральные, например:
  • выигрышная стратегия есть у Пятачка (1 число ответа)
  • выигрышная стратегия есть у Винни (2 число ответа)
  •  и т.п.

Попробуем использовать модель, аналогичную "машинному обучению с подкреплением"
Первый игрок - это Агент и он стремиться к Победе
Второй игрок - это "Окружающая среда" (ОС) - сообщающая информацию о состоянии
На каждом "такте" (ходе) ОС сообщает информацию о том, куда "можно/безопасно" ходить,
а куда ходить "нельзя/запрещено"

Общая модель решения

1. Определяем параметры игры (будем использовать короткие имена, как на экзамене)
ee - множество параметров, определяющих игру ee[0] = N
G - множество позиций, которое может находиться в игре (может быть разумным)
St - множество стартовых позиций (если есть ограничения на них) 
L,W - множества позиций, определяющих стратегию игры.
L - множество позиций в которые "можно" (то есть это поля, стартуя из которых Агент не имеет ВС (выигрышной стратегии)
W  - множество позиций, в которые ходить "запрещено" (то есть поля, стартуя из которых Агент имеет ВС, а пойдя в них тереет ВС)
t - номер "такта" игры(получения информации) - на нечётных тактах получаем информацию от поз оициях в которые "можно" ходить (W),
а на нечетных - о "запрещенных" позициях (L)
R - промежуточный результат исследования для каждого такта 
ANS  - список ответов ОС (ANS[t] = R)

2. Модель решения

# Заполнение/инициализация множеств G, St, L, W и ee
 
t, ANS = 0, {}
while ( len(G & St) > 0 ) :
    t += 1
    R = shag (t)
    ANS[t] = R
    if t % 2 == 1 : W = W.union(R)
    if t % 2 == 0 : L = L.union(R)
#  Обработка ответов (словаря ANS)


Для решения задания подребуются подрограммы
def shag (t): - ОС исследует состояние

Печать