# Snake | misc, beginner **Автор:** — ## Описание > snake: homm3 edition ## Деплой Per-instance: [deploy/](deploy/). ## Выдать участникам Ничего, таск blackbox. ## Идея Змейка на шестиугольном поле из сот: сторона поля — 5 клеток, всего 61 клетка. Сервер на Go (fiber), фронтенд встроен в бинарь. Ходы отправляются по websocket `/ws` сообщением `{"type":"move","dir":0..5}`, змейка двигается только по сообщению — таймера нет. После каждого сообщения сервер присылает полное состояние: тело змейки, еду, длину и целевую длину. Флаг (`/flag.txt`) сервер присылает в поле `message`, когда длина змейки достигает 61, то есть змейка должна занять всё поле. Фронтенд при этом показывает `alert`. Руками это не сделать: нужно собрать 60 единиц еды без единой ошибки, еда появляется в случайной свободной клетке. Задача — написать бота. ## Решение Бот ведёт змейку по гамильтонову циклу через все 61 клетку: ряды обходятся «змейкой» без западной клетки, два нижних ряда — зигзагом, западный столбец служит обратным путём наверх. Пока тело лежит на дуге цикла позади головы, можно безопасно срезать вперёд по циклу, не перепрыгивая еду — так бот доходит до заполнения примерно за тысячу ходов вместо нескольких тысяч. Разбор: [solve/WRITEUP.md](solve/WRITEUP.md). Бот: [solve/solve.py](solve/solve.py). ## Флаг ``` ctfcup{23cdba78b236aa2e478d0d562d34562c_%s} ```