Года четыре назад написал я игру змейка. Ну и заморочился тем, чтобы написать для неё бота. Написал, но он играл не идеально. После этого я понял, что чтобы бот играл идеально, надо учить графы и методы их перебора и потом забил.

Года два назад до меня дошло, что я решал эту задачу как программист, а намного проще было бы решать её как математик. Конкретно: нужно постоянно гонять змейку по одному и тому же маршруту, причём маршрут должен быть закольцованным и проходить по всему игровому полю. Вот пример такого маршрута для игрового поля, имеющего 5 клеток в ширину и 4 клетки в высоту:

Обозначим количество клеток в ширину через W, а в высоту — через H (Получается, что на рисунке у нас поле с W=5 и H=4). Всюду ниже будем считать, что W > 1 и H > 1. Очевидно, что если H чётное, то можно построить аналогичный маршрут, аналогичный нарисованному. И на этом этапе появляется две задачи:

Задача 1: Построить маршрут для змейки на поле с чётным W и нечётным H.

Задача 2: Построить маршрут для змейки на поле, когда и W, и H одновременно нечётные.

Предлагаю читателю задуматься над решением этих задач.