В этом году в первой номинации Всесибирской олимпиады участникам предлагалось написать программу управления роботами-пылесосами.
Существенным отличием от прошлых лет стало то, что игра по сути своей массовая, а не одиночная (пример 2010 года) или дуэльная (пример 2013 года). В каждой игре участвуют одновременно все соревнующиеся 50 команд. Каждый игрок управляет 10 роботами, которые бегают по круглому полю. Если робот набегает на другого робота меньшего размера (или на пассивную неподвижную "еду"), то он его съедает, увеличивая свою площадь на площадь съеденного объекта. Кто съел всё (а это гарантированно происходит из-за сужения игрового мира) — тот победил. Для произвольного игрока очки за игру определяются по суммарной площади его роботов в наилучший для него момент времени. С ростом робота его скорость снижается, поэтому в игру добавлен "турбо-режим", позволяющий периодически удваивать скорость на короткое время.
Чтобы исключить технические проблемы при одновременном запуске 50 решений, решено было ограничить соревнование одним языком программирования — языком Lua. Это не первый раз, когда нам приходится потребовать от участников использовать этот незнакомый для них язык. Игра запускается в одном процессе ОС, а каждый игрок работает в своём закрытом Lua-состоянии. В результате можно запускать игру с 50 игроками в реальном времени даже на одном обычном компьютере.
Во время тура игра запускалась по циклу примерно каждые три минуты. Каждый раз в игре участвовало по одному самому новому решению от каждой команды. Примерно с середины тура в классах подняли показ результатов последней игры (в цикле) на проекторе или на большом телевизоре. Выглядело это примерно так:
(видео из класса?)
(Какие-нибудь видео по ходу игры)
Сейчас по задаче можно скачать:
Полный архив: исходный код игры, решения участников, виндовые бинарники.
Материалы: только виндовые бинарники.