Alle Bots in der Kampfarena wurden plötzlich überlistet und niemand kann erklären, warum. Aber wen interessiert es, solange sie noch kämpfen können - obwohl Brainfuck die einzige Sprache ist, die sie noch verstehen.
Es ist schon eine Weile her, dass ich den Gewinner von BrainFuckedBotsForBattling bekannt gebe: Herzlichen Glückwunsch an LymiaAluysia, die mit NyurokiMagicalFantasy gewonnen hat!
Anzeigetafel
| 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 |
Endgültige Ergebnisse vom 09.10.2014
EDIT6 : Verworfene Protokolle aufgrund extremer Größe und Laufzeit. Sie können sie selbst generieren, indem Sie die Zeilen in auskommentieren RunThisTournament.py
.
EDIT5 : Abkürzungsbehandlung im Controller implementiert, keine großen Laufzeiten mehr. Dies hat den Nebeneffekt, dass Zahlen und Klammern nicht mehr als Kommentare behandelt werden. Sie können sie weiterhin verwenden, wenn Sie eine kommentierte Version bereitstellen möchten. Es wäre jedoch sehr hilfreich, wenn auch eine unkommentierte Version Ihres Codes vorhanden wäre , sodass ich die Kommentare nicht manuell entfernen muss. Vielen Dank!
EDIT4 : Der Titel wurde geändert, da das Turnier von den aktuellen Netzwerkfragen entfernt wurde. Vielen Dank an @Geobits für den Hinweis!
BEARBEITEN3 : Kommentare in bf-Programmen, die aufgrund eines unerwarteten Ergebnisses entfernt wurden, sollten jetzt behoben werden. Wenn jemand ein Problem mit dem Entfernen seiner Kommentare hat, melden Sie dies bitte.
EDIT2 : Da es auf meinem ziemlich langsamen Computer zu einer arkanen Laufzeit kam, habe ich das Zeitlimit von 100000 Zyklen auf 10000 Zyklen gesenkt. Nicht, dass irgendjemand das Ergebnis eines laufenden Spiels über diesen Punkt hinaus gedreht hätte.
EDIT1 : Ein Fehler im Konvertierungsskript wurde behoben, der dazu führte, dass der Interpreter Zahlen in kommentierten Programmen nicht ignorierte.
Beschreibung
Dies ist ein Brainfuck- Turnier, das von BF Joust inspiriert wurde . Zwei Bots (Brainfuck-Programme) kämpfen in einer Arena, die durch ein Memory-Tape dargestellt wird, gegeneinander. Jede Zelle kann Werte von -127 bis 128 enthalten und an ihren Grenzen umbrechen (also 128 + 1 = -127).
Gültige Anweisungen sind ähnlich wie beim regulären Brainfuck. Das bedeutet:
+ : 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
Die Arena hat eine Größe von 10 bis 30 Zellen, die pseudozufällig für jede Schlacht ausgewählt werden. An beiden Enden befindet sich ein "Flag", das einen Anfangswert von 128 hat, während alle anderen Zellen auf Null gesetzt werden. Das Ziel Ihres Bots ist es, die feindliche Flagge für 2 aufeinanderfolgende Zyklen auf Null zu setzen, bevor er Ihre eigene Flagge auf Null setzt.
Jeder Bot startet bei seiner eigenen Flagge, die aus seiner eigenen Perspektive Zelle [0] ist. Der Gegner befindet sich auf der anderen Seite des Bandes.
[ 128 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 128 ]
^ ^
my bot other bot
Beide Bots führen ihre Aktion gleichzeitig aus, dies wird als ein Zyklus angesehen. Das Spiel endet nach 10000 Zyklen oder sobald eine der Gewinnbedingungen erreicht ist. Wenn eines der Programme sein Ende erreicht, hört es einfach auf, bis zum Ende des Spiels etwas zu tun, kann aber trotzdem gewinnen.
Gewinnbedingungen
Ihr Bot gewinnt unter einer der folgenden Bedingungen:
- Die Flagge deines Feindes wird vor deiner genullt
- Ihr Feind bewegt seinen Zeiger aus dem Band (wird
>
auf Ihre Flagge oder<
auf eigene Faust ausgeführt) - Der Wert Ihrer Flagge ist nach 10000 Zyklen weiter von 0 entfernt als der Wert der Flagge Ihres Gegners
Regeln
Ihr Beitrag sollte einen Namen für Ihren Bot und dessen Code enthalten.
- Sie können die folgende Abkürzungssyntax verwenden, um den Code besser lesbar zu machen:
- ZB
(+)*4
ist das Gleiche wie++++
, dies gilt für alle Befehle mit Ausnahme nicht übereinstimmender Klammern in Klammern, da die Schleifenlogik mit der Abkürzungslogik kollidiert. Bitte verwenden Sie[-[-[-
statt([-)*3
- ZB
- Jedes andere Zeichen als
+-><[].
ist ein Kommentar und wird daher mit Ausnahme der()*
Abkürzungen ignoriert
Bots, die sich nicht an die Regeln halten, werden vom Turnier ausgeschlossen.
- Es ist nur einfaches Brainfuck erlaubt, keine anderen Varianten, die Prozeduren oder arithmetische Operationen unterstützen
- Der Quellcode Ihres Bots sollte keine unvergleichlichen Klammern enthalten
Sie können sich darüber informieren , grundlegende Strategien aber nicht eines anderen eigenen Code für Ihre eigenen Bot verwenden.
Wertung
Die Punktzahl eines Bots wird durch die Anzahl der Siege gegen alle anderen Bots bestimmt. Eine Begegnung zwischen 2 Bots besteht aus 10 Übereinstimmungen mit unterschiedlichen Längen des Speicherbands, was eine maximale Punktzahl von 10 Punkten pro Begegnung ergibt. Ein Unentschieden bringt für dieses Spiel keine Punkte.
Steuerungsprogramm
Sie finden das Steuerungsprogramm auf Github, zusammen mit den vollständigen Protokollen der Kämpfe. Die Rangliste wird hier veröffentlicht, sobald sie erstellt wurde.
Fühlen Sie sich frei, das Repository zu klonen und Ihren Bot auf eigene Faust gegen die anderen auszutesten. Verwenden Sie python Arena.py yourbot.bf otherbot.bf
, um ein Match auszuführen. Sie können die Bedingungen mit den Befehlszeilenflags -m
und ändern -t
. Wenn Ihr Terminal keine ANSI-Escape-Sequenzen unterstützt, --no-color
deaktivieren Sie die farbige Ausgabe mit dem Flag.
Beispiel Bots
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
Der DecoyBot gewinnt jedes Match mit einer Bandlänge von mehr als zehn, da der FastClearBot die kleinen, aber nicht die größeren Köder meiden kann. Die einzige Situation, in der der FastClearBot gegen DecoyBot gewinnen kann, ist, wenn er schnell genug ist, um die feindliche Flagge zu erreichen, bevor sein Gegner große Köder aufgebaut hat.