C'est un été sec dans la prairie. Les quatre agriculteurs de la région se rendent compte qu'ils peuvent accaparer le marché au maïs en brûlant les récoltes de leurs voisins. Mais ils ont besoin d'une stratégie pour le faire; c'est là que vous intervenez.
Votre tâche consiste à écrire un bot pour dire aux agriculteurs quoi brûler. Le but est de terminer le jeu avec la plus grande surface de terre non brûlée. Le terrain de jeu est une grille 32x32. Chaque cellule peut être l'une des suivantes:
. - Ground
@ - A bot
# - Ash
W - Wet ground
1,2,3,4,5, or 6 - Fire
Le feu augmente d'intensité de 1 à chaque tour. Une fois qu'il est 3 ou plus, il mettra le feu aux cellules à côté (horizontalement ou verticalement). Après que le feu ait touché 6, il se transforme en cendre.
À chaque tour, les bots reçoivent comme STDIN les éléments suivants: bot commençant x, bot commençant y, bot position actuelle x, bot position actuelle y et le tableau, séparés par des retours à la ligne. Un exemple:
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..........................
................................
................................
................................
................................
................................
................................
(dans ce cas, vous êtes le bot en bas à gauche).
Vous devez générer trois caractères, avec un retour à la ligne facultatif, représentant les éléments suivants:
Déplacer - l'un des L, R, U, D, or S (stay)
Action - l'un des B (burn), P (pour water) or X (do nothing)
Direction - l'une des L, R, U, D or S
- contrôle la cellule sur laquelle vous effectuez l'action
Le feu n'affecte pas les robots.
L'ordre des tours est le suivant: tous les bots se déplacent; tous les robots exécutent des actions; puis les règles environnementales se produisent. Si vous versez de l'eau sur le sol, elle sera mouillée ( W
) pendant un tour. Le feu ne se propage pas au sol humide. Si vous versez de l'eau sur un sol humide, elle restera humide. Si vous versez de l'eau en feu, elle redevient un sol ordinaire. Vous ne pouvez rien faire pour cendre.
Les tours se déroulent avec 4 bots à la fois. Le tour se termine après 50 tours, ou quand un bot manque de terrain non brûlé, selon la première éventualité. Votre score est calculé comme le nombre de cellules au sol ou au sol humide dans le carré 9x9 centré sur l'endroit où votre bot a commencé.
Voici un exemple de bot; il choisit les trois lettres au hasard et finit généralement par brûler ses propres champs.
RandomBurner:
#!/usr/bin/env python
import random
print random.choice('LRUDS')+random.choice('BPX')+random.choice('LRUDS')
Règles:
- Aucun accès au système de fichiers en dehors de votre propre dossier.
- Vous pouvez écrire dans des fichiers si vous avez besoin de stocker des données persistantes entre les tours, mais seulement jusqu'à un maximum de 1 Ko par bot
- Vous ne pouvez pas écraser le bot de quelqu'un d'autre
- Si vous produisez un mouvement invalide, votre bot restera immobile. Si vous générez une action non valide, votre bot ne fera rien.
- Veuillez vous en tenir aux langues courantes qui peuvent être exécutées sur une boîte OSX ou Linux.
Le code du contrôleur peut être trouvé ici.
Premiers résultats:
Average of 15 rounds:
---------------------
81 Farmer
56 CautiousBot
42 GetOff
41 Visigoth
40 DontBurnMeBro
37 FireFighter
35 Pyro
11 Protector
Mise à jour : ajout de Farmer, CautiousBot, GetOff, FireFighter et Pyro.