NAME
MineSweeper 2001 - Le concours de Paris.pm
SYNOPSIS
O'Reilly France a fait cadeau aux Mongueurs de Perl d'une série de livres, T-shirts, et multiples ``goodies''.
Afin de distribuer ces cadeaux de la manière la plus équitable et perlienne possible, ce concours de programmation est organisé.
Ces cadeaux sont en possession de Philippe ``BooK'' Bruhat, qui est également à l'origine de ce concours.
RULES
Il est fourni aux joueurs une archive tar compressée comprenant les fichiers suivants :
- RULES : Ce fichier, contenant le règlement du concours.
- Mine.pm : module de génération des champs de mine.
- sweeper : pseudo juge, fourni à des fins de test.
- _eg_.pm : joueur d'exemple, listant les interfaces à implémenter.
L'archive est téléchargeable à http://www.mongueurs.net/concours/2001/mine.tgz .
Un robot doit, pour pouvoir participer au concours, implémenter les méthodes suivantes :
- new : Contructeur. Ne prend pas de paramètres.
- init : Initialise le robot avec une nouvelle grille. Les paramètres fournis sont 3 scalaires représentant la largeur du champ de mines, sa hauteur et le nombre de mines qu'il contient.
- query : Indique le point dont le robot désire connaître l'état. Retourne une liste de 2 scalaires indiquant les coordonnées d'un point de la grille. Quand le robot désire arrêter, il doit retourner une liste vide.
- info : Permet au juge de d'indiquer au robot l'état d'un point de la grille. Les paramètres sont 3 scalaires : les coordonnées x et y du point, suivies qu'un entier compris entre 0 et 8 indiquant le nombre de mines entourant ce point.
-
mine : L'état du champ de mine connu par le robot. Retourne une
chaîne où sont concaténées les valeurs des cases, ligne par ligne.
Exemple :
ce que connait le robot :
*100 1100 0000
ce qu'il a en mémoire :
$mine = [ [ '*', '1', '0', '0' ], [ '1', '1', '0', '0' ], [ '0', '0', '0', '0' ] ]
ce que mine retourne :
'*10011000000'
DETAILS TECHNIQUES
Les coordonnées sont indexées à partir de 0. Le point origine (0,0) est en haut à gauche de la grille.
Quand le robot renvoie son idée de la grille, il renvoie une chaîne, comme indiqué précédemment. Les marqueurs sont :
- '0-8'
- Case vide, avec le nombre de mines autour (info renvoie nécessairement l'une de ces valeurs au robot).
- '*'
- Indique une case comportant une mine. Si query demande une telle case la partie est perdue.
- '.'
- Indique une case inconnue.
IMPORTANT
sweeper est un programme de test fonctionnant de la même façon que les juges. Tout programme écrit avec les interfaces décrites ci-dessus devrait fonctionner avec sweeper, et avec les juges. Cependant, il n'est pas complet, et n'est fourni qu'à des fins de test.
Un robot qui ne marche pas avec sweeper sera éliminé. S'il marche avec sweeper et pas les juges, BooK se grattera la tête pour comprendre et essayer de réparer tout ça... (Si des juges différents de sweeper sont écrits...)
Seul le résultat fourni par les juges (informatiques) est pris en compte par les juges (humains) pour le concours. En particulier, les juges pourront tenir compte du temps d'exécution dans le score final ou pour départager deux gagnants.
sweeper permet avec l'option -v de voir l'évolution des recherches de votre robot. Ca peut être joli à regarder...
SCORES
Les scores pour chaque grille jouée sont calculés de la façon suivante :
- Une grille où exactement toutes les mines ont été placées correctement rapporte le maximum de points (100).
- Si le robot demande à découvrir une mine. Le jeu s'arrête. Il a un malus de 10 points.
- Si le robot abandonne, tombe sur une mine, joue plus de fois qu'autorisé ou s'est trompé dans le positionnement d'une ou plusieurs mines sur la grille, son score est égal au pourcentage de la grille estimé de façon exacte.
Quel que soit la façon de le robot procède, il existe toujours des situtations indéterminées où plusieurs solutions sont possibles.
PARTICIPATION
Chaque participant peut fait concourir autant de robots qu'il le désire. Dans le cas où plusieurs de ses robots seraient éligibles pour des prix, il ne gagnera que le plus important de ces prix.
PRIX ET ATTRIBUTION
Les prix en jeu sont :
- 5 T-shirts O'Reilly/Linux
- des calendrier 2001 O'REilly, et d'autres goodies...
L'attribution des prix n'est pas encore déterminée. Il y en aura probablement pour les participants dans toutes les zones du spectre des scores. En effet, les livres permettent aussi de s'améliorer...
Les juges (humains), après application des règles, et compte tenu des scores et de l'approche des codeurs, pourront faire preuve de l'arbitraire le plus total, en fonction de leur sens moral, esthétique ou de l'humour.