Автор задачи и разработчик: Павел Скобелин
В этой задаче нужно было рассмотреть много случаев. В начале удобно проверить, что первый игрок не выигрывает за один ход.
Отметим ряд неочевидных случаев:
- Доска $$$2 \times 2$$$, две ладьи стоят по диагонали.
- Доска $$$2 \times n$$$, $$$n > 2$$$, два слона одного цвета (игра на четность).
- Доска $$$3 \times 3$$$, слон стоит на клетке 1, 1; ладья стоит на клетке 2, 1; слон ходит первый — ничья. (также всевозможные развороты/исходы из этой партии являются ничейными).
- Доска $$$3 \times n$$$, $$$n > 3$$$, ладья всегда выигрывает слона (можно построить конструктивный способ загнать слона в угол доски.
- Доска $$$3 \times n$$$, играют 2 слона с координатами (2, 1) и (2, 3). Если первый слон ходит первым, то он проигрывает. Аналогично, если второй слон ходит первым и может сделать ход в клетку (2, 3), то он выигрывает.
- Доска $$$4 \times 4$$$. Если ладья ходит второй и стоит в клетке (1, 3), а слон стоит в клетке (3, 4), то ладья выигрывает. Аналогично, если ладья ходит первой и ей доступна для хода клетка (1, 3), то она выигрывает. Также особыми случаями являются все зеркальные отражения/повороты этой ситуации.
- Доска $$$4 \times n$$$. Возможно ситуация, аналогичная ситуации выше, если слон стоит на краю доски.
Все остальные случаи являются ничейными.
Все эти случаи довольно сложно заметить, поэтому для маленьких досок можно было написать ретроанализ позиции, представив как вершину графа позицию первого игрока, второго игрока и очередность хода. Рассмотрев результаты игр, можно было заметить все крайние случаи и заметить неочевидные случаи на досках $$$2 \times n$$$, $$$3 \times n$$$, $$$4 \times n$$$.