Cela a été inspiré par un mini-jeu Minecraft. Les règles sont assez simples: vous courez et sautez, et chaque bloc sur lequel vous marchez disparaît une fois que vous avez marché dessus. Le but est d'être le dernier à gauche.
Votre bot devrait être un programme complet. Il doit accepter l'entrée comme argument de ligne de commande. L'entrée sera une carte du «monde»; Voici un exemple:
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxx xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxx xxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxx x xxxxxxxxxxxxx@xxxxxxxxxxx
xxxxxx1xxxxxxxxxxxxx xxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxx xxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxx xxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxx xxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxx xxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxx xxxxxxxxxxx
xxxxxxxxxx xxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxx xxxxxxxxxxxx
xxxxxxxxxxxxxxxxx x x xxxxxxxxxx
xxxxxxxxxxxxxxxxxxxx xxxxxxxxxxx
xxxxxxxxxxxxxx xxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxx xxx xx3xxxxxxxxxx
xxxxxxxxxxxxxxxxxxx xxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxx x
xxxxxxxxxxxxxxxxxxxxxxxxxxx xx
xxxxxxxxxxxxxxxxxxxxxxxxx 2
xxxxxxxxxxxxxxxxxxxxxxx
La légende est la suivante:
x: solid block
: empty air
@: your bot
1,2,3,4,5,6,7,8,9,0: other bots
Votre bot devrait sortir votre mouvement sous forme de paire d'entiers. Exemple: -1, 2
déplace 1 bloc vers la gauche et 2 blocs vers le bas (l'origine des coordonnées se trouve dans le coin supérieur gauche).
Vous pouvez vous déplacer jusqu'à quatre pâtés de maisons, à une distance de Manhattan, de votre position actuelle. Si vous essayez de vous déplacer plus loin, le déplacement n'est pas valide. Tout mouvement qui vous ferait dépasser le bord vous mettra sur le bord à la place. Les déplacements incorrects seront ignorés.
Une fois que vous atterrissez sur un bloc, il est retiré; si vous restez sur le même bloc au prochain tour, vous tomberez. Deux robots peuvent atterrir sur le même bloc au même tour et les deux survivent; si cela se produit, les deux bots ne se verront qu'eux-mêmes et non l'autre bot.
Si vous devez stocker des fichiers pour la persistance, veuillez le faire dans un dossier avec le nom de votre bot. Vous ne pouvez pas lire les données persistantes des autres robots s'il en existe.
Le contrôleur de correspondance est disponible sur https://paste.ee/p/Xf65d .
Veuillez utiliser des langues pouvant être exécutées sur une installation Linux ou OSX standard.
Résultats actuels (100 tours):
JumpBot 31
LookBot 27
ShyBot 26
Slow Bot 15
KnightBot 2
Moat Builder 0
UpBot 0
Random Bot 0
la source
Réponses:
Bot lent (Python)
Il se déplace en ligne et vérifie ses mouvements avant de les faire (également des suicides quand il est le dernier en vie pour éviter de longs runtimes). Il a remporté 195/200 batailles dans mon tournoi test.
Je ne suis pas un expert en python et il y a probablement 100 façons de le faire plus court / meilleur
la source
JumpBot (C)
Essayez de sauter sur le terrain avec le plus de mouvements possibles au prochain tour.
la source
LookBot (C)
Bot simple dont les performances sont similaires à Slow Bot, sauf que celui-ci effectue des mouvements aléatoires possibles. Prévoyez d'améliorer cela à PredictBot.
la source
Moat Builder (Python)
Si je creuse un fossé autour de moi, personne à l'extérieur ne peut me visser.
... également connu sous le nom de "Peignez-vous dans un simulateur de coin 2016".
la source
Monte (Python)
Désolé, ce jeu de mots devait juste être fait.
Quoi qu'il en soit, ce bot fonctionne en effectuant une recherche d'arbre Monte Carlo sur tous les ensembles de mouvements possibles. Pensez à JumpBot, seulement plus en profondeur.
Pour fonctionner, il a besoin d'un argument de ligne de commande supplémentaire (peut être spécifié dans le contrôleur). Il contrôle combien de temps le bot doit rechercher (en ms); J'ai utilisé 750-1500 dans les tests.
Code:
Essais
25 tours:
100 tours:
200 tours:
Toutes les simulations ci-dessus ont utilisé un temps de recherche de 750. Ce bot serait probablement encore meilleur avec un temps de recherche plus long (je ne sais pas quel est le maximum autorisé).
Améliorations
Ce bot a encore besoin d'améliorations dans:
la source
ShyBot (Python)
Ce bot n'aime vraiment pas les autres bots et essaiera de s'éloigner si possible. ShyBot est également très prudent quant à sa position; il ne marchera même pas sur d'autres robots. Cependant, ShyBot perd encore souvent, ce qui rend l'insécurité.
la source
KnightBot (Java)
Cela fonctionne comme les échecs et est nommé comme Twitch ...
...
.........
............................Désolé...
SwirlyBot (Java)
Ce ne sont clairement pas les solutions optimales, mais j'espère qu'elles seront utiles pour les tests de niveau intermédiaire.
la source
Bot aléatoire, UpBot
Deux bots de départ pour affronter:
Bot aléatoire: un exemple de robot qui se déplace de manière aléatoire.
UpBot: Un exemple de bot qui monte.
la source
StalkerBot (Python)
Sera aussi proche que possible du bot le plus proche qu'il voit. Cible le suicide automatique (inutile) de Slow Bot. (Si je suis sur la même case que lui et qu'il n'y a pas d'autres joueurs, il ne me verra pas et se suicidera.)
la source