Это было вдохновлено мини-игрой Minecraft. Правила довольно просты: вы бегаете и прыгаете, и каждый блок, на который вы наступаете, исчезает, как только вы наступили на него. Цель - остаться последним.
Ваш бот должен быть полной программой. Он должен принимать ввод в качестве аргумента командной строки. На входе будет карта «мира»; вот пример:
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxx xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxx xxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxx x xxxxxxxxxxxxx@xxxxxxxxxxx
xxxxxx1xxxxxxxxxxxxx xxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxx xxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxx xxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxx xxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxx xxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxx xxxxxxxxxxx
xxxxxxxxxx xxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxx xxxxxxxxxxxx
xxxxxxxxxxxxxxxxx x x xxxxxxxxxx
xxxxxxxxxxxxxxxxxxxx xxxxxxxxxxx
xxxxxxxxxxxxxx xxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxx xxx xx3xxxxxxxxxx
xxxxxxxxxxxxxxxxxxx xxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx x
xxxxxxxxxxxxxxxxxxxxxxxxxxx xx
xxxxxxxxxxxxxxxxxxxxxxxxx 2
xxxxxxxxxxxxxxxxxxxxxxx
Легенда такова:
x: solid block
: empty air
@: your bot
1,2,3,4,5,6,7,8,9,0: other bots
Ваш бот должен выводить ваш ход в виде пары целых чисел. Пример: -1, 2
переместит 1 блок влево и 2 блока вниз (начало координат находится в верхнем левом углу).
Вы можете переместиться на четыре квартала от Манхэттена до вашего текущего местоположения. Если вы попытаетесь продвинуться дальше, это недопустимо. Любое движение, которое переместит вас через край, вместо этого поставит вас на край. Неверные ходы будут игнорироваться.
Как только вы приземлились на блок, он удаляется; если вы останетесь на том же блоке в следующий ход, вы упадете. Два бота могут приземлиться в одном блоке в один и тот же ход, и оба выживают; если это произойдет, оба бота увидят только себя, а не другого бота.
Если вам нужно хранить файлы для сохранения, пожалуйста, сделайте это в папке с именем вашего бота. Вы не можете читать постоянные данные других ботов, если таковые имеются.
Контроллер матча доступен по адресу https://paste.ee/p/Xf65d .
Пожалуйста, используйте языки, которые могут быть запущены при стандартной установке Linux или OSX.
Текущие результаты (100 раундов):
JumpBot 31
LookBot 27
ShyBot 26
Slow Bot 15
KnightBot 2
Moat Builder 0
UpBot 0
Random Bot 0
источник
Ответы:
Медленный бот (Python)
Он двигается по линейной схеме и проверяет свои ходы, прежде чем совершать их (также самоубийства, когда он последний жив, чтобы предотвратить длительное время). Он выиграл 195/200 баттелей в моем тестовом турнире.
Я не специалист по питону и, вероятно, есть 100 способов сделать это короче / лучше
источник
JumpBot (C)
Попробуйте прыгнуть на поле с максимально возможным количеством ходов в следующем раунде.
источник
LookBot (C)
Простой бот, похожий по производительности на Slow Bot, за исключением того, что он делает случайные возможные ходы. Планируйте улучшить это до PredictBot.
источник
Строитель рва (Python)
Если я буду рыть вокруг себя ров, никто за его пределами не сможет меня опрокинуть.
... также известный как «Нарисуй себя в угловой симулятор 2016».
источник
Монте (Питон)
Извините, этот каламбур просто должен был быть сделан.
В любом случае, этот бот работает, выполняя поиск по дереву Монте-Карло по всем возможным наборам ходов. Подумайте о JumpBot, только более подробно.
Для запуска требуется дополнительный аргумент командной строки (может быть указан в контроллере). Он контролирует, сколько времени бот должен искать (в мс); Я использовал 750-1500 в тестировании.
Код:
Испытания
25 раундов:
100 раундов:
200 раундов:
Во всех приведенных выше моделях использовалось время поиска 750. Этот бот, вероятно, был бы еще лучше с более длительным временем поиска (я не знаю, каков максимально допустимый предел).
улучшения
Этот бот по-прежнему нуждается в улучшении:
источник
ShyBot (Python)
Этот бот действительно не любит других ботов и постарается держаться подальше, если это возможно. ShyBot также очень осторожен в том, куда он идет; это даже не наступит на других ботов. Тем не менее, ShyBot по-прежнему часто проигрывает, что делает небезопасным.
источник
KnightBot (Java)
Он работает как шахматы и называется как Twitch ...
...
.........
............................извиняюсь...
SwirlyBot (Java)
Это явно не оптимальные решения, но я надеюсь, что они будут полезны для тестирования среднего уровня.
источник
Случайный бот, UpBot
Два стартовых бота, чтобы конкурировать с:
Случайный бот: пример бота, который перемещается случайным образом.
UpBot: пример бота, который движется вверх.
источник
StalkerBot (Python)
Подойдет как можно ближе к ближайшему боту, которого увидит. Цели Slow Bot (бессмысленное) автоматическое самоубийство. (Если я нахожусь на той же площади, что и он, и нет других игроков, он не увидит меня и самоубийство.)
источник