Tous les robots de l'arène de combat ont soudainement été pris au piège et personne ne peut expliquer pourquoi. Mais peu importe, tant qu'ils sont encore capables de se battre - même si Brainfuck est la seule langue qu'ils comprennent maintenant.
Cela fait un moment depuis la dernière soumission alors je vais enfin annoncer le gagnant de BrainFuckedBotsForBattling: Félicitations à LymiaAluysia pour sa victoire avec NyurokiMagicalFantasy!
Tableau de bord
| Owner | Bot Score |
|--------------------|-------------------------------|
| LymiaAluysia | NyurokiMagicalFantasy - 600 |
| Sylwester | LethalLokeV2.1 - 585 |
| weston | MickeyV4 - 584 |
| Sp3000 | YandereBot - 538 |
| Comintern | CounterPunch - 512 |
| Sylwester | BurlyBalderV3 - 507 |
| LymiaAluysia | NestDarwin - 493 |
| IstvanChung | Bigger - 493 |
| Manu | DecoyMaster - 489 |
| archaephyrryx | Wut - 478 |
| DLosc | LightfootPlodder - 475 |
| archaephyrryx | 99BottlesOfBats - 461 |
| Sylwester | TerribleThorV2 - 458 |
| MikaLammi | WallE2.0 - 443 |
| Mikescher | MultiVAC - 441 |
| archaephyrryx | Twitcher - 439 |
| Timtech | MetalDetector - 438 |
| AndoDaan | BeatYouMate - 433 |
| csarchon | TheWallmaster - 427 |
| Sparr | SeeSawRush - 412 |
| archaephyrryx | Stitcher - 406 |
| PhiNotPi | RandomOscillator - 403 |
| ccarton | AnybodyThere - 398 |
| Comintern | 2BotsOneCup - 392 |
| kaine | SternBot - 387 |
| PhiNotPi | EvoBot2 - 385 |
| PhiNotPi | EvoBot1 - 381 |
| Brilliand | TimedAttack - 373 |
| Sylwester | ReluctantRanV2 - 373 |
| AndoDaan | PrimesAndWonders - 359 |
| Nax | TruthBot - 357 |
| DLosc | Plodder - 356 |
| weston | FastTrapClearBot - 345 |
| MikaLammi | PolarBearMkII - 340 |
| Sp3000 | ParanoidBot - 336 |
| Moop | Alternator - 319 |
| TestBot | FastClearBot - 302 |
| icedvariables | PyBot - 293 |
| TestBot | DecoyBot - 293 |
| kaine | BestOffense - 291 |
| Geobits | Backtracker - 289 |
| bornSwift | ScribeBot - 280 |
| IngoBuerk | Geronimo - 268 |
| flawr | CropCircleBot - 239 |
| plannapus | CleanUpOnAisleSix - 233 |
| frederick | ConBot - 230 |
| frederick | 128Bot - 222 |
| AndoDaan | EndTitled - 219 |
| PhiNotPi | CloakingDeviceBot - 215 |
| AndoDaan | GetOffMate - 206 |
| DLosc | ScaredyBot - 205 |
| isaacg | CleverAndDetermined - 202 |
| PhiNotPi | CantTouchThis - 202 |
| Moop | StubbornBot - 174 |
| Cruncher | StallBot - 168 |
| IngoBuerk | Gambler - 157 |
| BetaDecay | RussianRoulette - 129 |
| flawr | DoNothingBot - 123 |
| SebastianLamerichs | Dumbot - 115 |
| mmphilips | PacifistBot - 112 |
| SeanD | DontUnderstand - 92 |
| proudHaskeller | PatientBot - 83 |
| frederick | Dumberbot - 70 |
| flawr | MetaJSRandomBot - 68 |
| Darkgamma | TheRetard - 61 |
| BetaDecay | Roomba - 61 |
| BetaDecay | PrussianRoulette - 31 |
| frederick | Dumbestbot - 0 |
Résultats finaux du 09.10.2014
EDIT6 : Journaux supprimés en raison de leur taille et de leur temps d'exécution extrêmes. Vous pouvez les générer vous-même en décommentant les lignes RunThisTournament.py
.
EDIT5 : Gestion des abréviations implémentée dans le contrôleur, plus de temps d'exécution énorme. Cela a pour effet secondaire que les nombres et les parenthèses ne sont plus traités comme des commentaires. Vous pouvez toujours les utiliser si vous souhaitez fournir une version annotée, mais il serait très utile qu'il existe également une version non commentée de votre code . Je n'ai donc pas besoin de supprimer les commentaires manuellement. Merci!
EDIT4 : Changement du titre, car le tournoi a été retiré des questions brûlantes du réseau. Merci à @Geobits pour l'avoir signalé!
EDIT3 : Les commentaires supprimés dans les programmes bf, dus à un résultat inattendu, devraient être corrigés maintenant. Si quelqu'un a un problème avec la suppression de ses commentaires, veuillez le signaler.
EDIT2 : Puisqu'il a provoqué une exécution arcanique sur mon ordinateur très lent, j'ai réduit la limite de délai d'attente de 100 000 cycles à 10 000 cycles. Ce n’est pas que quiconque ait tourné le résultat d’un jeu en cours au-delà de ce point de toute façon.
EDIT1 : Correction d'un bug dans le script de conversion empêchant l'interprète d'ignorer les nombres dans les programmes commentés.
La description
Il s’agit d’un tournoi Brainfuck inspiré par BF Joust . Deux robots (programmes Brainfuck) se battent dans une arène représentée par une bande mémoire. Chaque cellule peut contenir des valeurs comprises entre -127 et 128 et être renvoyées à leurs limites (donc 128 + 1 = -127).
Les instructions valides sont similaires à Brainfuck ordinaire, ce qui signifie:
+ : Increment cell at your pointer's location by 1
- : Decrement cell at your pointer's location by 1
> : Move your memory pointer by 1 cell towards the enemy flag
< : Move your memory pointer by 1 cell away from the enemy flag
[ : Jump behind the matching ']'-bracket if the cell at your pointer's location equals 0
] : Jump behind the matching '['-bracket if the cell at your pointer's location is not 0
. : Do nothing
L’arène a une taille de 10 à 30 cellules qui est choisie de manière pseudo-aléatoire à chaque bataille. Aux deux extrémités se trouve un "drapeau" qui a une valeur initiale de 128, alors que toutes les autres cellules sont mises à zéro. Le but de votre bot est de mettre le drapeau de l'ennemi à zéro pendant 2 cycles consécutifs avant qu'il ne zéros votre drapeau.
Chaque bot commence à son propre drapeau, qui est la cellule [0] de son propre point de vue. L'adversaire est situé de l'autre côté de la bande.
[ 128 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 128 ]
^ ^
my bot other bot
Les deux robots exécutent leur action simultanément, ceci est considéré comme un cycle. Le jeu se termine après 10000 cycles ou dès que l’une des conditions gagnantes est atteinte. Si l'un des programmes arrive à son terme, il cesse tout simplement de faire son travail jusqu'à la fin du jeu, mais peut toujours gagner.
Conditions gagnantes
Votre bot gagne dans l'une des conditions suivantes:
- Le drapeau de votre ennemi est mis à zéro avant le vôtre
- Votre ennemi déplace son pointeur hors de la bande (s'exécute
>
sur votre drapeau ou<
sur le sien) - La valeur de votre drapeau est plus éloignée de 0 que la valeur du drapeau de votre adversaire après 10000 cycles
Règles
Votre message doit contenir un nom pour votre bot et son code.
- Vous pouvez utiliser la syntaxe d'abréviation suivante pour rendre votre code plus lisible:
- Par exemple,
(+)*4
est identique à++++
, ceci est valable pour toute instruction, à l' exception des crochets non appariés entre parenthèses, car la logique de la boucle entre en conflit avec la logique de l'abréviation. S'il vous plaît utiliser[-[-[-
au lieu de([-)*3
- Par exemple,
- Tout autre caractère qu'un
+-><[].
commentaire est donc ignoré, à l'exception()*
des abréviations.
Les bots qui ne suivent pas les règles seront exclus du tournoi.
- Seul le brainfuck de base est autorisé, aucune autre variante prenant en charge des procédures ou des opérations arithmétiques
- Le code source de votre bot ne doit pas contenir de crochets incomparables
Vous pouvez vous informer sur les stratégies de base, mais n'utilisez pas le code de quelqu'un d'autre pour votre propre bot.
Notation
Le score d'un bot est déterminé par le nombre de victoires contre tous les autres robots. Une rencontre entre deux robots consiste en 10 correspondances avec différentes longueurs de bande mémoire, ce qui donne un score maximum de 10 points par rencontre. Un match nul ne donne aucun point pour ce match.
Programme de contrôle
Vous pouvez trouver le programme de contrôle sur github, ainsi que les journaux complets des batailles. Le classement sera affiché ici une fois généré.
N'hésitez pas à cloner le référentiel et essayez vous-même votre bot contre les autres. Utilisez python Arena.py yourbot.bf otherbot.bf
pour exécuter une correspondance. Vous pouvez modifier les conditions avec les indicateurs de ligne de commande -m
et -t
. Si votre terminal ne prend pas en charge les séquences d'échappement ANSI, utilisez l' --no-color
indicateur pour désactiver la sortie en couleur.
Exemple de robots
FastClearBot.bf
(>)*9 Since the tape length is at least 10, the first 9 cells can be easily ignored
([ Find a non-zero cell
+++ Increment at first, since it could be a decoy
[-] Set the cell to zero
]> Move on to the next cell
)*21 Repeat this 21 times
DecoyBot.bf
>(+)*10 Set up a large defense in front of your flag
>(-)*10 Set up another one with different polarity
(>+>-)*3 Create some small decoys
(>[-] Move on and set the next cell to zero
. Wait one round, in case it is the enemy's flag
)*21 Repeat this 21 times
Le DecoyBot remportera chaque match avec une longueur de bande supérieure à dix, étant donné que le FastClearBot peut éviter les petits leurres, mais pas les plus grands. La seule situation dans laquelle le FastClearBot peut gagner contre DecoyBot, c'est quand il est assez rapide pour atteindre le drapeau de l'ennemi avant que son adversaire ait construit de grands leurres.
la source
Réponses:
Nyuroki Fantasy Magique
Je pense qu'il est temps de devenir sérieux ~ J'ai fini mon compilateur pour un peu de HLL pour faciliter l'écriture de programmes BF Joust. Ce fut ma première tentative sérieuse de faire quelque chose avec elle. Le concept du bot est assez simple. Il installe quelques leurres de différentes polarités, puis devient fou avec une grande manœuvre dégagée avec un décalage inversé dégagé au centre.
Oh, au fait, le résultat attendu est d'environ 577 points contre la colline du dernier tour. C'est un taux de victoire de 93%. <3
Compilé | Code source
Edit : J'ai tiré quelques victoires supplémentaires de Nyuroki.
Edit 2 : Hey, regarde, je l'ai encore fait!
Edit 3 : Après avoir lutté pendant un moment avec un bug d'analyse syntaxique stupide dans Arena.py, j'ai enfin eu une autre amélioration dans ~ C'est ce que je veux dire par "le temps de devenir sérieux", vous savez. <3
la source
)
et*
ou entre*
et nombre?Cloaking Device Bot
Ce bot essaie essentiellement de cacher sa base, ce qui permet aux autres robots de passer au-delà de la bande.
la source
Burly Balder v3
Burly Balder est une course lente et moyenne. Il fait deux grands leurres avant de passer en mode urgent. En mode pressé, la boucle utilise seulement 4 étapes pour chaque cellule zéro et pour les cellules non nulles, elle a une analyse de cas pour [-18,18] avant de réduire aveuglément avec 107 avant d'effacer avec
[-.]
. Il efface un drapeau inchangé en 242 étapes, 114 de plus qu'un incertain-*128
et 14 de moins qu'un[-]
clair naïf . Lorsqu'une cellule est libérée, il continue de laisser une traînée de -2 leurres. Il a un cas spécial uniquement pour l'index 9 pour enregistrer quelques étapes pour les jeux de taille 10 et il quitte la cellule avec un leurre.Anecdote: Balder est un dieu nordique et fils d'Odin. Il est surtout connu pour l’ histoire de sa mort : il craignait pour sa sécurité, alors les autres dieux ont essayé de prévoir et de se protéger de toute menace. Il a finalement été tué par Loki car, alors qu'ils le protégeaient contre des épées et des flèches, ils avaient oublié de le protéger contre le gui.
la source
BeatYouMate
était intelligent. Je crains que les leurres sur la plupart des robots ne deviennent encore plus gros au prochain tour jusqu'à ce qu'il y ait une pénalité. Ensuite, nous aurons peut-être d'autres stratégies plus cool qui émergent :)EvoBot 1
C'est un bot simple créé via un algorithme génétique. J'ai commencé avec un modèle et mon programme a lentement ajusté les chiffres pour créer un meilleur warrior-bot. Le code ci-dessous a été modifié pour améliorer la lisibilité.
J'ai utilisé les autres inscriptions au concours pour mesurer la condition physique des différents candidats.
Comme il s’agissait de ma première tentative d’evobot, j’ai commencé avec un modèle simple:
Je prédis que ce bot recevra un score allant de 50 à 60 ans.
Je travaille actuellement sur un modèle de leurre inversé.EvoBot 2
Ceci est un bot créé par le même algorithme génétique, mais avec le modèle suivant:
Ce bot utilise la stratégie de leurre inverse pour définir 4 leurres de hauteur variable. Le bot résultant est:
Je m'attends à ce que ce nouveau robot réussisse mieux que les précédents, gagnant probablement un score dans les années 70 (probablement beaucoup plus élevé que cela car il y a beaucoup de nouvelles entrées).
la source
Alternateur
Cela suppose que la plupart des gens mettent à zéro une cellule en y ajoutant ou en lui soustrayant, de sorte qu'en moyenne, chaque cellule prend 128 tours à zéro.
Version annotée
la source
Donc, quelqu'un d'autre ici utilise un algorithme génétique pour essayer de créer des programmes ici. Eh bien ... il y a longtemps, j'ai écrit un BF Joust evolver pour une colline en cours dans un canal IRC. J'ai décidé de donner un tour pour ce concours aussi ~
Et… contrairement à l'autre personne ayant un évolutif, mon évolutif peut en fait modifier davantage le programme plus que de compter des fois. :)
NestDarwin (génération 309)
C’est le meilleur résultat que mon évolution ait obtenu jusqu’à présent. Je ne suis pas sûr de l'utilité de la structure imbriquée dans ce cas, mais, de telles structures étaient ce que le système d'évolution est censé pouvoir faire. La performance attendue sur la colline du 27.08.2014 est de 474 points. (Calculé en lançant la bataille sur les 21 longueurs de bande et en multipliant par 10/21. Notez que cela n'est pas normalisé car cette colline a un programme supplémentaire.)
EDIT : Modification de la liste des programmes que je veux entrer dans cette colline. A évolué durant la nuit. :)
EDIT 2 : Je suis allé analyser manuellement la sortie de evolver. Malgré une apparence très différente, NestDarwin est fondamentalement une version optimisée de TinyDarwin ... Réduite manuellement (avec une fonctionnalité identique) et analysée:
Ainsi, un programme presque identique serait comme suit ... qui est fondamentalement une version super optimisée de TinyDarwin.
TinyDarwin était comme suit. Pas très différent, hun? Je vais juste le retirer de la colline. Je pensais que c'était distinct, mais ... eh bien, j'avais tort.
Il est devenu évident que la colline actuelle n'est pas assez forte pour lui permettre d'évoluer des choses beaucoup plus complexes. :(
la source
Ours polaire mk ii
Il existe deux types d' ours polaires : ceux qui se font piéger et ceux qui attrapent les autres.
Essaie de deviner la polarité de l'adversaire puis utilise cette information pour verrouiller l'adversaire dans une boucle infinie. Fonctionne bien contre les stratégies de nettoyage simples et un peu au hasard contre les autres. Les pièges peuvent être facilement évités, je pourrais donc ajouter des stratégies de sauvegarde plus tard.
la source
(]< (+)*290 (>)*9 ... [-])*2
?+
et l'autre utilise-
.[(+)*3[-]]
,[(-)*6[+]]
) et cela fonctionne très bien (au moins pour les assez petits décalages).>>>>>>>>>((-)*4[+][--.]>)*21
que le double contrôle de la cellule et le(+/-)*290
fait que la deuxième boucle se déclenche. Ce n'est pas la faute de Clear Clear.Bot pacifiste
Mon bot croit que la violence n’est jamais la solution et essaiera d’éviter le combat à tout prix.
la source
Il y a quelqu'un?
Regarde périodiquement en arrière pour déterminer quand l'ennemi a commencé à éliminer ses leurres, puis se précipite vers l'avant.
Cela semble bien se passer, mais je ne suis pas sûr que ce soit à cause de la stratégie ou tout simplement parce que j'ajoute 10 par cellule avant la suppression.
Edit: Correction d'un problème de logique. Première fois en écrivant un programme brainfuck. Il est à la hauteur de son nom.
la source
WALL-E 2.0
Se précipite à l'emplacement 9 et en ajoute 128, gagnant rapidement dans l'arène de taille 10 si l'adversaire n'a pas changé la valeur initiale du drapeau. Sur les grandes arènes, cela fonctionne comme un grand leurre. Après cela, il remplit l'espace entre l'emplacement 9 et son propre drapeau avec de grands leurres. Une fois les leurres placés, il recherche les emplacements non vides et tente de les effacer rapidement.
La version 2.0 construit des leurres plus grands et a une certaine tolérance à l'égard de la modification de la valeur d'indicateur initiale. Il peut également basculer vers une stratégie de sauvegarde si les choses commencent à paraître compliquées.
L’efficacité de ce bot repose sur deux faits:
la source
Lethal Loke V2.1 (avec gui)
C’est bien sûr un bot mortel et il tue non seulement la belle Burly Balder à gui, mais gagne presque à chaque fois contre les autres bots. C'est une course rapide et moyenne combinée. Mon test me donne un score de 567
Fichier BFJ compilé pour le combat , source du générateur Racket BFJ:
Anecdote : Loki (Loki) est un dieu de la mythologie nordique qui aime jouer avec tout le monde et le duper. Il change de forme (chez les animaux et les personnes) et va généralement de son côté. Dans les récits, il voyage souvent avec les autres dieux, les assiste, fait de petites astuces et fait bouger les choses. Outre le meurtre de Balder, il a engendré Hel (déesse de l'enfer / Helvete), la bête Fenrir et le serpent Midgard qui a lancé Ragnarok (armageddon nordique).
Comment ça fonctionne
Au début, il crée un leurre volumineux (-17), puis
+-
trace un motif jusqu’à l’indice 7. Il numérise en avant de 13 à 13, laissant une traînée de leurres (+ 10, -32) +, mais il détecte une série, il avorte. et lancez un mode précipité moyen * 1. Si aucune cellule n'est définie, il lancera également le mode lent * 3 Rush.* 1 En mode accéléré, il a détecté une activité adverse dans l'un des index 7-13 et commence à partir de l'index 2. Certains adversaires laissent un zéro et d'autres une valeur différente. Il dispose désormais d'un moyen de détecter l'activité de l'adversaire avant de leurrer indice 2-6 (-32, + 10) +. Si la cellule n'est pas une valeur attendue (-1, 1) ou s'il a fini de créer tous les leurres, il passe en mode rapide * 2.
* 2 Il s'attend à ce que le mode de pointe rapide le détecte afin que les leurres ne fonctionnent pas. Nous espérons que ceux que nous avons définis arrêtent l’adversaire et se concentrent sur les leurres adversaires. Il commence à se précipiter au point le plus éloigné que nous connaissons d'après l'analyse précédente [9,14] ou l'index 9 si nous avons été créés plus tôt que cela. Il a un cas spécial pour le premier leurre où nous venons d’ajouter 120 et 27 car il ne veut pas ramener la valeur en dessous de zéro car c’est un piège, mais pour chaque leurre après avoir été dégagés à [-8,8] avant d’augmenter de 120 et 27 étapes pénibles avant de passer à la cellule suivante.
Le mode Rush lent a été supprimé car il n'affectait pas le score de la colline actuelle et rendait mon bot un peu plus petit (mais pas beaucoup).
la source
Geronimo
Est encore plus offensant que le bot BestOffense de kaine, car il ne crée aucune défense. La stratégie est la suivante: d’autres essaieront d’être intelligents, mais cela prend des cycles. Alors passons à la partie sur laquelle nous savons que l'ennemi est présent et effaçons tout ce que nous trouvons.
Semble gagner le plus de matchs contre les exemples de bots du PO et le bot de Kaine.
la source
SternBot
Un vrai robot à moitié sérieux maintenant que tout est commencé. Aborder la nature simulaire de certains de ces bots.
la source
DoNothingBot
Ça ne fait rien
EDIT: Wow, j'ai été étonné de voir qu'il faisait un meilleur travail que plus de 20% des bots au moins =) (Cela signifie-t-il qu'il utilise une stratégie supérieure ou ....?)
la source
DoNothingBot
CounterPunch - Édité
Combinaison équilibrée de la construction d'une défense solide et de l'attaque.
Annoté:
Se défend comme @ Backtracker de Geobit , mais se défend contre les attaquants rapides en mettant un leurre rapide devant le drapeau en premier.
L'attaque est un nettoyage imbriqué avec une polarité opposée permettant d'effacer rapidement les leurres aux valeurs réduites. Dans le pire des cas, un leurre de 64 (soit la polarité).
Edit 1: Améliore l’efficacité des attaques contre les leurres (erreur de logique dans la commutation de polarité).
Edit 2: Le test indique que la pause fonctionne légèrement mieux dans la boucle la plus interne.
la source
Backtracker
Une stratégie de leurre inverse. Commencez par déposer les leurres à l'arrière, pour que personne ne saute le reste pendant que je les construis.
Si le tableau est inférieur à 20 ou plus, cela ne fonctionnera pas contre les robots d'attaque rapide, car nous nous croiserons juste avant que je ne commence à leurrer.
Note: Je ne fais pas de BF, mais c'est comme ça que ça me fait envie. Si non, s'il vous plaît laissez-moi maintenant.
la source
Je ne peux pas toucher ça
Il s'agit d'un programme axé sur la défense qui tente de déterminer comment l'adversaire nettoie les cellules et crée un leurre de taille appropriée.
Je travaille actuellement sur une version qui peut gagner contre les deux polarités.
la source
ImpatientTripwire (aka YandereBot)
Essaie d'être un déclencheur de manière à pouvoir poser des leurres (principalement) de la polarité correspondante, mais abandonne si vous prenez trop de temps et supposez que vous êtes à la parité opposée. A un tripwire inversé pour les petites planches.
Version actuelle: 1.3 - édité pour faire mieux sur des tableaux plus petits, au détriment de perdre des jeux en raison des ennemis se faufiler au cours de la vérification du fil de trépied
Anciennes versions: 1.2.1
(J'ai besoin d'un meilleur algorithme clair: /)
la source
([)*300
revenir à[[[ and so on
?Lightfoot Plodder - ÉDITÉ
Basé sur le Plodder , ce monstre rapide est capable d’avancer rapidement dans des zéros consécutifs jusqu’à atteindre quelque chose de différent de zéro (point auquel il commence à marcher comme prévu).
Maintenant amélioré avec un algorithme de skimming plus robuste, qui permet également une avance rapide via de petits leurres et des leurres plus volumineux.
Edit # 2 : Il est maintenant possible de revenir en mode écrémage s’il trouve davantage de poches de zéros.
la source
Rán v2 réticent
La stratégie est facile. Essayez de faire croire à l’adversaire que son drapeau est un leurre et qu’il passe devant le tableau et qu'il est lâche (une sorte de tripwire / vibrateur). Après 10 tours complets, elle abandonne et tente de déterminer si l'adversaire est à son drapeau et si ce n'est pas le cas, elle fabriquera -17 leurres jusqu'à ce qu'elle atteigne une cellule. La méthode de nettoyage qu'elle utilise est un cas spécial pour [-12,12] et commence à marcher comme un Lok.
Anecdote: Rán est une déesse de la mer Mythologie nordique qui emmène les marins avant leur mort en mer.
la source
Mickey V4
Pour V4, j'ai utilisé la même méthode que V3, par rapport aux bots mis à jour mais avec plus de populations concurrentes (30 et non 10).
Développé contre tous les 60 robots, y compris
BurlyBalderV3
etLethalLoke
(mais en excluant 2botsonecup qui est incomparable par ma stricte implémentation).J'ai découvert des robots extrêmement différents et des taux de réussite si je commençais avec différentes graines aléatoires. J'ai donc décidé de séparer ces différents points de départ en populations et de les laisser occasionnellement effectuer une pollinisation croisée.
En 1400 générations, 30 populations en évolution simultanée ont créé ce programme:
Je calcule le taux de gain de ce bot à 90,0% par rapport à la récolte actuelle. (Longueurs de bande 1135/125/0 gagnées / perdues / tirées).
Info V3
Taux de gain calculé de 89,2% (1124/62/74 longueurs de bande gagnées / perdues / tirées).
Info V2
Le programme de génération dispose maintenant d’une analyse permettant de déterminer quelle partie de la fin du programme est inutilisée et de la réduire avant de générer les générations suivantes. Cela signifie que des mutations aléatoires se produisent uniquement dans les parties utilisées du programme et que l'évolution est plus rapide.
72% contre la récolte en cours à l'époque. (892/204/143 longueurs de bande gagnées / perdues / tirées).
V1 info
31500 générations, seulement 12 robots ont fait face. 65% (165/80/7 longueurs de bande gagnées / perdues / tirées). J'utilise les 21 longueurs de bande.
Les robots potentiels sont classés par:
Trivia
The Naming of Cats is a difficult matter, It isn't just one of your brainfuck bots
la source
Joueur
Ceci est étroitement lié à mon bot Geronimo. Mais là où Geronimo joue un jeu sûr, le joueur tente d’être plus rapide en faisant ce qu’il fait le mieux: le jeu: il passe à la 20ème cellule et commence à zéro à partir de là.
Cela signifie qu'il pourrait facilement perdre juste parce que l'arène n'est pas si grande. Mais si c'est le cas, ce sont peut-être les quelques cycles qui comptent.
Anecdote: J'envisageais vraiment d'entrer dans un groupe de bots qui ressemblent tous à un
(>)*X(>[-])*Y
emplacementX in 9..29
etY = 30 - X
. Mais je pense que saisir vingt robots serait un peu trop :) ou même quarante si j’avais deux versions, une avec zéro-s[+]
et une avec le fait[-]
.la source
Dumbot
Un bot remarquablement stupide qui ne fait que gâcher l'environnement et espère que tous les bots contre lesquels il se bat vont disparaître.
(Je ne suis pas sûr si cela fonctionne même - cela ne commet pas d'erreur cependant!)
Annoté (avec ce que je pense qu'il fait):
(Je serai étonné si cela remporte une seule bataille)
la source
CropCircleBot
Ce bot utilise des algorithmes avancés qui ont été transmis par des extraterrestres à travers des crop circles qu’ils ont placés sur Terre. Cela changera l’humanité, engendrera d’énormes progrès technologiques et résoudra même de nombreux problèmes environnementaux.
la source
BeatYouMate
Et parce que tout le monde devrait publier un bot qui battra le premier bot qu’il publie, voici un robot leurre de 5+:
la source
CleverEtDéterminé
Définit quelques petits pièges, puis court de l'autre côté et tente de tout effacer, au-dessus ou au-dessous de zéro. Échoue
----
.la source
+++
Avant[-]
est en effet intelligent pour éviter les pièges simples!(
, puis-je le traiter comme un commentaire?MetaJSRandomBot
L'idée derrière ce bot est de rendre quelque chose de totalement aléatoire qui reste un code js valide sans trop d'inutilité. J'ai écrit le code suivant ( lien JSFiddle ) pour le générer. Permet de voir à quel point il fait =)
la source
Roulette Prussienne
Russian Roulette a fait un pari avec son ami prussien et c'est maintenant à son tour de jouer.
la source
Plus gros
La course aux armements commence !!
Les deux construisent et détruisent des murs de hauteur
1618, plus grands que la plupart des concurrents. A également un peu de logique pour battre le cloaker, les défenseurs du drapeau, les anti-alternateurs, et les bots qui assument un drapeau intactVersion annotée
la source
PatientBot
Un bot en partie sérieux. ce bot va tenter de gagner par la limite de 100 000 cycles. il ira au drapeau ennemi en mettant quelques pièges sur le chemin, le diminuera un peu, reviendra et défendra le drapeau.
il supposera que tout ce qui est plus grand que 1 ou plus petit que -1 est le drapeau, et quand il en rencontrera un, il retournera. il défend simplement en augmentant constamment. cela suppose que la plupart des programmes utiliseront soit [] pour vérifier si le drapeau est devenu 0, et donc (+) * 100000 sera beaucoup plus rapide
Edit: impossible de faire fonctionner l'interpréteur BF Joust. j'abandonne. Peut-être devriez-vous me dire comment améliorer mon code.
Edit: maintenant le bot crée la tache juste avant le drapeau 2, et après qu’il ait décrémenté le drapeau un peu, il cherche un 2. Ceci est censé annuler le scénario dans lequel le bot trouverait une cellule 0 différente de celle qui précède le drapeau.
la source
[<]
n’est pas une bonne idée, car cela se répète jusqu’à ce que la cellule placée sous votre pointeur soit égale à zéro , ce qui correspond à l’une des cellules situées devant votre drapeau ou simplement à un suicide si votre pointeur atteint le drapeau (depuis votre drapeau). est heureusement pas zéro ).