Разбор: Snake с отбора X Кубка CTF
Условие: misc с меткой beginner, задача без раздатки. Змейка на шестиугольном поле со стороной 5 клеток, всего 61 клетка. Ходы идут по websocket, таймера нет: змейка двигается только по сообщению. По таблице организаторов задание решили 580 раз.
Что требуется
Сервер присылает флаг, когда длина змейки достигает 61, то есть змейка занимает всё поле. Еда появляется в случайной свободной клетке, ошибаться нельзя.
Ход решения
- Прочитать протокол: сообщение с направлением 0–5, в ответ полное состояние
- Построить гамильтонов цикл через все 61 клетку
- Вести голову по циклу: так змейка не врежется в себя
- Срезать вперёд по циклу, пока тело лежит на дуге позади головы
- Не перепрыгивать еду при срезе
Что вынести
Если таймера нет, задача сводится к надёжному плану, а не к реакции. Срезы дали примерно тысячу ходов вместо нескольких тысяч.
Пример
Пример условный. Один участник команды рисует цикл на бумаге, второй в это время пишет клиент для websocket. Встречаются на первом полном прогоне.
Чек-лист
- ☐ Протокол снят из браузера
- ☐ Цикл проверен на всех клетках
- ☐ Бот ведёт журнал ходов
- ☐ Приём записан в разбор команды
Документ уже составлен
Открыть «Разбор задачи для команды CTF» →
Основание: условие и решение авторов задачи, репозиторий acisoru/ctfcup2026-quals, misc/snake. Канал не принадлежит организаторам; официальный сайт — ctfcup.ru.