Це сухе літо в прерії. Четверо фермерів у цій галузі усвідомлюють, що вони можуть закутувати ринок кукурудзи, спалюючи врожай сусідів. Але для цього їм потрібна стратегія; саме там ви заходите.
Ваше завдання - написати бота, щоб сказати фермерам, що спалити. Мета - закінчити гру з найбільшою площею незапаленої землі. Ігрове поле - сітка 32х32. Кожна комірка може бути однією з наступних:
. - Ground
@ - A bot
# - Ash
W - Wet ground
1,2,3,4,5, or 6 - Fire
Вогонь зростає в інтенсивності на 1 оберт. Після того, як вона буде 3 або вище, вона підпалить комірки поруч (горизонтально або вертикально) у вогні. Після того, як вогонь потрапить у 6, він перетворюється на попіл.
На кожному кроці боти отримують як STDIN наступне: бот починаючи x, бот починає y, бот поточний х положення, поточний бот 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, CautiousBot, GetOff, FireFighter та Pyro.