Hinweis: Diese König-von-der-Hügel- Herausforderung ist abgeschlossen. Dies bedeutet, dass das grüne Häkchen, das C5H8NNaO4 für seine Eingabe zugewiesen wurde. Der Beobachter wird nicht zu einer neuen Antwort verschoben.
Sie können zwar immer noch neue Einträge einreichen, es kann jedoch zu Verzögerungen bei neuen Turnieren kommen, da ich nicht mehr aktiv nach neuen Einträgen suche.
Einführung
In dieser Herausforderung spielst du ein Arcade-Spiel mit dem Titel Der ultimative Samurai-Showdown Ultimate Edition-Spezialversion 2.0 X Alpha Omega Turbo (oder kurz Ultimate Samurai Showdown ). Deine Gegner? Kein anderer als die anderen Mitglieder von Programming Puzzles & Code Golf!
Wie Sie vielleicht von einem PPCG-Arcade-Spiel erwarten, spielen Sie Ultimate Samurai Showdown nicht direkt, sondern schreiben ein Programm, das das Spiel für Sie spielt. Dieses Programm kämpft gegen Programme, die von anderen Benutzern in einem Duell eingereicht wurden. Das geschickteste Programm wird zum ultimativen Samurai von PPCG gekrönt und erhält das grüne Häkchen der Legende.
Spielbeschreibung
Dieser Abschnitt beschreibt die Mechanismen hinter dem Spiel.
Siegbedingung
Ein Match besteht aus zwei Samurai, die gegeneinander antreten. Jeder Samurai beginnt jedes Match mit 20 Trefferpunkten und 1 Ehre . Ein Samurai gewinnt, wenn sein Gegner tot ist und er noch lebt. Es gibt zwei Methoden, mit denen ein Samurai sterben kann:
- Wenn die Trefferpunkte eines Samurai auf 0 gesenkt werden, stirbt er.
- Wenn ein Samurai seine eigene Ehre unter 0 bringt , wird er von den Göttern niedergeschlagen, weil er sich in einem Duell unehrenhaft verhält.
Von den Göttern niedergeschlagen zu werden hat eine höhere Priorität als Trefferpunkte auf 0 zu senken. In einer Situation, in der ein Samurai 0 Gesundheitspunkte und der andere -1 Ehrepunkte hat, gewinnt der Samurai mit 0 Gesundheitspunkten. In einer Situation, in der beide Samurai bei -1 Ehre sind, werden beide von den Göttern niedergeschlagen und das Spiel ist unentschieden.
Ein Match besteht aus bis zu 500 Runden . Wenn alle 500 Runden vergangen sind und das Match noch nicht entschieden wurde (kein Samurai ist gestorben), langweilen sich die Götter und schlagen beide Samurai nieder, was zu einem Unentschieden führt.
Aktionen
In jedem Zug muss der Samurai genau eine der folgenden Aktionen ausführen:
W
Die Samurai sollen warten und nichts unternehmen. Das lässt ihn cool aussehen, hilft ihm aber nicht, seinen Gegner zu besiegen. Dies ist auch die Standardaktion.
B
Der Samurai soll sich auf ehrenvolle Weise vor seinem Gegner verneigen. Dies gefällt den Göttern und somit erhalten die Samurai 1 Ehre. Ehre ist für den Erfolg Ihrer Samurai von entscheidender Bedeutung, da Ehre im Wesentlichen die "Ressource" für dieses Spiel ist - alles bewegt sich von der Ehre ab B
und W
kann sie verringern. Wenn ein Samurai 7 oder mehr Ehre erlangt, erhält er das Schwert der Götter . Die Auswirkungen davon werden unten beschrieben.
Das Verbeugen vor deinem Gegner lässt dich jedoch offen, wenn dein Gegner dich mit seinem Schwert schlagen will. Sei also vorsichtig, wenn du dich entscheidest, dich zu verbeugen.
G
Die Samurai müssen eine Verteidigungsposition einnehmen und sich vor Schwertschlägen schützen. Dieser Zug blockiert erfolgreich alle Schwertschläge, auch solche, die mit dem Schwert der Götter ausgeführt wurden .
Die Götter sehen jedoch einen übermäßig defensiven Samurai nicht gern, so dass dieser Zug 1 Ehre kostet, wenn die Aktion des Samurai in der unmittelbar vorhergehenden Runde ebenfalls Wächter war. Es verbraucht sonst keine Ehre.
I
Der Samurai soll versuchen, seinen Gegner mit einem schnellen Zug seines Schwertes aus der Scheide zu schlagen. Wenn der Samurai 7 Ehre oder mehr hat, wird er das Schwert der Götter anstelle seines regulären Schwertes verwenden. Dieser Zug verbraucht 1 Ehre.
Das schnelle Ziehen ist ein schneller Schlag, der langsamere Overhead-Angriffe schlägt, jedoch gegen Paraden verliert. Wenn der Treffer erfolgreich ist, fügt er 1 Schaden oder 2 Schaden mit dem Schwert der Götter zu .
P
Der Samurai soll versuchen, einen ankommenden Angriff abzuwehren, und dann seinen eigenen Angriff starten. Wenn der Samurai 7 Ehre oder mehr hat, wird er das Schwert der Götter anstelle seines regulären Schwertes verwenden. Dieser Zug verbraucht 1 Ehre.
Die Parade ist ein gutes Manöver gegen schnelle Schläge, wird aber durch langsamere Overhead-Angriffe überwältigt. Wenn der Treffer erfolgreich ist, fügt er 1 Schaden oder 2 Schaden mit dem Schwert der Götter zu .
O
Der Samurai soll versuchen, seinen Gegner mit einem langsameren Überkopfangriff zu schlagen. Wenn der Samurai 7 Ehre oder mehr hat, wird er das Schwert der Götter anstelle seines regulären Schwertes verwenden. Dieser Zug verbraucht 1 Ehre.
Der Overhead-Schlag kann Paraden überwältigen, verliert aber gegen schnelle Schläge. Wenn der Treffer erfolgreich ist, fügt er 1 Schaden oder 2 Schaden mit dem Schwert der Götter zu .
Schwert der Götter
Ein Samurai mit einer Ehre von 7 oder mehr erhält die Fähigkeit, das Schwert der Götter zu benutzen . Wenn seine Ehre unter 7 verringert wird, wird ihm die Fähigkeit, das Schwert der Götter zu benutzen , entzogen. Das Schwert der Götter fügt 2 Schadenspunkte statt 1 Schadenspunkt zu.
Das Schwert der Götter lässt nicht zu, dass ein Schlag einen Schwertschlag besiegt, den er normalerweise nicht besiegen würde. Zum Beispiel verliert eine Parade des Schwertes der Götter immer noch gegen einen gewöhnlichen Overhead-Schlag, und ein schnelles Ziehen des Schwertes der Götter wird ein gewöhnliches schnelles Ziehen nicht überwältigen. Tatsächlich ist das sogenannte Schwert der Götter gar nicht so mächtig - vielleicht ist es ein kosmischer Witz, den die Götter spielen ...
Interaktionstabelle
Das folgende Stapel-Snippet enthält eine Tabelle, in der alle möglichen Ergebnisse der verschiedenen Aktionskombinationen, die die beiden Samurai ausführen können, explizit aufgeführt sind. Klicken Sie zum Anzeigen auf "Code-Snippet anzeigen" und dann auf "Code-Snippet ausführen".
Programmkommunikation
Um die Durchführung des Turniers zu erleichtern, wurde ein Controller-Programm geschrieben, das die Rolle der "Götter" übernimmt - es führt Aufzeichnungen über Ehre und Gesundheit und schlägt Samurai entsprechend. In diesem Abschnitt wird beschrieben, wie Ihr Programm mit dem Steuerungsprogramm kommuniziert.
Eingabebeschreibung
Das Steuerungsprogramm ruft Ihr Programm folgendermaßen von der Befehlszeile aus auf:
<command> <history> <enemy_history> <your_health> <enemy_health> <your_honour> <enemy_honour>
woher:
<command>
ist der Befehl, der zum Ausführen Ihres Programms erforderlich ist. Befindet sich Ihr Programm beispielsweise in einer Dateisuper_sentai.pl
, lautet der Befehl wahrscheinlichperl super_sentai.pl
.<history>
ist eine Geschichte von Zügen, die Sie gemacht haben. Zum BeispielWWBP
würde bedeuten, dass Sie zweimal gewartet, einmal gebeugt und einmal pariert haben.<enemy_history>
ist eine Geschichte von Bewegungen, die dein Feind gemacht hat. Zum BeispielBBBI
würde bedeuten, dass Ihr Feind sich dreimal verbeugte und einen schnellen Zug ausführte.<your_health>
ist Ihre aktuelle Gesundheit.<enemy_health>
ist die aktuelle Gesundheit des Feindes.<your_honour>
ist deine aktuelle Ehre.<enemy_honour>
ist die aktuelle Ehre des Feindes.
In der ersten Runde ist das history
und enemy_history
leer, sodass Ihr Programm nur mit den letzten vier Argumenten wie folgt aufgerufen wird:
<command> <your_health> <enemy_health> <your_honour> <enemy_honour>
Bitte seien Sie darauf vorbereitet!
Kluge Leser mögen bemerken, dass die vier Argumente, die die Ehre und Gesundheit beider Samurai beweisen, in gewissem Maße überflüssig sind; da dies ein perfektes informationsspiel ist, kann die ehre und gesundheit der samurai nur anhand der geschichten bestimmt werden.
Diese Werte werden aus praktischen Gründen bereitgestellt, damit Sie die Verlaufsargumente nicht analysieren müssen. Dies sollte sich als nützlich erweisen, um einfache Strategien zu implementieren, z. B. nicht anzugreifen, wenn Ihre Ehre 0 ist.
Ausgabebeschreibung
Wählen sollte eine Aktion, Ihr Programm Ausgang eines W
, B
, G
, I
, P
, oder O
auf die Standardausgabe, je nachdem , welche Aktion Sie machen wollen. Wenn Ihr Programm innerhalb von 1000 ms nichts ausgibt, wird es beendet und Ihr Programm wird so behandelt, als ob es ausgegeben würde W
.
Wenn Ihr Programm mehr als einen Buchstaben ausgibt, wird nur der erste Buchstabe berücksichtigt - die Ausgabe entspricht Parry
also der Ausgabe P
.
Wenn die Ausgabe des ersten Buchstabens Ihres Programms keine der oben aufgeführten Optionen enthält, wird standardmäßig verwendet W
.
Einreichungsformat
Senden Sie ein Programm als Antwort auf diesen Beitrag. Sie können mehrere Programme einreichen. Wenn Sie mehrere einfache Programme einreichen, empfehle ich, diese als einzelne Antwort einzureichen. Wenn Sie mehrere komplexe Programme einreichen, empfehle ich, sie als separate Antworten einzureichen. Sobald ich dein / e Programm (e) erfolgreich zum Turnier hinzugefügt habe, werde ich mit deinem Eintrag ein Commit für das Git-Repository durchführen (siehe unten).
Wenn ich auf Probleme stoße, die verhindern, dass Ihr Programm zum Turnier hinzugefügt wird, hinterlasse ich einen Kommentar zu Ihrem Eintrag, der auf das Problem hinweist.
Bitte fügen Sie Ihrer Einreichung Folgendes bei:
- Der vom Menschen lesbare Name Ihres Programms zur Verwendung in Anzeigetafeln. Leerzeichen sind hier erlaubt; Kommas und Unicode-Zeichen sind nicht.
- Die Sprache, in der Ihr Programm geschrieben ist. Bitte vermeiden Sie es, in fremden, schwer zugänglichen Sprachen wie TinyMUSH zu schreiben.
- Eine kurze Zusammenfassung Ihres Programms. Dies kann eine Beschreibung der Funktionsweise des Programms sein oder nur ein Text über Ihr Programm (wenn Sie alles geheim halten möchten) oder beides.
- Die zum Ausführen Ihres Programms erforderlichen Befehle. Wenn Sie beispielsweise Ihre Übermittlung in Java geschrieben haben
example.java
, geben Sie Kompilierungsanweisungen ein und führenjavac example.java
dann Anweisungen ausjava example
. - Der Quellcode für das Programm.
Als Hilfestellung beim Einreichen stelle ich eine Einreichungsvorlage zur Verfügung, die Sie hier finden . Die Vorlage macht die Einreichungen schöner. Ich empfehle es nachdrücklich.
Ich stelle auch zwei Beispiele zur Verfügung. Obwohl die Beispielbeiträge am Round Robin teilnehmen, besteht ihr Hauptzweck darin, die Eingabe- und Eingabe- / Ausgabeformate für das Turnier zu klären, anstatt ernsthafte Konkurrenten für den Titel Ultimate Samurai zu sein.
Turnierstruktur
In diesem Abschnitt wird beschrieben, wie das Turnier zwischen den Teilnehmern durchgeführt wird.
Steuerungsprogramm
Das Steuerungsprogramm ist in Python 2 geschrieben und befindet sich im Ultimate Samurai Showdown Github-Repository . Wenn Sie es selbst ausführen möchten, finden Sie Anweisungen zum Ausführen in der Datei README.md im Link. Es sind jedoch nur Turniere, die auf meinem Computer ausgeführt werden, offiziell, um Hardware-Unterschiede zu vermeiden, die sich auf die Turnierergebnisse auswirken.
Das Steuerprogramm wird auf einem Laptop unter Arch Linux ausgeführt. Es hat einen Intel Core i7 Prozessor und 8 GB RAM. Ich werde mich bemühen, alle Einträge auf meinem Computer zum Laufen zu bringen, aber ich würde es sehr begrüßen, wenn Sie Sprachen meiden, auf die nicht frei zugegriffen werden kann (da keine Kosten anfallen).
Punktesystem
Das Punktesystem ist ein Round Robin. Jedes Programm spielt acht Spiele gegen jedes andere Programm. Ein Gewinn gewährt dem Programm 1 Punkt, ein Verlust keine Punkte und ein Unentschieden 0,5 Punkte. Das Programm mit der höchsten Punktzahl gewinnt das Spiel. Wenn es ein Unentschieden gibt, werde ich die beiden besten Programme gegeneinander antreten, um den Gewinner zu ermitteln.
Die Häufigkeit, mit der jedes Programm das andere Programm abspielt, kann von 8 verringert werden, wenn eine extrem große Anzahl von Teilnehmern anwesend ist. In diesem Fall werde ich hier einen Hinweis einfügen.
Ich werde das Round-Robin-Verfahren viele Male durchführen, wenn neue Beiträge veröffentlicht werden, aber es zählt nur das aktuellste Round-Robin-Verfahren.
Disqualifikationen
Es ist möglich, dass Ihr Programm vom Turnier ausgeschlossen wird. Eine Disqualifikation kann erfolgen, wenn:
- Ihr Programm wird nicht kompiliert oder ausgeführt.
- Ihr Programm ist ein strategisches Duplikat eines anderen Programms (dh es implementiert genau dieselbe Strategie wie ein anderes Programm).
- Ihr Programm versucht, andere Programme zu sabotieren, indem Sie den Controller-Code, den Code anderer Programme usw. ändern.
- Ihr Programm versucht, einen Fehler im Controller-Code auszunutzen. Anstatt Fehler auszunutzen, sollten Sie stattdessen ein Problem im Git-Repository eröffnen, hier einen Kommentar abgeben oder mich im Chat anpingen.
Vergangene Ergebnisse
Detaillierte Ergebnisse aller Turniere finden Sie auf der Wiki-Seite .
Das letzte Turnier wurde am 2015-07-17 07:20 abgeschlossen. Hier ist eine Zusammenfassung der Ergebnisse:
The Observer: 209.0
Coward: 203.0
Monk: 173.0
Elephant Warrior: 157.0
Iniqy: 157.0
Agent 38: 144.0
Ninja: 138.0
Meiyo Senshi: 138.0
Kakashi: 136.0
Yoshimitsu: 131.0
Hermurai: 121.0
Warrior Princess: 120.0
Gargoyle: 119.5
The Honourable: 119.0
Hebi: 118.5
Predictor: 116.0
Whack-a-mole: 107.0
The Fool: 106.0
The Prophet: 105.0
Copy-san: 97.0
YAGMCSE: 80.0
The Waiter: 66.0
Swordsman: 43.0
Spork Holder: 32.5
Blessed Samurai: 27.5
Attacker: 27.0
The Terminator: 17.0
Master Yi: 16.0
quelle
Antworten:
Der Mönch (Java)
Der Mönch schätzt die Ehre und lobt den Segen der Götter. In Geduld geschult, schickt er ruhig seine Gebete in den Himmel, bis er sich von Gott begünstigt fühlt.
Er genießt sein Leben und versucht es zu beschützen. Wenn er über eine bestimmte Rate an Gesundheit verliert, verteidigt er sich so gut er kann.
In der Hoffnung auf die Unterstützung seiner Götter sendet er nach dem Zufallsprinzip Ejakulationen [1] in den Himmel, ansonsten kämpft er so gut er kann.
Wenn sein Gegner von der Schlacht abgenutzt ist, beendet er ihn mit seiner verbleibenden Ehre, um ihm einen schnellen und schmerzlosen Tod zu gewähren.
Kompilieren / Ausführen
Der Ninja (Java)
Der Ninja ist schnell und greift noch schneller an. Er greift sofort nach einer freundlichen Begrüßung an und verwirrt seinen Feind, indem er sich vor und nach jedem Angriff verbeugt.
Nachdem der Ninja gesegnet wurde, hält er an diesem Verhalten fest und wartet darauf, dass sein Gegner seine ersten Schritte unternimmt. Bei dieser Gelegenheit entfesselt er eine Reihe von Explosionen, die von der Ninja-Göttin gesegnet werden, bis er vom Kampf zu erschöpft ist. Mit seiner verbleibenden Ehre versteckt er sich unter den Blättern und schützt sich vor dem nächsten Angriff. Er springt heraus und greift seinen Gegner von hinten an, wobei er wieder so schnell versteckt ist.
Wenn er eine tödliche Wunde erleidet, geht er alle Anstrengungen, um das Leben seines Gegners mitzunehmen - natürlich unter Wahrung einer gewissen Ehre.
Kakashi, Der Nachahmer Ninja (Java)
Kakashi kopiert die Züge seines Gegners, indem er zufällig zwischen den letzten beiden Zügen des Gegners wählt. Wenn der Gegner wartet, verbeugt er sich - er behält auch seine Ehre.
Ich wünschte, Kakashi könnte mit dem Sharingan gesegnet werden. Ich dachte darüber nach, die cast.txt zu lesen. Simulieren Sie jede Runde seiner Geschichte gegen jeden Gegner. Versuchen Sie herauszufinden, gegen welchen Gegner er kämpft, indem Sie die simulierte Feindgeschichte mit der tatsächlichen Feindgeschichte vergleichen. Verwenden Sie diese Informationen dann, um den nächsten Zug vorherzusagen, den der Gegner ausführen würde, und wählen Sie den besten Gegenzug aus einer vordefinierten Liste aus. Aber ich denke, das könnte ein bisschen dauern, da ich im Moment über ein sehr langsames Internet verfüge und keine Java-Kenntnisse habe
Der Beobachter, (node.js)
Der Beobachter verbeugt sich, bevor er versucht, den nächsten Zug des Gegners aus den letzten 5 Zügen vorherzusagen. Dabei wählt er das beste Gegenstück für den vorhergesagten Zug.
Edit: Vielen Dank an @apsillers für die Freigabe der node.js Boilerplate !.
Edit: Ich hatte einen großen Fehler im Beobachter, ich weiß eigentlich nicht, was ich gestern Abend gedacht habe. Es scheint, als hätte er nur die letzten beiden Züge des Feindes betrachtet. Das hat ihm überraschend gut gefallen.
Sein Gedächtnis wird nun nach dem längsten (End-) Teil der Feindgeschichte abgefragt, den er bereits gesehen hat. Dieser enthält ein Array mit allen Zügen, die dem Verlauf der Züge gefolgt sind. Einer wird zufällig ausgewählt. Wenn also ein Zug öfter ausgeführt wird, ist es auch wahrscheinlicher, dass er ausgewählt wird. Ein bisschen wie Markov-Ketten.
Der Beobachter, jetzt auch Wachen.
[1]: TIL: Ejakulation hat eine religiöse Bedeutung
quelle
Meiyo Senshi (Java)
Aus der Region Haijima stammend, ist über die Meiyo nicht viel bekannt. Sie nehmen normalerweise nicht an Sportspielen teil, sondern haben einen Krieger zu diesem geschickt, um ihre Rivalen einzuschätzen.
Sie sind jedoch ein ehrenwerter Haufen, so dass Sie sicher sein können, dass er den Göttern seine Anwesenheit in kurzer Zeit mitteilen wird. Sobald er genug von seinem Feind gesehen hat, um sich zu melden, wird er die erhaltenen Segnungen nutzen, um seinen Gegner niederzuschlagen.
Das Kompilieren von run erfolgt auf die Java-Standardmethode:
quelle
Spork Holder (Ruby)
Spork Holder verbeugt sich in der ersten Runde und agiert danach nach dem Zufallsprinzip. Es ist einer der beiden Beispieleinträge.
Befehl:
ruby spork-holder.rb
Der Kellner (bash)
Der Kellner wartet nur in jeder Runde. Es ist einer der beiden Beispieleinträge.
Befehl:
echo W
Es ist kein Quellcode erforderlich.
quelle
Feigling (Node.js)
BXBXBX
/BBB
Muster verbeugen (oder dich schlagen), wenn du dich verbiegst.GXGXGX
Muster verbiegen, wenn Sie bewachen.Wenn Sie eine Node.js-Einsendung schreiben möchten , können Sie gerne meinen Kesselschild-Code verwenden. alles bis einschließlich der
decide
funktion ist ganz allgemein und frei zu nehmen.quelle
Schlag ein Maulwurf (R)
Schlägt zu, wenn der Feind sich wahrscheinlich verneigt, sonst Wachen.
Führen Sie mit
Rscript Whack-a-mole.R
.quelle
Elefantenkrieger (Java)
Der Elephant Warrior stammt aus einer älteren, natürlicheren Zeit. Er hat viel gesehen und erinnert sich an alles. Er geht mit den Göttern einen Gefallen ein, während er seinen Gegner untersucht, und sobald er sie in sein Herz nimmt, nimmt er sie auseinander.
Kompilieren:
javac ElephantWarrior.java
Befehl:
java ElephantWarrior
quelle
args
.Kriegerprinzessin (Julia)
Dies ist die erste King of the Hill-Herausforderung, an der ich teilgenommen habe. Mal sehen, wie das geht.
Die Kriegerprinzessin priorisiert Angriff und Ehre und greift bei Bedarf auf die Selbsterhaltung zurück. Sie ist ziemlich eifrig und wartet nie. In dem Bestreben, flink zu bleiben, greift sie auch nicht über Kopf an.
Speichern unter
warrior-princess.jl
und führen Sie von der Befehlszeile aus wie folgt aus:Wenn Sie Julia nicht haben, können Sie sie hier herunterladen . Um Probleme zu vermeiden, wird die neueste stabile Version empfohlen (dh nicht die Entwicklungsversion).
quelle
Wasserspeier (Java)
Versucht, die Defensive zu nutzen, ohne Ehre zu verschlingen.
Da es ein Java-Eintrag ist:
quelle
Schwertkämpfer (C / Java)
Schwertkämpfer verbeugt sich in der ersten Runde und wann immer ihm die Ehre ausgeht. Er prüft dann, ob der Gegner in der vorherigen Runde nicht gebeugt oder verteidigt oder gewartet hat. Wenn der Gegner dies nicht getan hätte, besteht eine große Wahrscheinlichkeit, dass er in der aktuellen Runde eine dieser Aktionen ausführt und der Schwertkämpfer den Gegner zufällig angreift. Wenn dies nicht zutrifft, verteidigt er, wenn er den vorherigen Zug nicht verteidigt hat. Wenn ja, verbeugt er sich, um Ehre zu erlangen.
C-Version:
Installieren Sie GCC (Compiler) und speichern Sie den Code zum Kompilieren in einer Datei mit dem Namen " Swordsman.c ":
Die ausführbare Datei " Swordsman " wird erstellt. Führen Sie mit
Java-Version:
Installieren Sie javac (Compiler) und speichern Sie den Code in einer Datei mit dem Namen " Swordsman.java " zum Kompilieren:
Die Klassendatei " Swordsman.class " wird erstellt. Führen Sie mit
Angreifer (Java)
Angreifer kümmert sich um nichts, außer dass er seinen Gegner tot sehen will. Er trifft zufällig einen der Angriffszüge und verbeugt sich, wenn er eine geringe Ehre hat.
Installieren Sie javac (Compiler) und speichern Sie den Code in einer Datei mit dem Namen " Attacker.java " zum Kompilieren:
Die Klassendatei " Attacker.class " wird erstellt. Führen Sie mit
Prädiktor (C / Java)
Predictor sagt voraus, dass sich die Feinde bewegen. In der ersten Runde wird ein zufälliger Zug ausgeführt. Verbeugt sich, wenn seine Ehre niedrig ist, schlägt zu, wenn die Ehre des Gegners niedrig ist oder sich in der vorherigen Runde verbeugt hat. Wenn der Prädiktor die vorherige Runde nicht bewacht hat, bewacht er die aktuelle Runde. Andernfalls macht er den gleichen Zug wie der Feind in der vorherigen Runde, vorausgesetzt, dass dies nicht
'W'
der Fall ist, verbeugt sich Predictor.C-Version:
Installieren Sie GCC (Compiler) und speichern Sie den Code zum Kompilieren in einer Datei mit dem Namen " Predictor.c ":
Die ausführbare Datei mit dem Namen " Predictor " wird erstellt. Führen Sie mit
Java-Version:
Installieren Sie javac (Compiler) und speichern Sie den Code zum Kompilieren in einer Datei mit dem Namen " Predicator.java ":
Die Klassendatei " Predicator.class " wird erstellt. Führen Sie mit
Ich bin mir nicht sicher, wie effektiv diese Bots sein werden, da ich keinen python2-Interpreter habe, um sie zu testen.
quelle
ArrayIndexOutOfBoundsException
der ersten Runde eine zu geben, sodass er in der ersten Runde wartet. Ansonsten funktioniert es.segmentation fault (core dumped)
Meister Yi (Python)
Der Meistermörder gewinnt im frühen Spiel viel Gunst und baut es auf, bis er unbesiegbar ist. Versucht anzugreifen, wenn sie es am wenigsten erwarten.
Ausführen: Speichern unter
MasterYi.py
quelle
Kopie-San (C)
Kopiert jede Bewegung seines Gegners. Ich bin mir ziemlich sicher, dass er garantiert verlieren wird. Kompilieren:
gcc copy-san.c
quelle
Hebi (Java)
Hebi folgt dem Weg der Schlange.
Die Schlange braucht keinen Segen der Götter.
Die Schlange zerschlägt ihre Schläge; Wie Wellen am Strand tritt das, was hereinkommt, auf die Weise zurück, wie es gekommen ist.
Die Schlange wartet nie.
Die Schlange hat kein Gespür für Eignung, ansonsten wäre sie in Python geschrieben worden.
Laufanleitung:
Code body:
quelle
Der Ehrenwerte (Java)
Die Ehrenwerte ehren vor allem. Das heißt, seine Ehre steht über der aller anderen. Wenn der feindliche Samurai größere oder gleiche Ehre hat, verbeugt er sich. Niemand soll ehrenvoller sein als er. Ansonsten macht er einen zufälligen Zug. Er bewacht nie zweimal hintereinander - das wäre unehrenhaft!
kompilieren:
Quelle:
quelle
Seliger Samurai (Python)
Dieser Samurai versucht, die Gunst der Götter so lange wie möglich zu bewahren. Er beeilt sich, um das heilige Schwert zu holen, wechselt dann zwischen Bewachen und Angreifen mit einem der Schläge, um bei Bedarf die Ehre wieder aufzufüllen. Wenn es so aussieht, als ob er oder sein Gegner bald fallen könnten, stürzt er sich auf einen Kill. Er wird leicht auf einen Gegner fallen, der sein Muster verfolgen kann, aber seine Strategie, immer mit zwei Schadenspunkten anzugreifen, sollte ziemlich effektiv sein.
So führen Sie es aus:
Speichern Sie es als BlessedSamurai.py
quelle
last
zuself.last
denen scheint das Problem zu beheben.Hermurai (C ++)
Bewundert seinen Gegner und ist ein bisschen paranoid. Will wissen, ob er das kann, was andere Samurai können, weil er sich immer noch nicht glauben kann, ein Samurai zu sein. Sein nie verblassender Traum wurde Wirklichkeit, bevor er es wusste. Was seinen Kopf kosten könnte ...
Iniqy (C ++)
Schlägt so hart wie möglich zu. Geht in den unaufhaltsamen Angriffsmodus, wenn er in Gefahr ist.
Beide sind in C ++ geschrieben. Kompilieren:
Um unter Linux zu laufen:
./iniqy
Unter Windows ausführen:
iniqy.exe
quelle
Der Terminator (Rubin)
Der Terminator achtet nicht auf seine eigene Gesundheit. Der Terminator hat keine Vorstellung von Ehre. Der Terminator wird aus der Zukunft geschickt und ist einfach entschlossen, seinen Gegner zu beenden. Es tut dies, indem es die Bewegungen seiner Gegner beobachtet und sonst nichts. Es tastet die Bewegungen ab und berechnet die entsprechende Reaktion auf eine so komplizierte Weise, dass keine aktuelle Technologie die Aktionen des Terminators vorhersagen kann. Tatsächlich mag der Terminator für jeden, der im Jahr 2015 lebt, etwas zufällig erscheinen ...
quelle
Agent 38 [1] (C)
Als Produkt der umfangreichen genetischen Manipulation, hat 38 - Agent die Physis und mentale Schärfe eines Super [2] -samurai und ist auf jeden Fall besser als alle seine hilflos [Bearbeiten] fehlerhaft [Bearbeiten] Konkurrenten.
[1] Völlig irrelevante Zahl [2] 1% der Zeit ist die Wahrheit
YAGMCSE
Monte-Carlo-Methoden scheinen ein anständiges Spiel zu bieten.
Im Gegensatz zu den meisten anderen Einträgen in diesem Wettbewerb verwendet dieser Eintrag eine große Anzahl von Simulationen von Zufallsspielen und erfordert daher die Verwendung des -O3-Flags, um eine optimale Leistung zu erzielen.
Kompilieren Sie das Programm mit dem Befehl: gcc monte.c -o monte -O3 -std = c99
quelle
GBWWWWW...
oderBWWWW
Nach meinem fehlgeschlagenen Versuch, Target Dummy zu betreten, präsentiere ich Ihnen meinen nächsten Bot ...
ScroogeBot - Python 2
Dieser Bot verbeugt sich, wenn er eine Ehre hat. Sonst wirft er eine Münze.
Wenn es auf dem Kopf landet, führt er einen zufälligen Angriff durch. Wenn es auf dem Schwanz landet, wird er sich entweder verneigen oder beschützen.
Befehl:
python scroogebot.py
quelle
Yoshimitsu (JS)
Versuche, durch das Überprüfen der letzten beiden Züge nicht bewacht zu werden, werden mit höherer Ehre tapfer. basierend auf der vorlage apsillers gemacht
quelle
Der Narr (C)
Der Narr bittet um eine ziemlich unberechenbare Strategie, niemals denselben Zug zweimal zu wiederholen, es sei denn, er wird durch mangelnde Ehre dazu gezwungen. Seine Bewegungen basieren größtenteils auf Zufälligkeit, was es schwierig macht, seine Handlungen vorherzusagen. Sein Wohlergehen ist das Letzte, was ihn beschäftigt, da seine Gedanken nur auf Blutvergießen und den endgültigen Sieg gerichtet sind
Der Prophet (C)
Der Prophet nutzt das Wissen der vorherigen 2 Züge seines Gegners, um seinen nächsten Zug vorherzusagen und bietet einen schnellen und tödlichen Gegenangriff. Außerdem macht er Astrologie und so.
Zusammenstellung
Beide Programme sind in C geschrieben und können kompiliert werden mit
gcc
:Laufen
* nix
Windows
quelle