Vous connaissez probablement le Game of Life de Conway , le célèbre automate cellulaire inventé par le mathématicien John Conway. La vie est un ensemble de règles qui, ensemble, vous permettent de simuler un tableau de cellules en deux dimensions. Les règles déterminent quelles cellules du tableau vivent et lesquelles meurent. Avec un peu d'imagination, on pourrait dire que Life est un jeu à joueur nul: un jeu dont l'objectif est de trouver des modèles de comportement intéressant, comme le célèbre planeur.
Un jeu à zéro joueur ... Jusqu'à aujourd'hui. Vous devez écrire un programme qui joue le jeu de la vie - et le joue pour gagner, à la manière du roi de la colline. Votre adversaire (singulier) essaie bien sûr de faire de même. Le gagnant est soit le dernier bot avec une cellule vivante, soit le joueur avec le plus de cellules vivantes après 10000 générations.
Regles du jeu
Les règles sont presque les mêmes que pour la vie normale (B3 / S23):
- Une cellule vivante avec moins de deux voisins amis meurt de faim.
- Une cellule vivante avec deux ou trois voisins amicaux survit.
- Une cellule vivante avec plus de trois voisins amis décède de la surpopulation.
- Une cellule morte avec exactement trois voisins du même joueur s'anime pour se battre pour ce joueur s'il n'y a pas de voisins ennemis .
... mais après chaque génération, vous et votre adversaire avez la possibilité d'intervenir. Vous pouvez vous réveiller avec un maximum de 30 cellules pour vous battre. (Qui va en premier est décidé par le serveur.)
Le tableau est un carré (x, y) de cellules. Toutes les places sont initialement mortes. Les frontières ne s’enroulent pas (ce n’est pas un monde en forme de tore) et sont définitivement mortes.
Ceci est un concours dans l'esprit de Battlebots et Core Wars . Il y a un serveur central qui exécutera des bots et on peut le trouver ici
Protocole
Le serveur d'arène parle un protocole JSON simple communiqué via argv
Où Values est une chaîne encodée JSON
y_size
: le nombre maximal de carreaux avant leur disparitionx_size
: le nombre maximum de coords de carreaux avant qu'ils ne disparaissenttick_id
: le numéro de tick actuelboard
: un dictionnaire avec des clés sous la forme '(y, x)' et des valeurs sous la formebot_id
(int)bot_id
: les tuiles dans le tableau avec cet identifiant sont à vous
Exemple:
{"y_size":2000,"x_size":2000,"board":{},"bot_id":1,"tick_id":1}
Dire au serveur votre choix:
- Envoyez au serveur une liste de tuiles pour qu’elles adoptent votre couleur.
- Seuls ceux qui sont vides seront changés
- Format de liste de coordonnées imbriquées
[[0,0], [0,1], [100,22]...]
NOTE: Votre bot n'a pas du tout besoin de mettre à jour les tuiles - le serveur se met à jour lui-même
Règlement du concours
- Si votre implémentation ne respecte pas le protocole, son tour sera perdu; Le serveur n'assume aucun changement d'état
- Vous n'êtes pas autorisé à tirer volontairement parti d'une défaillance du serveur d'arène.
- Demandez à votre IA de décider de se déplacer dans un moment sain. S'il vous plaît envoyer votre prochain déménagement aussi rapidement que raisonnablement possible.
- Enfin, s'il vous plaît soyez gentil avec le serveur. C'est là pour votre plaisir.
- Ne pas suivre ces règles peut entraîner une disqualification.
- En cas d'égalité, les deux joueurs ont 1 victoire ajoutée à leur total
Faire fonctionner le contrôleur vous-même
La source du contrôleur peut être trouvée ici . Il y a 2 manières de faire fonctionner le contrôleur:
- Mode compétition (terminal)
- Mis en place avec
python3 get_answers.py
- Lancez une compétition tous contre tous avec chaque bot en le confrontant les uns avec les autres.
- Mis en place avec
- Mode de test (GUI)
- Courir
python3 nice_gui.py
- Cliquez sur
Pull Answers
- Si vous souhaitez ajouter votre propre réponse avant de la publier, cliquez dessus
File -> Add manual answer
, recherchez le fichier et choisissez la langue dans laquelle il est écrit. - Si votre langue n'est pas présente, envoyez-moi une requête ping et essayez de l'installer sur le serveur. Je l'exécuterai (les instructions d'installation et d'exécution seraient également utiles!)
- Choisissez 2 robots pour vous opposer
- Cliquez sur
Run
- Regarde le jeu...
- Courir
- Installation
- Requiert python3
- get_answers requiert bs4 et html5lib
- Le contrôleur requiert un moyen d’exécuter des fichiers .sh (MinGW sur Windows)
Notation
Le bot avec le plus grand nombre de victoires à partir du 12/07/2016
12 juillet14/07/2016
(le 14 juillet, ne sait pas comment gérer un bot) gagne.
Vous pouvez demander de l'aide avec le contrôleur / interface graphique dans cette salle de discussion.
Cette question est en développement depuis 2014 et était la question la plus votée dans le bac à sable. Un merci tout spécial à Wander Nauta (auteur et concept original), au chat PPCG (commentaires et aide) et à tous ceux qui ont fait des commentaires dans le post Sandbox (plus de commentaires).