Was ist los mit öffentlichen Variablen?

33

Code Bots

Ich hasse private und geschützte Variablen. Ich möchte einfach auf alles zugreifen!

Wenn Sie wie ich sind, dann ist diese Herausforderung für Sie!

Schreiben Sie einen Bot, der in Harmonie mit anderen Bots zusammenarbeitet und andere Bots dazu bringt, das zu tun, was Sie wollen. Sie sind Programmierer und wissen, wie die Dinge funktionieren sollen. Ihre Aufgabe ist es, so viele andere Bots wie möglich auf Ihre Art und Weise zu konvertieren.

Der Code

Sie haben 24 Codezeilen, um Ihren Bot zu schreiben. In jeder Runde führt jeder Bot 1 Zeile nacheinander aus.

Jeder Bot speichert 5 Variablen Adurch E. Aund Bsind für den persönlichen Gebrauch, Cspeichert die nächste auszuführende Zeile, Dspeichert die aktuelle Richtung und Eist eine Zufallszahl. Die Variablen beginnen bei 0, außer Dbei einem zufälligen Wert. Alle Variablen haben nur Speicher 0-23. Zahlen, die größer oder kleiner sind, werden mit 24 moduliert.

In diesem Beitrag benutze ich den Gegner, um der benachbarte Bot zu sein, dem Sie gegenüberstehen

Jede Zeile muss einen der folgenden 5 Befehle enthalten:

  1. Flagtut nichts. Nur dass du so gewinnst
  2. Movebewegt deinen bot in die Dth richtung. Wenn ein Bot das Feld bereits belegt, wird keine Bewegung ausgeführt
  3. Copy Var1 Var2 kopiert den Inhalt von Var1 in Var2
  4. If Condition Line1 Line2 Wenn Condition true ist, wird Line1 ausgeführt, andernfalls Line2
  5. Block Var1 blockiert den nächsten Schreibzugriff auf eine Variable

Eine Variable kann wie folgt verwendet werden:

#Varwird die Variable als Zeilennummer verwenden. Wenn A17 ist, Copy #8 #Awird der Inhalt von Zeile 8 in Zeile 17 kopiert. Dabei *Varwird die Variable Ihres Gegners verwendet. Copy 5 *Csetzt die CVariable des Gegners auf 5 Var+Var, um die beiden Variablen zu addieren. Copy D+1 Ddreht den Bot nach rechts

Wann Dals Richtung verwendet wird, [North, East, South, West][D%4]wird verwendet

Diese Modifikatoren können verkettet werden: Copy *#*C #9kopiert die nächste Zeile, die Ihr Gegner ausführt, in Ihren eigenen Code in Zeile 9. **DBezieht sich auf die DVariable Ihres Gegners .

Eine Bedingung wird wie folgt bewertet:

  1. Wenn Var:
    1. Wenn Var Adurch ist C, wird true zurückgegeben, wenn Var ungleich null ist, andernfalls false.
    2. Wenn Var ist D, wird true zurückgegeben, wenn sich ein Bot in der DRichtung befindet, andernfalls false
    3. Wenn Var ist E, wird true zurückgegeben, wenn E ungerade ist, andernfalls false
    4. Wenn Var eine Zeile ist, wird true zurückgegeben, wenn es sich um eine Flag-Zeile handelt
  2. Wenn Var1=Var2:
    1. Gibt true zurück, wenn beide gleich sind A-Eund dieselbe Zahl haben
    2. Gibt true zurück, wenn beide Zeilen sind und der Zeilentyp gleich ist
  3. Wenn Var1==Var2:
    1. Gibt true zurück, wenn beide gleich sind A-Eund dieselbe Zahl haben
    2. Gibt true zurück, wenn beide Zeilen sind und identisch sind (Flags von verschiedenen Bots sind nicht gleich)

50 Bots von jedem Typ werden nach folgendem Muster in eine toroidale Welt gesetzt:

B...B...B...B...
..B...B...B...B.
B...B...B...B...
..B...B...B...B.

Nach jedem Spiel von 5.000 Runden werden die Flaggen auf jedem Bot gezählt. Sie erhalten einen Punkt, wenn ein Bot mehr von Ihrer Flagge als jede andere Art von Flagge hat. Bei einem Gleichstand zwischen NBots werden keine Punkte vergeben.

Es wird 10 Spiele geben und am Ende werden Punkte gesammelt.

Randnotizen

Zeilenende-Kommentare sind zulässig und mit gekennzeichnet //

Der Versuch, etwas zu tun, das keinen Sinn ergibt, wie z. B. das Hinzufügen zu einer Zeile, führt zu nichts

Der Versuch, auf einem nicht existierenden Bot etwas zu tun, führt zu nichts

Die unendliche Rekursion eines IfWillens endet, ohne dass eine Zeile ausgeführt wird

If ändert den Wert von nicht C

A Blockläuft erst ab, wenn jemand versucht, darauf zu schreiben

Es können mehrere Variablen und Zeilen gleichzeitig gesperrt werden

BlockWenn Sie eine Variable mehrmals verwenden, wird sie mehrmals blockiert, solange sich die zweite Blockanweisung in einer anderen Codezeile als die erste befindet

Leerzeichen sind nur zwischen Argumenten (und nach dem Befehl) zulässig

Wenn ein Bot kürzer als 24 Zeilen ist, ist Flag der Rest der Zeilen.

Beispielprogramm

Copy 2 C        //Skip to the If line
Flag            //Where I'm storing my flag
Move            //Move in the D'th direction
If D #5 #2      //If there's a bot, copy code, otherwise, move!
Copy #1 *#E     //Copy my flag onto a random spot in my bot's code
Copy 2 C        //Skip back to the If line

Das Programm wird von meinem Python - Controller ausgeführt werden hier .

Der Java-Controller ist da. Er ist schnell und sieht viel besser aus als der Python- Controller .

Anzeigetafel:

  1. 6837 $ Kopie
  2. 3355 Lockheed
  3. 1695 MindControl
  4. 967 byzantinisch
  5. 959 AttackOrElse
  6. 743 Cadmyllion
  7. 367 Influenza
  8. 251 TheCommonCold
  9. 226 Magus
  10. 137 HideBlockAttack
  11. 129 RowBot
  12. 123 FastMoveCloneDodge
  13. 112 FastForwardClone
  14. 96 QuickFreeze
  15. 71 RepairAndProtect
  16. 96 SuperFreeze
  17. 93 RovingVirus
  18. 80 ForwardClone
  19. 77 FreezeTag
  20. 68 Palimpseste
  21. 62 BlockFreezeAttack
  22. 51 RushAttackDodge
  23. 46 Blocker
  24. 40 TurretMaker
  25. 37 Nachahmer
  26. 37 Kamikaze
  27. 35 FlagInjector
  28. 33 RandomCopier
  29. 31 heimtückisch
  30. 29 HappyAsAClam
  31. 25 NanoVirus
  32. 21 Nullifier
  33. 19 Nanoviris
  34. 17 BoringCopybot
  35. 16 Movebot
  36. 14 Flagbot
  37. 13 Neutralisator
  38. 12 Krebs
  39. 9 DNAbot
  40. 9 Parasit
  41. 8 MetaInsidious
  42. 8 Umbenennung
  43. 8 AdaptiveBot
  44. 8 ReproducingBot
  45. 8 KungFuBot
  46. 5 QuickFreezerbot
  47. 4 Angreifer
Nathan Merrill
quelle
1
Ich werde mich darum kümmern, sobald mir Java zum Testen zur Verfügung steht.
Wasmoo
2
Ich gehe davon aus, dass Sie noch nie Core War gespielt haben. en.wikipedia.org/wiki/Core_War
matt_black
Ich habe es nicht gespielt, aber ich habe beim Schreiben dieser Herausforderung einiges darüber gelesen.
Nathan Merrill
Ich habe einen Patch für den Python-Controller und habe versucht, ihn auf github an Sie zurückzuschicken ... aber ich habe keine Berechtigungen / kenne git nicht wirklich. Patch ersetzt alle "16" durch "num_lines", um den Schreib- / Sprungzugriff auf die letzten 8 Befehle zu ermöglichen. entfernt auch "max_flag_count = 0" aus der Bindungsbedingung in declare_flags (), wodurch manchmal eine Zwei-Wege-Bindung an einen dritten Bot vergeben wurde.
Adipy
1
Gibt es eine ETA für die nächste Kampfrunde? Überhaupt keine Eile. Ich bin nur Neugierig. Vielen Dank.
COTO

Antworten:

13

Flagbot

Flag

Warum etwas tun, wenn andere Bots nett genug sind, mir ihren Code zu geben?

Sparr
quelle
8

Tag einfrieren

Move
If D #3 #2
Copy 23 C
Copy 3 C
Copy #23 *#*C
Copy #21 *#*C+1
Copy #22 *#*C+2
Copy #21 *#*C+3
Copy #22 *#*C+4
Copy #21 *#*C+5
Copy #22 *#*C+6
Copy #21 *#*C+7
Copy #22 *#*C+8
Copy #21 *#*C+9
Copy #22 *#*C+10
Copy #21 *#*C+11
Copy #22 *#*C+12
Copy #21 *#*C+13
Copy #22 *#*C+14
Copy D+1 D
Copy 0 C
Flag
Flag
Copy C+23 C

Fallen Sie den Gegner in einer Schleife, füllen Sie ihn mit Fahnen und gehen Sie zum nächsten Gegner über.

Sparr
quelle
Copy C+23 CDies muss die bösartigste Codezeile xD sein.
Cruncher
Ich bin interessiert. Dies kann verbesserungsfähig sein. Können Sie ihnen eine Schleife hinzufügen, die sich selbst mit Flaggen füllt, anstatt sie mit Flaggen zu füllen? Oder würde das nicht zu deinen Flaggen zählen?
Cruncher
Das ist eine ordentliche und realisierbare Idee, aber komplizierter. Sie sollten einen Bot schreiben, der es verwendet :)
Sparr
2
Kennen Sie die Antwort auf die letzte Frage? Or would that not count as your flags?. Denn wenn sie nicht als Ihre eigenen Flaggen gelten, ist es definitiv keine gute Lösung
Cruncher
@Cruncher du könntest ihnen eine deiner Flaggen geben und sie dazu bringen, sie zu kopieren, was als eine deiner Flaggen gelten würde.
Sparr
8

Parasit

Warum andere Bots töten? Dieser Bot durchsucht den Code des Gegners und ersetzt nur die Flags.

Copy 1 A
Copy E D
Block #A
If *#A #C+3 #C
Copy A+A+A+A+A A
Copy C+19 C
Copy #C+4 *#A
Flag
Copy 1 A
Copy E D
Block #A
If *#A #C+3 #C
Copy A+A+A+A+A A
Copy C+19 C
Copy #C+4 *#A
Flag
Copy 1 A
Copy E D
Block #A
If *#A #C+3 #C
Copy A+A+A+A+A A
Copy C+19 C
Copy #C+4 *#A
Flag
PhiNotPi
quelle
8

$ Copy

Dieser Bot verwendet fast die gleichen Techniken wie Lockheed von COTO, daher werde ich schamlos etwas ausleihen und verbessern.

Dies nutzt eine CSicherheitsanfälligkeit aus, um Blöcke zu brechen und den Neutralisator sogar umzukehren. Aus diesem Grund ist es auch absolut geschrieben. Ich denke, dies könnte brechen, wenn die CSchicht wieder eingesetzt wird, aber solange die Schicht konstant ist, kann sie umgeschrieben werden, um sie zu bekämpfen.

Aus welchem ​​Grund auch immer, das Fehlen einer Schleife am Ende machte diesen Bot super gut.

Block #C+A 
If D #7 #13        //If [enemy] Copy 0 ELSE block
If D #8 #0         //If [enemy] Freeze 0 ELSE block
If D #9 #6         //If [enemy] FreezeCheck ELSE Inc
Move
Copy 0 C
Copy A+5 A          //Inc
Copy 23 *C          //Copy 0
Copy #10 *#*C+23    //FreezeAttack
If *#*C==#10 #11 #5 //FreezeCheck: If [frozen] GOTO Copy Attack ELSE GOTO [1]
Copy C+23 C         //FREEZE
Copy 13 C           //GOTO Copy Attack
Copy 15 C           //Loop Copy Attack
Block #C+A
Copy D+3 *D             //Copy Attack: Spin Enemy
Copy 0 *B               //Set enemy counter (a la COTO)
Copy #*B+0 *#*C+*B+1    //Copy my lines
Copy #*B+1 *#*C+*B+2    //Copy my lines
Copy #*B+2 *#*C+*B+3    //Copy my lines
Copy *B+3 *B            //Inc counter
If *B==0 #19 #12        //Loop check
Copy D+1 D              //Turn myself
Wasmoo
quelle
1
Ich werde mich Ihrem verbesserten Design beugen und mich Ihnen im Wettbewerb Bots v. 3 erneut stellen. ;)
COTO
Ich glaube ehrlich, dass dies eine Gruppenanstrengung von allen Seiten war. Dies würde nicht existieren, wenn nicht mehrere Bots zum Modellieren da draußen wären. Interessanterweise hat die Hinzufügung dieses Bots die Anzeigetafel komplett neu organisiert, da Bots, die auf das Blockieren angewiesen waren, beschädigt wurden, während andere, die auf das Ersetzen der Flagge angewiesen waren, aufstiegen.
Wasmoo
Kann jemand irgendwo das tatsächliche Verhalten von Block zusammenfassen und wie dieser Bot und Lockheed es ausnutzen?
Sparr
Jede Zeile kann Blöcke bilden, wie von HappyAsAClam beschrieben . Am wichtigsten ist, dass es nicht für Blöcke gestapelt wird, die mit denselben CWerten aufgerufen werden. Auf diese Weise kann ein Block gestapelt werden, wenn er von einer IfAnweisung aufgerufen wird. Dies ist der hier verwendete Exploit. $ Copy unterbricht Blöcke (wie die Muschel), indem es immer wieder Copyin derselben Zeile ausgeführt wird, bis es erfolgreich ist, was einen Vorteil gegenüber Lockheed bietet.
Wasmoo
7

Lockheed

Meine dritte (und wahrscheinlich letzte) Unterwerfung in diesem speziellen Bot-Krieg: der Lockheed-Reaktor, oder kurz "Lockheed".

Block #C+A
If D #C+7 #C+1
Block #C+A
Move
Copy A+5 A
If A==0 #C+12 #C+21
Copy C+17 C
Copy D+3 *D
Copy C+9 C
Copy C+21 C
Copy C+23 C
Copy #C+23 *#*C+2
Copy #C+22 *#*C+1
Copy 0 *A
Copy #*A+C+9 *#*C+*A+1
Copy *A+1 *A
If *A==0 #C+15 #C+17
Copy D+1 D
Copy C+5 C

Besonderer Dank geht an @Wasmoo, der seine Entdeckung "" geteilt hat. Wenn Sie eine Variable mehrmals blockieren, wird sie mehrmals blockiert, solange sich die zweite block-Anweisung in einer anderen Codezeile als Ihre erste befindet. " einfach nicht wahr "ausnutzen. Ich nutze es ausgiebig.

Vielen Dank auch an Nathan Merill für die Verwaltung des Wettbewerbs und die Veröffentlichung des Simulators. Der Simulator ist bei der Optimierung von Bots von unschätzbarem Wert. Ich hätte es nicht geglaubt, wenn ich es nicht mit meinen eigenen Augen simuliert hätte, aber das Hinzufügen oder Entfernen des konzeptionell unbedeutendsten Bot-Features kann den Unterschied zwischen großem Erfolg und erbärmlichem Misserfolg ausmachen. Ich bin hin und her gerissen, ob das eine gute Sache ist oder nicht.

COTO
quelle
Das mehrfache Blockieren einer Variablen schlägt fehl. Es kann jedoch nur blockiert werden, wenn: Sie dieselbe Zeile ausführen (ein IfVerweis auf diese Zeile schlägt nicht fehl), Sie denselben Wert blockieren (eine einzelne Zeile kann die Zeilen 1-24 mit einer inkrementierenden Variablen blockieren) und Block wurde noch nicht veröffentlicht (jemand hat versucht, diese Variable zu ändern)
Nathan Merrill
Ich bestreite die Anweisung im OP, weil die Blockanweisung auf die IP und nicht auf die Blockanweisung festgelegt ist. Somit kann eine einzelne Blockanweisung bis zu 24 separate Blöcke für alle Anweisungen einrichten. Ich behaupte, dass die Klausel im OP, die besagt, dass "solange sich die zweite Blockanweisung in einer anderen Codezeile als Ihre erste befindet", geändert werden sollte in "solange ein Block für pair ( C, <block target>) noch nicht in Kraft ist". Das heißt, die Zeile, in der sich die Blockanweisung befindet, hat keine Relevanz für das Stapeln, mit der Ausnahme, dass bei direkter Ausführung des Blocks C= Blockanweisungsadresse.
COTO
1
Dieser Bot ist unglaublich! Es vereint alle besten Konzepte in einem. Es schützt sich selbst, bis es einen Feind findet, dann friert es den Feind doppelt ein und lädt eine Kopie von sich selbst auf das Ziel hoch, bevor es es in die entgegengesetzte Richtung freigibt. In Simulationen habe ich gesehen, wie eine der Kopien ein beschädigtes Original repariert hat. WOW! Großartige Arbeit, COTO!
Wasmoo
6

Angriff oder sonst

Da Defensivroboter wie die byzantinischen so gut abschnitten, beschloss ich, auch einen Defensivroboter zu bauen.

Dies hat zwei Arten von Mustern, abhängig davon, ob der Feind anwesend ist oder nicht.

  • Wenn der Feind nicht anwesend ist, blockiert er seine Linien für 3 Runden und bewegt sich dann.
  • Wenn der Feind anwesend ist, wechselt er zwischen dem Kopieren seiner Flagge und dem Kopieren des Codes, der den Feind veranlasst, die Flagge (einen schwachen Replikator) zu kopieren, mit der er seine Flagge kopiert
  • Am Ende der Schleife wechselt sie in eine zufällige Richtung und fährt fort
  • Die meisten Aspekte des Codes sind dupliziert

Weitere Tests ergaben einige wichtige Konzepte:

  • "Turn random" lief dramatisch besser als "Turn right" (+2700 über Alternative)
  • Blockinkrement von A+7wird als effektiver als jedes andere Inkrement angezeigt (+200 über dem nächstbesten)
  • "Direkter Angriff" ist besser als "Schwacher Replikator" (+900 gegenüber Alternative)
  • Verteidigung von "3-1-2-1" besser als andere Kombinationen (+200 über nächstbeste)
  • Doppelter Angriffs-, Block- und Schleifencode verbessert seine Punktzahl (+300 gegenüber nicht dupliziertem Code)
  • Ein doppeltes Blockinkrement verbessert die Punktzahl nicht (+400 gegenüber doppeltem Blockinkrement).

Das grafische Beobachten der Simulation über die Java-Benutzeroberfläche hat sehr geholfen. Vielen Dank! Unten ist der neue und verbesserte Code. Ich glaube nicht, dass ich mehr tun kann.

Block #C+A          //Dynamic block for If statements
If D #20 #0
If D #19 #8
If D #20 #23
If D #19 #0
If D #20 #8
If D #19 #23
Copy A+7 A          //Increment dynamic block
Block #C+A          //Dynamic block for If statements
If D #19 #8
If D #20 #0
If D #19 #8
If D #20 #23
If D #19 #8
If D #20 #0
If D #19 #23
Copy E D            //Turn Random
Copy 23 C           //Loop to beginning
Copy 23 C           //Loop to beginning
Copy #22 *#*C+1     //Copy my flag to the enemy's next
Copy #21 *#*C+1     //Copy my flag to the enemy's next
Flag
Flag
Move
Wasmoo
quelle
Dieser Bot war wirklich großartig. Und Sie sind herzlich willkommen für die GUI.
Nathan Merrill
Ich habe es aktualisiert, um eine zweite Schleife aufzunehmen, die die Leistung dramatisch verbessert hat. Mir ist auch aufgefallen, dass das Blockieren in Java auf dem basiert, das Ces blockiert hat. Da auf diesem Bot ein rotierender Block basiert C, werden für jeden seiner Befehle mehrere Blöcke gebildet. Das macht diesen Bot besonders defensiv.
Wasmoo
Ich verstehe, dass nur ein Block pro Ursprungsanweisung erstellt werden konnte, daher konnte Ihr Code oben nur einen einzigen Block für jede Anweisung erstellen (und es würde volle 24 * 17 Umdrehungen dauern, um für jede Anweisung einen einzigen Block zu erstellen). Wenn mein Verständnis falsch ist, wird die Sprache "Mehrfaches Blockieren einer Variablen wird mehrmals blockiert, solange sich die zweite Blockanweisung in einer anderen Codezeile als die erste befindet." im OP muss geändert werden, da diese Aussage (ehrlich gesagt) falsch ist, wenn der Code von Wasmoo in der Lage ist, mehrere Blöcke für eine Anweisung zu erstellen.
COTO
@COTO: Der Java-Simulator fügt einer IfListe einen Block pro Zeile hinzu und tippt dabei auf die CVariable, die ihn aufgerufen hat. Mit dem 1 Block und 9 Ifs, die die Block-Anweisung ausführen, kann der Bot bis zu 10 Blocks für jede Zeile erhalten (wobei mindestens 24 * 10 * 10 Umdrehungen erforderlich sind). Vielleicht hat das OP die Simulation nicht richtig übermittelt.
Wasmoo
Ich habe den Code erneut aktualisiert, um die Iterationen weiter zu verbessern und gleichzeitig das Kernkonzept beizubehalten. Ich dachte, dies wäre besser, als das Forum mit jeder Iteration zu überfluten, wie zum Beispiel den Wechsel von "Schwache Replikation" zu "Direkter Angriff" und "Nicht dupliziert" zu "Dupliziert". Wenn ich mein Original umbuchen soll, kann ich das tun.
Wasmoo
5

Row Bot

Move
If D #7 #0
If D #7 #0
If D #7 #0
If D #7 #0
If D #7 #0
Copy 0 C
If D=*D #9 #8     //If they point in a different direction
Copy *D D           //fix that
If #A==*#A #10 #11  //Did we copy line A already?
Copy A+1 A          //If so, A++
Copy #A *#A         //else, copy it!

Bewegt sich, bis ein Roboter gefunden wird.
Wird diesen Roboter in die gleiche Richtung wie sich selbst einstellen.
Kopiert dann seinen Code in den Roboter.
Dies sollte eine Reihe von "Row Bot" -Robotern ergeben. :)

MegaTom
quelle
Es gibt zwei (leicht zu behebende) Probleme. Erstens müssen die IfAussagen groß geschrieben werden. Zweitens sollte es nicht sein Plätze auf beiden Seiten der =, wie D=*D.
PhiNotPi
Das ist eine großartige Idee.
Sparr
Ohne Flagge wirst du nicht gewinnen.
Paŭlo Ebermann
3
@ PaŭloEbermann-Bots sind mit Flags bis zu 24 Zeilen gefüllt, sodass dieser Bot am Ende 12 implizite Flags hat.
Sparr
5

Super einfrieren

Move                    // start moving!
Block #E
If D #12 #0             // 8 turns of attack or move
If D #12 #0
If D #12 #0
If D #12 #0
If D #12 #0
If D #12 #0
If D #12 #0
If D #12 #0
Copy D+1 D              // change direction
Copy 0 C                // start over
If *#*C==#23 #13 #14    // if opponent is frozen, give them a flag, otherwise freeze them
Copy #C+13 *#E          // give a flag to opponent
Copy #23 *#*C           // copy freeze line to opponent
Flag                    // 8 flags, one per If above
Flag
Flag
Flag
Flag
Flag
Flag
Flag                    
Copy C+23 C             // this line freezes any bot that executes it

Dieser Bot versucht weiterhin, den Bot vor sich einzufrieren, bis er funktioniert, und schreibt dann eine Reihe von Flags in zufällige Linien. Nach 8 Runden dreht er sich und bewegt sich zu einem anderen Gegner weiter.

Sparr
quelle
5

Byzantinisch

Ein hoch defensiver Bot, der mehrere Blöcke auf seinen Flags und die sensibelsten Anweisungen, einschließlich Metablöcke (dh Blöcke auf kritischen Blockanweisungen), einrichtet.

Es bewegt sich auch ständig auf unvorhersehbare Weise und pflanzt Flaggen auf bestmöglicher Basis an zahlreichen Orten auf Gegner.

Block #A
Block #A+1
Block #A+2
Copy E D
Move
Block #A+3
Block #A+4
Move
Copy #22 *#*C+1
Copy E D
Move
Block #A+5
Block #A+6
Block #A+7
Move
Copy #22 *#23
Block #A+8
Block #A+9
Block #A+10
Copy #22 *#2
Copy A+14 A
Move
Flag
Copy #22 *#*C+12

Ich bin mir nicht sicher, wie es funktionieren wird, da ich nicht simulieren kann. Aber wir werden es versuchen. ;)


Haftungsausschluss

Ich habe dies geschrieben, bevor ich freundlicherweise von PhiNotPi darüber informiert wurde, dass bedingte Logik kostenlos ist. Ich habe mich jedoch entschlossen, es zu belassen, da man nie zu viele Bots haben kann.

COTO
quelle
Dieser Bot gewinnt!
Nur die Hälfte des
4

Cadmyllion

"Ich habe gerade einen Bot im Battle Royale betreten", sage ich. "Es bewegt sich alle paar Runden, um Angriffe durch langsamere Bots zu verhindern."

"Was meinst du mit langsameren Bots?" Fragt PhiNotPi.

"Bots, die lange Ketten bedingter Logik auswerten", erwidere ich.

"If-Anweisungen, die zu anderen Anweisungen umleiten, einschließlich anderer if-Anweisungen, werden alle in derselben Runde ausgeführt", sagt PhiNotPi.

"Süße massakrierte Regeln des Assembler-Codes!" Ich weine. "Wer ist auf diese Idee gekommen?"

... und so entstand die Geschichte von Cadmyllion.

Cadmyllion: der Bot, der die surreale Fähigkeit ausnutzt, unendlich viele bedingte Ausdrücke in einer einzigen Anweisung zu bewerten, indem er so ziemlich alles, was er tut, bedingt.

Code

If D #15 #19
Move
If D #16 #20
Copy D+3 D
Block #A
If D #15 #20
Copy A+1 A
If D #16 #1
Move
If D #15 #19
If D #16 #4
Copy E D
Block #A+12
Copy C+10 C
Flag
If *#0==#14 #17 #21
If *#0==#14 #18 #21
If *#*C+1==#14 #18 #22
Copy *C+11 *C
Block #A+6
Block #A+18
Copy #14 *#0
Copy #23 *#*C+1
Flag
COTO
quelle
4

Meta Insidious

Dieser Bot friert ein und konvertiert dann Gegner in weniger effiziente Versionen von Sparrs Insidious , die wiederum Gegner in Bots verwandeln, die für mich Spam-Flags sind. Dies ist wahrscheinlich der komplexeste Bot, den ich geschrieben habe, und ich erwarte daher, dass er schrecklich funktioniert. Es gab keinen Platz zum Blockieren und nur eine Flagge im Code. Das Verwandeln eines Bots in einen heimtückischen Klon dauert ebenfalls zu lange.

Die größte Herausforderung bestand darin, den Code für die heimtückischen Klone so zu schreiben, dass er unabhängig von seiner Position im Bot funktioniert. Das Einfrieren wird entfernt, wenn ich den vorletzten Code genau dort einfüge, wo sich das Einfrieren befindet. Dies startet den Gegner gerade noch rechtzeitig.

If D #2 #1
Copy 23 C
Copy #8 *#*C // freeze the opponent
Copy 9 A
Copy #A *#A+*C // copy the next line at the appropriate  line
Copy A+1 A
If A==0 #7 #23
Copy 23 C
Copy C+23 C
If D #C+2 #C+23 // the code for the Insidious clone starts here
Copy C+21 C
Copy C+2 C
If D #C+6 #C+22
If D #C+5 #C+22
If D #C+4 #C+20
If D #C+3 #C+19
If D #C+2 #C+18
Copy E D
Copy #C+7 *#*C
Flag
Copy C+3 A
Copy #C+22 #A
Copy A+1 A
Copy C+21 C // And ends here
Überakteur
quelle
Das ist eine clevere Idee. Es werden jedoch keine Befehle zum Verschieben angezeigt. Bedeutet das, dass sich weder Ihr Bot noch Ihr Spam-Bot bewegen werden?
Wasmoo
Die Insidious-Klone könnten sich je nach dem, was im ursprünglichen Code des Bots enthalten ist, bewegen. Aufgrund des begrenzten Speicherplatzes musste einiges an Funktionalität weggeworfen werden, um dies sogar mit 24 Zeilen zu ermöglichen. Es war mehr eine mentale Übung als alles andere.
Overactor
3

Reparieren und schützen

Dieser Bot repariert seinen eigenen Code und schützt gleichzeitig die neu reparierten Leitungen.

If #A==#A+16 #C+1 #C
Copy #A #A+8
Block #A+8
Copy A+1 A
Copy E D
Move
Copy #C+1 *#*C
Flag
If #A==#A+16 #C+1 #C
Copy #A #A+8
Block #A+8
Copy A+1 A
Copy E D
Move
Copy #C+1 *#*C
Flag
If #A==#A+16 #C+1 #C
Copy #A #A+8
Block #A+8
Copy A+1 A
Copy E D
Move
Copy #C+1 *#*C
Flag

Erläuterung:

Der Anfangswert von Aist 0und die Zeilen sind mit 0-23 nummeriert. Wenn die IfAnweisung ausgeführt wird und falsch ist, versucht sie, dieselbe Zeile erneut auszuführen. Der Controller erlaubt es einem Bot nicht, dieselbe Zeile zweimal auszuführen, daher wird die Runde beendet und Cinkrementiert auf 1.

Die nächste Zeile Copy #A #A+8wird unabhängig vom Wert der IfAnweisung ausgeführt. Der Unterschied besteht darin, dass es zweimal ausgeführt wird, wenn es wahr ist, und einmal, wenn es falsch ist. Wenn die Leitung #A+8gesperrt ist (was eventuell vorkommt), wird sie durch zweimaliges Ausführen mit tatsächlichem Kopieren und einmaliges Ausführen nur entsperrt. Dann wird die neu kopierte Zeile blockiert, um sie beizubehalten.

PhiNotPi
quelle
Ich versuche euch alle zu verstehen, aber ich stecke fest. Was ist der Anfangswert von A? Ist es nicht 0? Wenn ja, dann vergleichen Sie in Ihrer ersten Zeile Zeile 0 mit Zeile 16, aber wie ich aus dem OP-Beispielbot verstanden habe, ist die erste Zeile Zeile 1, nicht wahr? Außerdem #Cbezieht sich immer noch Ihre erste Zeile auf genau diese Zeile. Bedeutet dies, dass IfSie sich in einer Endlosschleife befinden , wenn die Anweisung false zurückgibt?
Plannapus
@plannapus Ich habe eine Erklärung hinzugefügt.
PhiNotPi
3

Neutralisator

Dieser Bot lässt sein Opfer sein gesamtes Programm umschreiben, sodass es 0 Punkte wert ist. Sobald der Virus vorhanden ist, geht er weiter. Dies ist eine Annäherung der verbrannten Erde an den Sieg.

If D #C+2 #C+3          // A: If [enemy exists] B else C
Copy C+22 C             // GOTO A
If *#*C==#7 #C+4 #C+5   // B: If [enemy was neutralized] D else E
Move                    // C: Move
Copy E D                // D: Turn Randomly
Copy #7 *#*C            // E: Neutralize enemy
Copy C+1 C              // Skip the next line
Copy #C #C+1            // Neutralizing Code [Copy this line to next line]

Der Vergleich *#*C==#7scheint sich nicht korrekt auf die Verschiebung des Gegners einzustellen, aber der Bot bewegt sich schließlich weiter.

Wasmoo
quelle
Copy C+1 Cist alles, was benötigt wird, um eine einzelne Zeile zu überspringen.
Nathan Merrill
2
"Nächste Zeile überspringen" bedeutet, dass Ihr Bot 16 Runden lang Flaggenbefehle ausführt, bevor er fortfährt. Vielleicht möchten Sie Copy 23 Cstattdessen dorthin, um zur ersten Zeile zurückzukehren.
Sparr
'Nächste Zeile überspringen' wird nur ausgeführt, wenn 'GOTO A' überschrieben wurde. Es gibt andere Möglichkeiten, wie ich diesen Bot offensiver und defensiver machen kann, beispielsweise das Wiederholen von "A", das Duplizieren des Codes und das Blockieren von "GOTO A". Wenn dieser Bot jedoch getroffen wird, ist er sowieso so ziemlich tot.
Wasmoo
3

Heimtückisch

Move
If D #4 #0
If D #4 #0
Copy 0 C
Copy 4 C
If D #12 #11
If D #12 #11
If D #12 #11
If D #12 #11
If D #12 #11
Copy D+1 D
If D #4 #3
Copy #C+8 *#*C
Flag
Copy C A
Copy #C+22 #A
Copy A+23 A
Copy C+21 C

Inspiriert von @Cruncher infiziert dieser Bot andere Bots mit einem kleinen Codeblock und füllt den anderen Bot mit den Flaggen dieses Bots. Diese Bots sitzen dann auf Enten, um weiter anzugreifen, aber sie werden größtenteils mit meinen Flaggen gefüllt sein, wenn sie von jemand anderem erneut infiziert werden.

Edit: Danke an @PhiNotPi für die Golfunterstützung, @overactor für die Effizienzberatung

Sparr
quelle
Herzlichen Glückwunsch zu 2k!
Bjb568
3

Fröhlich wie ne Muschel

Dies ist eine Übung zum Blockieren. Es lief bemerkenswert gut, bis $Copyes soweit war.

Die Muschel hat 22 Blockbefehle. Da Ajede Schleife verschoben wird, verweisen sie jedes Mal auf andere Zeilen in der Schleife. Auf diese Weise kann jeder Befehl Blöcke in jeder zweiten Zeile stapeln, wobei maximal 22 Blöcke pro Zeile zulässig sind. Um die vollständig gepanzerte Muschel zu zerbrechen, müsste man also 22 Mal in eine Zeile schreiben.

Beispielsweise #10wird jedes Mal durch die Schleife durch die folgenden Zeilen geschützt:

  • Schleife 0, A = 0 #10geschützt durch Linie 7 ( 7+0+3= 10)
  • Schleife 1, A = 7 #10geschützt durch Leitung 0 ( 0+7+3= 10)
  • Schleife 2, A = 14 #10geschützt durch Leitung 17 ( 17+14+3= 34 = 10)
  • Schleife 3, A = 21 #10geschützt durch Leitung 10 ( 10+21+3= 34 = 10)

Nachdem Zeile 10 von Schleife 3 #10viermal blockiert wurde, sind vier Schreibvorgänge erforderlich #10, um die Blöcke zu unterbrechen, und ein fünfter, um die Zeile tatsächlich zu überschreiben.

Beachten Sie, dass Blöcke durch ihren CWert verschlüsselt werden und nicht gestapelt werden, wenn die geschützte Leitung bereits durch denselben CWert blockiert wurde . Nachdem 22 Blöcke für jede Zeile erstellt wurden, werden die Blöcke nicht mehr gestapelt.

Block #C+A+3
Block #C+A+3
Block #C+A+3
Block #C+A+3
Block #C+A+3
Block #C+A+3
Block #C+A+3
Block #C+A+3
Block #C+A+3
Block #C+A+3
Block #C+A+3
Block #C+A+3
Block #C+A+3
Block #C+A+3
Block #C+A+3
Block #C+A+3
Block #C+A+3
Block #C+A+3
Block #C+A+3
Block #C+A+3
Block #C+A+3
Block #C+A+3
Copy A+7 A
Flag
Wasmoo
quelle
3

Bewusstseinskontrolle

Ich denke, es ist nie zu spät?

Block #C+D
If D #2 #0        // Scan for enemy
If *#E==#E #0 #5  // Attack if necessary
Copy D+5 D        // Turn
Copy 22+1 C       // Repeat
Copy 4+1 C        // ATTACK:
Copy #22+1 *#*C   //   Freeze
Copy #17 *#17     //   Upload the DOWNLOADER
Copy #18 *#18     //
Copy #21 *#19     //
Copy D+2 *D       //   FACE ME!!
Copy 17 *C        //   Start download
If E #0 #13
If E #0 #13
Copy 22+1 C
Flag
Flag
Copy *#B+20 #B+20         // DOWNLOADER
If *#B+20==#B+20 *#20 #19 //
Copy 22+1 C               //
Copy 1+B B                //
Copy 16 C                 //
Flag
Copy 23+C C        // FREEZE

MindControl basiert auf meiner Vorstellung, dass es einige Zeit dauern würde, mein gesamtes Programm auf den Gegner zu kopieren, währenddessen mein Bot für Angriffe aus anderen Richtungen anfällig ist. Warum also nicht den Gegner dazu bringen, mein Programm zu kopieren, während ich nach Feinden scanne?

Sobald MindControl einen Feind findet, friert es den Feind sofort ein, um die Flucht zu verhindern. Dann lädt es den Downloader auf den Gegner hoch und lässt das Opfer das MindControl-Programm selbst herunterladen. Der Downloader nutzt die Tatsache aus, dass nur wenige Bots verwendet werdenB Schleife verwenden, bis er alle 24 Zeilen heruntergeladen hat. Wenn der Downloader #19von Copy 16 Cnach umschreibt Copy 23 C, bedeutet dies, dass das Opfer alle Zeilen heruntergeladen hat, und startet sich selbst neu.

Die ersten Versionen meines Bots enthalten keine Blöcke. Und es war so verwundbar, dass fast jede Veränderung lähmend wirkt. Also habe ich beschlossen, Blocks basierend auf Wasmoos $ Copy (das auf COTOs Lockheed basiert) hinzuzufügen. Der Nachteil ist, dass es für das Original schwierig ist, Fehler in den Kopien zu korrigieren. Aber das ist alles andere als lähmend und die Punktzahl hat sich erheblich erhöht, sodass ich die Blöcke behalten habe.

AKTUALISIERUNG

Ich habe den Downloader so lange verbessert, bis ein erfolgreiches Umschreiben zur Umgehung von Blöcken durchgeführt wurde. Es bedeutet, dass es noch eine Runde dauert, um den Downloader hochzuladen, aber meine Punktzahl hat sich nach dieser Änderung verdoppelt !! Kann nicht mit Zahlen streiten.


Noch ein Update. Wie Sie vielleicht bemerkt haben, entscheidet MindControl, ob ein Ziel angegriffen werden soll, indem eine zufällige Linie zwischen sich und dem Ziel verglichen wird. Wenn sie übereinstimmen, geht MindControl lediglich davon aus, dass das Ziel bereits infiziert ist, und lässt es in Ruhe. (Randnotiz: Ich habe zum Vergleich eine statische Linie verwendet, die jedoch viele falsch-positive und -negative liefert.) Es stellt sich heraus, dass es viele falsch-negative gibt. Also habe ich mich entschlossen ==, einige Kleinigkeiten auszunutzen und gerne C+23zu verändern 23+C. Das Programm ist funktional identisch, aber in den Augen von ==. Jetzt, da MindControl keine Linie mehr hat, die mit einer Linie in einem anderen Bot identisch ist, trifft es jeden unberührten Bot zu 100%. Wiederum stieg der Score signifikant an.


Der Downloader wurde nochmals verbessert. Es läuft jetzt auf einer kürzeren Schleife. (was eine große Korrelation mit meiner Punktzahl zu haben scheint)


Nochmals verbesserter Downloader. Verwendet den Original-Bot-Code, um das Hochladen zu beschleunigen. Es wurden auch 2 zufällige Blöcke hinzugefügt, was die Punktzahl zu verbessern scheint

TwiNight
quelle
Es ist niemals zu spät!
Nathan Merrill
Ich denke darüber nach, in BrainWash umzubenennen ...
TwiNight
Oder BunkerBuster, nachdem der Downloader durch HappyAsAClam den Bunker
gesprengt hat
Ich hatte darüber nachgedacht, zuerst einen Downloader hochzuladen, aber ich konnte ihn nicht so klein machen wie Sie. Gut gemacht! Ich mag auch Ihre Verwendung von D als Roving-Block-Delta. Es speichert einen Befehl und beschleunigt Ihr Design. Ich bin erstaunt, dass ein Bot ohne 'Move'-Befehl so gut funktionieren würde. Simulationen zeigen, dass Bots dazu neigen, sich zu verklumpen, aber ich wusste nicht, dass dies eine gewinnbringende Strategie sein würde. Und ich stimme zu, es ist einzigartig befriedigend, die Muschel zu brechen.
Wasmoo
@Wasmoo Offensichtlich erfordert das Downloader-Design, dass der Bot stationär bleibt und Bots verklumpen. Ich stelle es mir gerne als Wurzel eines Baumes vor, der andere Bots ausstreckt und assimiliert, um zu wachsen. Aber ich denke, Beweglichkeit ist der Grund, warum $ Copy und Lockheed mich besiegt haben.
TwiNight
2

Angreifer

Copy #E *#*C
Copy #E *#*C
Copy #E *#*C
Copy #E *#*C
Copy #E *#*C
Copy #E *#*C
Copy #E *#*C
Copy #E *#*C
Copy #E *#*C
Copy #E *#*C
Copy #E *#*C
Copy #E *#*C
Copy #E *#*C
Copy #E *#*C
Copy #E *#*C
Copy #E *#*C
Copy #E *#*C
Copy #E *#*C
Copy #E *#*C
Copy #E *#*C
Copy #E *#*C
Copy #E *#*C
Copy #E *#*C
Flag
Nathan Merrill
quelle
2

Movebot

Move
Copy 23 C
Flag

Wie Flagbot, aber bewege dich, während du Geschenke mit Code annimmst, die zu all unseren Flaggen passen.

Sparr
quelle
2

Reproduzierender Bot

Dieser Bot versucht, seinen Gegner einzufrieren und dann seinen gesamten Code in diesen Bot zu kopieren, bevor der andere Bot neu gestartet wird. Dies sollte auch (meistens) funktionieren, wenn der Gegner blockt, obwohl dies alles noch langsamer macht, als es bereits ist.

If D #23 #22
Copy 23 C
Copy #18 *#*C
Copy #18 *#*C+1
Copy #18 *#*C
Copy #18 *#0
Copy #18 *#0
Copy 0 *C
Copy 0 *C
Copy 1 A
Copy #A *#*A
If D #12 #14
Copy A+1 A
Copy 9 C
Copy 23 C
Flag
Flag
Flag
Copy C+23 C
Copy D+1 D
Flag
If *#*C==#*C #19 #13
Move
If *#*C+1==#*C+1 #21 #13
Überakteur
quelle
Keine Leerzeichen im Zustand
Nathan Merrill
@ NathanMerrill gotcha
Overactor
2

Magus

Magus ist ein einfacher Versuch, sich selbst zu vermehren. Es versucht sich in die Programme anderer Bots zu kopieren. (Bearbeitet, um negative Zahlen zu entfernen, Zustand zu korrigieren und Linien zu schneiden.)

Block #A
Copy #A *#A
Copy A+1 A
If A #0 #4
Copy 0 *C
Flag
Move
Copy 0 C
Isaac
quelle
Negative Werte sind nicht erlaubt. Bitte verwenden Sie 23 für B
Nathan Merrill
Bitte verwenden Sie 23, nicht 25.
Nathan Merrill
Es sei denn, ich habe ein Missverständnis, das dazu führen würde, dass die Zeilen 23 oder 24 nicht blockiert oder kopiert werden (Anmerkung: Sie wurde gegenüber der ersten Überarbeitung geringfügig geändert, A wird um 1 erhöht, nicht um B)
Isaac,
+0 = 24 +1 = 25, -1 = 23. Wenn Sie möchten, dass es -1 ist, sollte es 23 sein.
Nathan Merrill
Das war früher so, weil ich dachte, man könnte nur mit 0 vergleichen (ich habe den '=' - Teil irgendwie verpasst, ich beschuldige das Überfliegen), aber es hat sich jetzt geändert, so dass A bei 1 beginnt und bei 25 endet. Stellen Sie sich Zeile 3 als ... vor for (int i = 1; i < 25; i++). .
Isaac
1

DNAbot

Flag
Copy 8 D
Copy 16 B
If #D==#B #C+2 #C+3
Block #A
Copy #D #A
If D #7 #15
Copy #23 *#*C
Copy A+1 A
Copy B+1 B
Copy D+1 D
If #D==#B #C+2 #C+3
Block #A
Copy #D #A
If D #7 #15
Move
Copy A+1 A
Copy B+1 B
Copy D+1 D
If #D==#B #C+2 #C+3
Block #A
Copy #D #A
If D #7 #15
Flag

Dieser Bot repariert seinen eigenen Code, während er sich bewegt und angreift.

Sparr
quelle
1

Blocker

Copy A+1 A
Block #A
Copy C+22 C
Nathan Merrill
quelle
1

Nachahmer

If D #4 #3
Move
Copy 23 C
Copy *#*C #1
Copy #23 *#E
Nathan Merrill
quelle
1

Schneller Freezerbot

Versucht, Flags in die Linie zu kopieren, die neben seinem Gegner ausgeführt werden, bewegt sich, wenn es keinen anzugreifenden Feind gibt.

Block #13
Block #14
If D #13 #14
If D #13 #14
If D #13 #14
If D #13 #14   
If D #13 #14
If D #13 #14
If D #13 #14
If D #13 #14
If D #13 #14
If D #13 #14   
Copy 23 C
If E #15 #16
Move
Copy #23 *#*C
Copy D+1 D
Überakteur
quelle
Die ersten beiden Zeilen sind ungültig. Sie brauchen # 13 und # 14
Nathan Merrill
1

Blockieren, einfrieren, angreifen

Block #A        // start block loop
Copy A+1 A      // loop A from 0 to 23
If A #3 #4      
Copy 23 C       // repeat block loop
Copy 5 C        // exit block loop to attack/move loop
Move
If D #11 #5     // attack or move
Copy A+1 A      // loop A from 0 to 23
If A #9 #10
Copy 5 C        // repeat attack/move loop
Copy 23 C       // exit attack/move loop to block loop
Copy 11 C       // start of attack routine
Copy #23 *#*C   // freeze opponent
Copy #19 *#E    // copy flag to opponent
Copy #20 *#E    // copy flag to opponent
Copy #21 *#E    // copy flag to opponent
Copy #22 *#E    // copy flag to opponent
Copy D+1 D      // change direction
Copy 5 C        // repeat attack/move loop
Flag
Flag
Flag
Flag
Copy C+23 C     // freeze instruction, for copying

Blockiert alle 24 Zeilen, schleift dann 24-mal, entweder in Bewegung oder greift an und wiederholt dann. Bei einem Angriff wird versucht, den Gegner einzufrieren, dann werden vier Flaggen an zufällige Orte kopiert und dann gedreht.

Sparr
quelle
1

Verstecken, Blockieren, Angreifen

Dieser Bot basiert auf Block Freeze Attack. Ich habe die Platzierung einiger IfAnweisungen geändert , um sie kompakter zu gestalten und mehr Flaggen zu platzieren. Ich habe es auch zu Beginn eines Spiels weggelaufen, um etwas Zeit zum Blockieren zu kaufen.

Copy D+1 D
Move           //buy some time by moving to a more secure location
Block #A+2
Copy A+1 A
If A #11 #17
Copy #23 *#E
Copy #22 *#E
Copy #21 *#E
Copy #20 *#E
Copy #19 *#E
Copy D+1 D
Copy 1 C
Move
If D #14 #15
Copy 3 C
Copy 11 C
Copy #18 *#*C
If D #16 #15
Copy C+23 C
Flag
Flag
Flag
Flag
Flag
PhiNotPi
quelle
1

Roving-Virus

If D #6 #16
Move
Copy 23 C
Flag
Flag
Flag
Copy 6 C
Copy A+23 A
Copy #A *#A                     //clone previous line to enemy
Copy 23 *C                      //freeze enemy
If A #6 #16                     //loop or turn then continue
Copy 0 *C                       //reboot enemy
Copy 23 C                       //start moving again
Flag
Flag
Flag
Copy D+1 D                      //turn
Flag
Flag
Flag
Flag
Flag
Flag
Copy 22 C                       //freeze instruction

Dieser Bot wandert, bis er einen Feind findet, friert ihn dann ein, ersetzt seinen gesamten Code durch seinen eigenen, friert ihn auf und wandert dann erneut.

Sparr
quelle
1

Die Erkältung

Es infiziert Sie praktisch sofort und Sie verbreiten es herum. Basierend auf PhiNotPis Parasite überprüft die Erkältung fast sofort, ob sie ihre Flagge über Ihre kopieren kann. Blockiert einen zufälligen Wert, wenn dies nicht möglich ist. Bewegt sich ein bisschen, wenn es keinen Gegner gibt.

Block #22
If D #8 #5
If D #8 #5
If D #8 #5
Copy 23 C
If E #6 #7
Copy D+1 D
Move
If *#E=#22 #15 #9
If *#E+1=#22 #16 #10
If *#E+2=#22 #17 #11
If *#E+3=#22 #18 #12
If *#E+4=#22 #19 #13
If *#E+5=#22 #20 #14
If *#E+6=#22 #21 #23
Copy #22 *#E
Copy #22 *#E+1
Copy #22 *#E+2
Copy #22 *#E+3
Copy #22 *#E+4
Copy #22 *#E+5
Copy #22 *#E+6
Flag
Block #E
Überakteur
quelle
1

Grippe

Dies basiert eng auf der Erkältung (die von meinem Parasiten verursacht wurde) mit leicht erhöhter Geschwindigkeit.

Move
Block #23
If D #8 #0
If D #8 #0
If D #8 #0
If D #8 #7
Copy 0 C
Copy D+1 D
If *#E #9 #10
Copy #23 *#E
If *#E+1 #11 #12
Copy #23 *#E+1
If *#E+2 #13 #14
Copy #23 *#E+2
If *#E+3 #15 #16
Copy #23 *#E+3
If *#E+4 #17 #18
Copy #23 *#E+4
If *#E+5 #19 #20
Copy #23 *#E+5
If *#E+6 #21 #22
Copy #23 *#E+6
Block #E
Flag
PhiNotPi
quelle
Ich freue mich darauf zu sehen, welchen Unterschied dies machen wird. Die Nummer 5 in Zeile 5 wird jedoch eine Endlosschleife provozieren, und es ist auch unwahrscheinlich, dass diese Nummer 7 Ihren Vorstellungen entspricht.
Overactor
@overactor Danke, das waren Fehler, die durch das Hinzufügen einer zusätzlichen Zeile entstanden sind.
PhiNotPi
Kenne ich jemals den Schmerz?
Overactor
1

Rebranding

Move
If D #10 #0
If D #10 #0
If D #10 #0
If D #10 #0
If D #10 #0
If D #10 #0
If D #10 #0
If D #10 #0
Copy 0 C
If *#E=#14 #11 #9
If *#E==#14 #13 #12
Copy D+1 D
Copy #14 *#E
Flag

Dieser Bot versucht, zufällig Flaggen in feindlichen Bots zu finden und durch freundliche Flaggen zu ersetzen. Inspiriert von Cancer Bot.

Sparr
quelle