È un'estate secca nella prateria. I quattro agricoltori della zona si rendono conto di poter sbarrare il mercato sul mais bruciando i raccolti dei vicini. Ma hanno bisogno di una strategia per farlo; è qui che entri.
Il tuo compito è scrivere un robot per dire agli agricoltori cosa bruciare. L'obiettivo è quello di finire il gioco con la più grande area di terra non bruciata. Il campo di gioco è una griglia 32x32. Ogni cella può essere una delle seguenti:
. - Ground
@ - A bot
# - Ash
W - Wet ground
1,2,3,4,5, or 6 - Fire
Il fuoco aumenta di intensità di 1 ogni turno. Una volta che è 3 o superiore, incendia le celle accanto (orizzontalmente o verticalmente). Dopo che il fuoco ha colpito 6, si trasforma in cenere.
Ad ogni turno, i robot ricevono come STDIN quanto segue: bot che inizia x, bot che inizia y, posizione attuale x del bot, posizione attuale y del bot e scheda, separati da nuove linee. Un esempio:
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..........................
................................
................................
................................
................................
................................
................................
(in questo caso sei il bot in basso a sinistra).
È necessario generare tre caratteri, con una nuova riga facoltativa, che rappresentano quanto segue:
Sposta - uno di L, R, U, D, or S (stay)
Azione - una delle B (burn), P (pour water) or X (do nothing)
La direzione - una delle L, R, U, D or S
- controlla su quale cella si esegue l'azione
Il fuoco non influenza i robot.
L'ordine di turno è il seguente: Tutti i robot si muovono; tutti i robot eseguono azioni; allora accadono le regole ambientali. Se versi acqua sul terreno, sarà bagnata ( W
) per un turno. Il fuoco non si diffonderà sul terreno bagnato. Se versi acqua su un terreno bagnato, continuerà ad essere bagnato. Se versi acqua sul fuoco, torna a terra normale. Non puoi fare nulla per cenere.
I round vengono eseguiti con 4 bot alla volta. Il round termina dopo 50 turni, o quando un robot finisce il terreno incombente, a seconda di quale evento si verifichi per primo. Il tuo punteggio viene calcolato come il numero di celle di terra o terra bagnata nel quadrato 9x9 centrate su dove è iniziato il tuo bot.
Ecco un esempio di bot; raccoglie tutte e tre le lettere in modo casuale e generalmente finisce per bruciare i propri campi.
RandomBurner:
#!/usr/bin/env python
import random
print random.choice('LRUDS')+random.choice('BPX')+random.choice('LRUDS')
Regole:
- Nessun accesso al filesystem al di fuori della propria cartella.
- È possibile scrivere sui file se è necessario memorizzare dati persistenti tra i turni, ma solo fino a un massimo di 1kb per bot
- Non puoi sovrascrivere il bot di nessun altro
- Se hai emesso uno spostamento non valido, il tuo bot rimarrà fermo. Se si genera un'azione non valida, il bot non farà nulla.
- Attenersi alle lingue comuni che possono essere eseguite su una casella OSX o Linux.
Il codice del controller è disponibile qui.
Risultati iniziali:
Average of 15 rounds:
---------------------
81 Farmer
56 CautiousBot
42 GetOff
41 Visigoth
40 DontBurnMeBro
37 FireFighter
35 Pyro
11 Protector
Aggiornamento : Aggiunti Farmer, CautiousBot, GetOff, FireFighter e Pyro.