Ввод / вывод: | интерактивный | Ограничение времени: | 500 сек | |
Максимальный балл: | 500 | Ограничение памяти: | 1512 Мб |
Игра происходит на поле размером W на H клеток. Каждое поле содержит слой снега неотрицательной толщины. Также на клетке может находиться либо один из игроков, либо снежный ком, либо препятствие.
В игре участвуют 1 и более игроков. Игроки ходят по очереди. Каждый ход игрок может сместиться на одну клетку влево, вправо, вверх или вниз, толкая перед собой снежный ком. Весь снег из клетки, на которую смещается игрок, добавляется к снежному кому, который оказывается на следующей в том же направлении клетке. Если клетка для снежного кома занята, игрок не может сместиться в этом направлении. Снежный ком имеет максимально допустимый размер M, после которого он больше не растёт.
У каждого игрока имеется выделенная область карты, в которые он должен переместить как можно больше снега в комьях. Счёт игрока определяется как сумма размеров комьев снега, находящихся в его области. Игра продолжается фиксированное количество ходов.
Конкретные значения параметров игры и карту игрового поля можно получить из параметров при инициализации игрового ИИ.
class MapInfo {
width //int ширина карты
height //int высота карты
map //[[char]] массив символов '.' - поле,'#' -стенка, '*' - ёлка
spawns //[{x,y}] массив объектов {x,y} - координаты спауна игроков (координаты начинаются с левого верхнего угла икрана);
bases //[{leftTop{x,y}, bottomRight{x,y}}] массив объектов {leftTop{x,y}, bottomRight{x,y}} - прямоугольников описывающих базы куда нужно доставлять снежные шары
turns //int количество ходов на карте;
snowIncreasePeriod //int через сколько ходов снова выпадет снег;
lastSnowIncreaseStep //int ход после которого снег не выпадает;
snowIncreaseValue //(int | [[int]]) число или массив (размером с карту) обозначающий величину увеличения снега в каждой клетке;
startSnowMap //(int | [[int]]) число или массив (размером с карту) обозначающий величину увеличения снега в каждой клетке;
}
// минимальное тело бота
{
Init({ SafeMapInfo, index: i }) //функция вызывается 1 раз при создание сцены. Принимает информацию о карте и индекс бота. Индекс указывает на спаун и базу игрока.
GetDirection({position, enemies, snowBallsInfo, snowLevelMap}) //функция вызывается каждый ход.
//Принимает:
//position {x,y} - координаты игрока
//enemies [{name,x,y}] - массив описания противников (их координаты и имя)
//snowBallsInfo [{x,y, value, id}] - массив описания снежных шаров на карте (их координаты, количество снега в нём, его уникальный идентификатор)
//snowLevelMap [[int]] - массив описывающий количество снега в каждой ячейке
}
Система доступна здесь.