В прерии сухое лето. Четыре фермера в этом районе понимают, что они могут загнать в угол рынок кукурузы, сжигая урожай своих соседей. Но им нужна стратегия для этого; вот где вы входите.
Ваша задача - написать бота, чтобы рассказать фермерам, что сжигать. Цель состоит в том, чтобы закончить игру с самой большой площадью несгоревших земель. Игровое поле - сетка 32х32. Каждая ячейка может быть одной из следующих:
. - Ground
@ - A bot
# - Ash
W - Wet ground
1,2,3,4,5, or 6 - Fire
Интенсивность огня увеличивается на 1 каждый ход. Как только он станет 3 или выше, он подожжет клетки рядом с ним (по горизонтали или по вертикали). Когда огонь достигает 6, он превращается в пепел.
На каждом ходу боты получают в качестве STDIN следующее: старт бота x, старт бота y, текущая позиция бота x, текущая позиция бота y и доска, разделенные символами новой строки. Пример:
8
22
6
24
................................
................................
................................
.....................1..........
....................1#1.........
...................1#363........
....................16@1........
.....................31.........
................................
.........1.1....................
........15#62...................
........15@2....................
.........32.....................
................................
................................
................................
................................
................................
................................
................................
................................
................................
....4.1.........................
.....1#3........................
.....@3.........................
.....W..........................
................................
................................
................................
................................
................................
................................
(в этом случае вы бот в левом нижнем углу).
Вы должны вывести три символа с необязательным символом новой строки, представляющим следующее:
Ход - один из L, R, U, D, or S (stay)
Действие - одно из B (burn), P (pour water) or X (do nothing)
Направление - одно из L, R, U, D or S
- контролирует ячейку, над которой вы выполняете действие
Огонь не влияет на ботов.
Порядок хода следующий: все боты двигаются; все боты выполняют действия; тогда экологические правила случаются. Если вы будете поливать землю водой, она будет мокрой ( W
) на один оборот. Огонь не распространяется на влажную почву. Если вы наливаете воду на влажную почву, она будет оставаться влажной. Если вы подливаете воду в огонь, она превращается в обычную землю. Вы не можете ничего сделать с пеплом.
Раунды проводятся с 4 ботами одновременно. Раунд заканчивается через 50 ходов или когда один бот выбегает из несгоревшего грунта, в зависимости от того, что наступит раньше. Ваша оценка рассчитывается как количество наземных или влажных ячеек в квадрате 9x9 с центром, где стартовал ваш бот.
Вот пример бота; он выбирает все три буквы случайным образом и, как правило, в конечном итоге сжигает свои собственные поля.
RandomBurner:
#!/usr/bin/env python
import random
print random.choice('LRUDS')+random.choice('BPX')+random.choice('LRUDS')
Правила:
- Нет доступа к файловой системе за пределами вашей собственной папки.
- Вы можете записывать в файлы, если вам нужно хранить постоянные данные между ходами, но не более 1 КБ на бот
- Вы не можете перезаписать чужой бот
- Если вы выведете неверный ход, ваш бот будет сидеть на месте. Если вы выведете неверное действие, ваш бот ничего не сделает.
- Пожалуйста, придерживайтесь общих языков, которые могут быть запущены на OSX или Linux.
Код контроллера можно найти здесь.
Начальные результаты:
Average of 15 rounds:
---------------------
81 Farmer
56 CautiousBot
42 GetOff
41 Visigoth
40 DontBurnMeBro
37 FireFighter
35 Pyro
11 Protector
Обновление : добавлены Farmer, CauptedBot, GetOff, FireFighter и Pyro.