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.
quelle
Antworten:
Nyuroki Magische Fantasie
Ich denke, es ist an der Zeit, ernst zu werden ~ Ich habe meinen Compiler für eine kleine HLL fertiggestellt, um das Schreiben von BF Joust-Programmen zu vereinfachen. Dies war mein erster ernsthafter Versuch, etwas daraus zu machen. Das Konzept des Bots ist ziemlich einfach. Es setzt ein paar Lockvögel unterschiedlicher Polarität auf, dann wird es verrückt mit einem großen Wackelspiel und einem umgekehrten Versatz in der Mitte.
Oh, übrigens, die erwartete Punktzahl beträgt ungefähr 577 Punkte gegenüber dem Hügel der letzten Runde. Das ist eine Gewinnquote von 93%. <3
Kompiliert | Quellcode
Edit : Ich habe ein paar Siege mehr aus Nyuroki gequetscht.
Edit 2 : Hey, schau, ich habe es wieder getan!
Edit 3 : Nachdem ich eine Weile mit einem dummen Parsing-Bug in Arena.py gerungen habe, habe ich endlich eine weitere Verbesserung in ~ Dies ist, was ich unter "Zeit zum Ernst werden" verstehe. <3
quelle
)
und*
oder zwischen*
und Nummer hatten?Tarngerät Bot
Dieser Bot versucht im Grunde, seine Basis zu verbergen, so dass andere Bots direkt daran vorbei und vom Band entfernt werden.
quelle
Burly Balder v3
Burly Balder ist ein mittelschwerer, langsamer Ansturm. Es macht zwei große Lockvögel, bevor es in den Rush-Modus geht. Im Rush-Modus hat es eine Schleife, die nur 4 Schritte pro Null-Zelle verwendet, und wenn es sich um eine Nicht-Null-Zelle handelt, hat es eine Fallanalyse für [-18,18], bevor es blind mit 107 reduziert, bevor es mit gelöscht wird
[-.]
. Er setzt in 242 Schritten eine unveränderte Flagge frei, 114 mehr als eine unsichere-*128
und 14 weniger als eine naive[-]
. Wenn eine Zelle geräumt ist, hinterlässt er weiterhin eine Spur von -2 Ködern. Er hat einen Sonderfall nur für Index 9, um einige Schritte für Spiele der Größe 10 zu speichern, und es verlässt die Zelle mit einem Lockvogel.Wissenswertes: Balder ist ein nordischer Gott und Sohn von Odin. Er ist vor allem für die Geschichte seines Todes bekannt : Er hatte Angst um seine Sicherheit, also versuchten die anderen Götter, jede Bedrohung vorherzusagen und abzuwehren. Er wurde schließlich von Loki getötet, da sie vergaßen, ihn vor Mistelzweigen zu schützen, während sie ihn vor Schwertern und Pfeilen schützten.
quelle
BeatYouMate
warst schlau. Ich befürchte, dass die Lockvögel der meisten Bots in der nächsten Runde noch größer werden, bis sie eine Strafe erhalten. Dann werden vielleicht noch weitere coole Strategien auftauchen :)EvoBot 1
Dies ist ein einfacher Bot, der über einen genetischen Algorithmus erstellt wurde. Ich begann mit einer Vorlage und mein Programm passte die Zahlen langsam an, um einen besseren Krieger-Bot zu erstellen. Der folgende Code wurde bearbeitet, um die Lesbarkeit zu verbessern.
Die anderen Wettbewerbsbeiträge habe ich genutzt, um die Fitness der verschiedenen Kandidaten zu messen.
Da dies mein erster Versuch mit einem Evobot war, begann ich mit einer einfachen Vorlage:
Ich gehe davon aus, dass dieser Bot eine Punktzahl im Bereich von 50 bis 60 Jahren erhalten wird.
Ich arbeite gerade an einer Reverse-Decoy-Vorlage.EvoBot 2
Dies ist ein Bot, der mit demselben genetischen Algorithmus erstellt wurde, jedoch mit der folgenden Vorlage:
Dieser Bot verwendet die Reverse-Decoy-Strategie, um 4 Lockvögel unterschiedlicher Höhe einzustellen. Der resultierende Bot ist:
Ich erwarte, dass dieser neue Bot besser abschneidet als die vorherigen Bots und möglicherweise in den 70er Jahren ein Ergebnis erzielt (wahrscheinlich viel höher, da es viele neue Einträge gibt).
quelle
Generator
Es wird davon ausgegangen, dass die meisten Benutzer eine Zelle auf Null setzen, indem sie diese entweder addieren oder subtrahieren. Im Durchschnitt dauert es also für jede Zelle 128 Runden bis Null.
Kommentierte Version
quelle
Also, jemand anderes hier benutzt einen genetischen Algorithmus, um hier Programme zu erstellen. Nun ... vor langer Zeit habe ich einen BF-Joust-Evolver für einen laufenden Hügel in einem IRC-Kanal geschrieben. Ich habe beschlossen, es auch für diesen Wettbewerb zu versuchen ~
Und ... im Gegensatz zu der anderen Person mit einem Evolver kann mein Evolver tatsächlich mehr vom Programm ändern als die Anzahl der Wiederholungen. :)
NestDarwin (Generation 309)
Dies ist das beste Ergebnis, das mein Evolver bisher erzielt hat. Ich bin mir nicht sicher, wie sehr die verschachtelte Struktur in diesem Fall hilft, aber Strukturen wie diese sollten vom Evolver unterstützt werden. Die erwartete Leistung am 27.08.2014 beträgt 474 Punkte. (Berechnet durch Ausführen des Kampfes auf allen 21 Bandlängen und Multiplizieren mit 10/21. Beachten Sie, dass dies nicht normalisiert ist, da auf diesem Hügel ein zusätzliches Programm vorhanden ist.)
EDIT : Geänderte Liste der Programme, die ich in diesen Hügel eingeben möchte. Über Nacht lief Evolver. :)
EDIT 2 : Ich habe die Ausgabe des Evolvers manuell analysiert. Obwohl NestDarwin sehr unterschiedlich aussieht, ist es im Grunde eine optimierte Version von TinyDarwin ... Manuell minimiert (mit identischer Funktionalität) und analysiert:
Also, ein fast identisches Programm wäre wie folgt ... das ist im Grunde eine super optimierte Version von TinyDarwin.
TinyDarwin war wie folgt. Nicht sehr verschieden, hun? Ich ziehe es einfach vom Hügel zurück. Ich dachte, es sei eindeutig, aber ... nun, ich habe mich geirrt.
Es hat sich gezeigt, dass der aktuelle Hügel nicht stark genug ist, um komplexere Dinge zu entwickeln. :(
quelle
Eisbär Mk II
Es gibt zwei Arten von Eisbären : diejenigen, die gefangen werden, und diejenigen, die andere Menschen fangen.
Versucht, die Polarität des Gegners zu erraten und verwendet diese Informationen, um den Gegner in eine Endlosschleife zu locken. Funktioniert gut gegen einfache Clearing-Strategien und etwas zufällig gegen andere. Überfüllungen können leicht vermieden werden, so dass ich später einige Sicherungsstrategien hinzufügen kann.
quelle
(]< (+)*290 (>)*9 ... [-])*2
?+
und die andere verwendet-
.[(+)*3[-]]
,[(-)*6[+]]
) und es funktioniert super (zumindest für ganz kleine Offsets).>>>>>>>>>((-)*4[+][--.]>)*21
das zu testen, die die Zelle doppelt überprüfen, und Sie haben(+/-)*290
die zweite Off-Sync-Schleife ausgelöst. Nicht der Fehler des Offset-Clear.Pazifistischer Bot
Mein Bot glaubt, dass Gewalt niemals die Antwort ist und wird versuchen, Kämpfe um jeden Preis zu vermeiden.
quelle
Jemand da?
Schaut regelmäßig nach hinten, um festzustellen, wann der Feind damit begonnen hat, seine Köder zu räumen, und eilt dann voran.
Scheint gut zu sein, aber ich bin mir nicht sicher, ob das an der Strategie liegt oder nur daran, dass ich vor dem Löschen jeder Zelle 10 hinzufüge.
Bearbeiten: Ein Logikproblem wurde behoben. Zum ersten Mal ein Brainfuck-Programm schreiben. Es macht seinem Namen alle Ehre.
quelle
WAND-E 2.0
Rennt zu Position 9 und fügt 128 hinzu. Gewinnt schnell in der Arena der Größe 10, wenn der Gegner den anfänglichen Flaggenwert nicht geändert hat. Auf größeren Arenen funktioniert dies als großer Köder. Danach füllt es den Raum zwischen Position 9 und eigener Flagge mit großen Ködern. Wenn Lockvögel platziert werden, wird nach nicht leeren Stellen gesucht und versucht, diese schnell zu löschen.
Version 2.0 baut größere Täuschkörper und hat eine gewisse Toleranz gegen das Ändern des anfänglichen Flag-Werts. Es kann auch zu einer Backup-Strategie wechseln, wenn die Dinge haarig aussehen.
Die Wirksamkeit dieses Bots basiert auf zwei Fakten:
quelle
Lethal Loke V2.1 (mit Mistel)
Dies ist natürlich ein tödlicher Bot und er tötet nicht nur den schönen Burly Balder a mit Mistel, sondern gewinnt fast jedes Mal auch gegen die anderen Bots. Es ist ein kombinierter mittlerer und schneller Ansturm. Mein Test gibt mir eine Punktzahl von 567
Kompilierte BFJ-Datei für den Kampf , Racket BFJ-Generator Quelle:
Trivia : Loke (Loki) ist ein Gott in der nordischen Mythologie, der gerne mit allen spielt und sie austrickst. Er ist ein Gestaltwandler (in Tiere und Menschen) und geht normalerweise seine eigenen Wege. In den Geschichten reist er oft mit und hilft den anderen Göttern und macht kleine Tricks und rührt Dinge auf. Er hat nicht nur Balder getötet, sondern auch Hel (Göttin der Hölle / Helvete), das Biest Fenrir und die Midgard-Schlange gezeugt, die Ragnarok (Nordisches Armageddon) startet.
Wie es funktioniert
Zu Beginn macht er einen großen (-17) Lockvogel und dann ein
+-
Muster bis zum Index 7. Er tastet vorwärts von bis 13 ab und hinterlässt eine Spur von (+ 10, -32) + Lockvögeln, aber wenn er einen Satz erkennt, bricht er ab und starte einen mittleren * 1 Rush-Modus. Wenn keine Zellen gesetzt sind, startet er auch den langsamen * 3 Rush-Modus.* 1 Im Modus "Mittlerer Ansturm" hat er die Aktivität eines Gegners in einem der Indizes 7-13 erkannt und startet bei Index 2. Einige Gegner hinterlassen eine Null und andere einen anderen Wert. Er hat nun die Möglichkeit, die Aktivität eines Gegners zu erkennen, bevor er Lockvögel macht Index 2-6 (-32, + 10) +. Wenn die Zelle nicht den erwarteten Wert (-1, 1) hat oder alle Täuschungsmanöver beendet sind, wechselt er in den schnellen * 2-Rush-Modus.
* 2 Der Fast-Rush-Modus, von dem er vermutet, dass er erkannt wurde, sodass Köder nicht funktionieren. Wir hoffen, dass diejenigen, die wir bereits festgelegt haben, den Gegner stoppen und sich darauf konzentrieren, durch die Köder des Gegners zu rennen. Er beginnt an dem weitesten Punkt zu eilen, den wir aufgrund des vorherigen Scans [9,14] oder Index 9 kennen, wenn wir früher gemacht wurden. Er hat einen Sonderfall für den ersten Lockvogel, bei dem wir nur 120 addieren und 27 plotten, da er den Wert nicht unter Null reduzieren möchte, falls es sich um eine Falle handelt, aber für jeden Lockvogel, nachdem wir bei [-8,8] wackeln, bevor wir um erhöhen 120 und 27 Schritte vorwärts zur nächsten Zelle.
Der Slow Rush-Modus wurde entfernt, da er sich nicht auf die Punktzahl des aktuellen Hügels auswirkte und meinen Bot ein wenig kleiner (aber nicht sehr) macht.
quelle
Geronimo
Ist noch offensiver als Kaines BestOffense-Bot, da er keine Verteidigung aufbaut. Die Strategie hier lautet: Andere werden versuchen, klug zu sein, aber klug zu sein braucht Zyklen. Kommen wir also zu dem Teil, in dem sich der Feind befindet, und klären Sie alles, was wir finden.
Scheint die meisten Matches gegen die Beispielbots des OP und Kaines Bot zu gewinnen.
quelle
SternBot
Ein wirklicher halb ernster Bot, jetzt wo die Dinge angefangen haben. Behandlung der Ähnlichkeit einiger dieser Bots.
quelle
DoNothingBot
Es macht nichts.
EDIT: Wow, ich war erstaunt zu sehen, dass es einen besseren Job gemacht hat als die mindestens 20% aller Bots =) (Bedeutet das, dass es eine überlegene Strategie verwendet oder ....?)
quelle
DoNothingBot
CounterPunch - Bearbeitet
Ausgewogene Kombination aus Aufbau einer starken Verteidigung und anschließendem Angriff.
Kommentiert:
Verteidigt sich ähnlich wie @ Geobits Backtracker , aber verteidigt sich gegen schnelle Angreifer, indem zuerst ein schneller Köder vor die Flagge gesetzt wird.
Attack ist verschachteltes Löschen mit entgegengesetzter Polarität, um Lockvögel mit kleineren Werten schnell zu beseitigen. Das schlimmste Szenario sollte ein Lockvogel von 64 sein (beide Polaritäten).
Edit 1: Verbessert die Angriffseffizienz gegen Täuschkörper (hatte einen logischen Fehler bei der Polaritätsumschaltung).
Edit 2: Das Testen zeigt an, dass die Pause in der innersten Schleife etwas besser funktioniert.
quelle
Backtracker
Eine Reverse-Decoy-Strategie. Legen Sie Lockvögel von vorne nach hinten ab, damit niemand den Rest überspringt, während ich sie baue.
Wenn das Board weniger als 20 oder so groß ist, funktioniert dies nicht bei Fast-Attack-Bots, da wir uns nur überholen, bevor ich anfange zu täuschen.
Hinweis: Ich bin kein BF, aber so macht es mir was ich will. Wenn nicht, bitte lassen Sie mich jetzt.
quelle
Kann das nicht berühren
Dies ist ein verteidigungsorientiertes Programm, mit dem versucht wird, festzustellen, wie der Gegner Zellen räumt, und ein Lockvogel mit der entsprechenden Größe erstellt wird.
Ich arbeite derzeit an einer Version, die gegen beide Polaritäten gewinnen kann.
quelle
Ungeduldiger Tripwire (aka YandereBot)
Versucht, ein Stolperdraht zu sein, damit er (meistens) mit der entsprechenden Polarität Täuschungsmanöver auslöst, gibt jedoch auf, wenn Sie zu lange brauchen, und geht davon aus, dass Sie die entgegengesetzte Parität haben. Hat einen umgekehrten Tripwire für kleine Boards.
Aktuelle Version: 1.3 - Bessere Leistung auf kleineren Brettern auf Kosten von Spielverlusten aufgrund von Feinden, die sich während der Tripwire-Überprüfung vorbeischleichen
Frühere Versionen: 1.2.1
(Ich brauche einen klareren Algorithmus: /)
quelle
([)*300
zurück zu ändern[[[ and so on
?Lightfoot Plodder - BEARBEITET
Basierend auf dem Plodder kann dieser schnelle Koloss schnell durch aufeinanderfolgende Nullen " vorspulen" , bis er einen Wert ungleich Null erreicht (an diesem Punkt beginnt er wie erwartet mit dem Trotten).
Verbessert mit einem robusteren Skimming-Algorithmus, der auch das schnelle Vorwärtsspulen durch kleine und größere Täuschkörper ermöglicht.
Edit # 2 : Kann jetzt wieder zum Überfliegen zurückkehren, wenn mehr Nullentaschen gefunden werden.
quelle
Widerstrebende Rán v2
Die Strategie ist einfach. Versuchen Sie, die Gegnerin dazu zu bringen, zu glauben, dass ihre Flagge ein Köder ist, und gehen Sie am Brett vorbei und locker (eine Art Tripwire / Vibrator). Nach 10 vollen Runden gibt sie auf und versucht festzustellen, ob die Gegnerin an ihrer Fahne ist, und wenn nicht, macht sie -17 Täuschungsmanöver, bis sie eine festgelegte Zelle trifft. Die Clearing-Methode, die sie verwendet, ist ein Spezialfall für [-12,12] und beginnt, ähnlich wie Loke zu plotten.
Wissenswertes: Rán ist eine Meeresgöttin der nordischen Mythologie, die Seeleute nimmt, bevor sie auf See sterben.
quelle
Mickey V4
Für V4 habe ich die gleiche Methode wie für V3 verwendet, gegen die aktualisierten Bots, aber mit mehr gleichzeitigen Populationen (30, nicht 10).
Entwickelt gegen alle 60 Bots, einschließlich
BurlyBalderV3
undLethalLoke
(außer 2botsonecup, was durch meine strikte Implementierung nicht kompilierbar ist).Ich entdeckte wild unterschiedliche Bots und Erfolgsraten, wenn ich mit verschiedenen zufälligen Samen begann. Deshalb habe ich beschlossen, diese verschiedenen Ausgangspunkte in Populationen aufzuteilen und sie gelegentlich durch Fremdbestäubung untersuchen zu lassen.
In 1400 Generationen haben 30 sich gleichzeitig entwickelnde Bevölkerungsgruppen dieses Programm erstellt:
Ich berechne die Gewinnrate dieses Bots auf 90,0% gegenüber der aktuellen Ernte. (1135/125/0 Bandlängen gewonnen / verloren / gezogen).
V3 info
Berechnete Gewinnrate von 89,2% (1124/62/74 Bandlängen gewonnen / verloren / gezogen).
V2 info
Das Generierungsprogramm verfügt nun über eine Analyse, um festzustellen, welcher Teil des Programmendes nicht verwendet wird, und schneidet ihn ab, bevor die nächsten Generierungen daraus generiert werden. Dies bedeutet, dass zufällige Mutationen nur in den verwendeten Programmteilen auftreten und die Entwicklung daher schneller verläuft.
72% gegen die aktuelle Ernte zu der Zeit. (892/204/143 Bandlängen gewonnen / verloren / gezogen).
V1 info
31500 Generationen standen nur 12 Bots gegenüber. 65% (165/80/7 Bandlängen gewonnen / verloren / gezogen). Ich benutze alle 21 Bandlängen.
Potenzielle Bots sind sortiert nach:
Trivia
The Naming of Cats is a difficult matter, It isn't just one of your brainfuck bots
quelle
Spieler
Dies hängt eng mit meinem Geronimo-Bot zusammen. Aber wo Geronimo eine sichere Sache spielt, versucht der Spieler, schneller zu sein, indem er das tut, was er am besten kann - Glücksspiel: Er geht in die 20. Zelle und beginnt von dort aus mit der Nullstellung.
Das bedeutet, dass es leicht verlieren kann, nur weil die Arena nicht so groß ist. Aber wenn es so ist, könnten es die wenigen Zyklen sein, die zählen.
Fun Fact: Ich habe wirklich darüber nachgedacht, ein paar Bots einzutragen, die alle so aussehen wie
(>)*X(>[-])*Y
woX in 9..29
undY = 30 - X
. Aber ich denke, die Eingabe von zwanzig Bots wäre etwas zu viel :) Oder sogar vierzig, wenn ich zwei Versionen hätte, eine mit Null[+]
und eine mit Null[-]
.quelle
Dumbot
Ein bemerkenswert dummer Bot, der nur mit der Umwelt herumwirbelt und hofft, dass die Bots, mit denen er kämpft, vom Band laufen.
(Ich bin mir nicht sicher, ob das überhaupt funktioniert - es kommt aber nicht zu Fehlern!)
Kommentiert (mit dem, was ich denke, dass es tut):
(Ich werde gestaffelt sein, wenn dies eine einzelne Schlacht gewinnt)
quelle
CropCircleBot
Dieser Bot verwendet fortschrittliche Algorithmen, die von Außerirdischen durch Kornkreise übertragen wurden, die sie auf der Erde platziert haben. Es wird die Menschheit verändern, enorme technologische Fortschritte bringen und sogar viele Umweltprobleme lösen.
quelle
BeatYouMate
Und weil jeder einen Bot posten sollte, der den ersten Bot schlägt, den er postet, ist hier ein Lockvogel mit mehr als 5:
quelle
Clever und bestimmt
Setzt ein paar kleine Fallen, rast dann auf die andere Seite und versucht, alles über oder unter Null zu beseitigen. Scheitert an
----
.quelle
+++
Vorher[-]
ist es in der Tat klug, einfache Fallen zu vermeiden!(
. Kann ich das wie einen Kommentar behandeln?MetaJSRandomBot
Die Idee hinter diesem Bot ist, etwas total zufälliges zu machen, das immer noch ein gültiger js-Code ohne allzu große Nutzlosigkeit ist. Ich habe folgenden Code ( JSFiddle-Link ) geschrieben, um ihn zu generieren. Mal sehen, wie gut es funktioniert =)
quelle
Preußisches Roulette
Russisches Roulette hat mit seinem Freund Preußen eine Wette abgeschlossen und jetzt ist er an der Reihe zu spielen.
quelle
Größer
Das Wettrüsten beginnt !!
Baut und zerstört Wände mit einer Höhe von
16 bis18 Metern , die größer sind als die meisten Wettbewerber. Hat auch eine kleine Logik, um den Cloaker, Flaggenverteidiger, Anti-Alternatoren und Bots, die eine unberührte Flagge annehmen, zu besiegenKommentierte Version
quelle
PatientBot
Ein teils ernster Bot. Dieser Bot wird versuchen, bis zum Limit von 100000 Zyklen zu gewinnen. es wird zur feindlichen Flagge gehen, während ein paar Fallen in den Weg gestellt werden, es ein wenig verringern, zurückgehen und die Flagge verteidigen.
Es wird davon ausgegangen, dass alles, was größer als 1 oder kleiner als -1 ist, das Flag ist. Wenn es auf eines trifft, wird es zurückgehen. es verteidigt, indem es einfach ständig erhöht. Dies setzt voraus, dass die meisten Programme entweder [] verwenden, um zu überprüfen, ob das Flag 0 wurde, und daher (+) * 100000 viel schneller ist
Bearbeiten: Der BF Joust-Interpreter funktioniert nicht. Ich gebe auf. Vielleicht solltest du mir sagen, wie ich meinen Code verbessern kann.
Bearbeiten: Jetzt macht der Bot die Stelle kurz vor der Flagge 2 und nachdem er die Flagge ein wenig dekrementiert hat, sucht er nach einer 2. Dies soll das Szenario abbrechen, in dem der Bot eine andere 0-Zelle als die vor der finden würde Flagge.
quelle
[<]
ist dies keine so gute Idee, da das Zurückgehen wiederholt wird, bis die Zelle unter Ihrem Zeiger gleich Null ist. Dies ist entweder eine der Zellen vor Ihrer Flagge oder einfach Selbstmord, wenn Ihr Zeiger die Flagge erreicht (seit Ihrer Flagge) ist hoffentlich nicht Null ).