Höhlenmensch verrückt. Andere Höhlenmenschen nehmen Stock, aber Stock war für mich. Höhlenmensch Kampf !
Beschreibung
Höhlenmenschen brauchen scharfe Stöcke, um andere Höhlenmenschen zu erstechen. Andere Höhlenmenschen versuchen ebenfalls mit spitzen Stöcken zu stechen. Caveman kann Schläger schärfen, mit Schlägern stechen oder knifflige Schläger blockieren.
Wenn ein Höhlenmensch einen anderen Höhlenmenschen mit einem spitzen Stock stößt, rennt ein anderer Höhlenmensch weg und ich habe gewonnen. Aber wenn andere Höhlenmenschen klug blocken, wenn ich stoße, passiert nichts, außer dass mein Stock stumpf wird und ich wieder scharf machen muss.
Höhlenmensch faul. Auch Höhlenmensch dumm. Caveman weiß nicht, was zu tun ist, also braucht Caveman ein ausgefallenes Techno-Computerprogramm, um Caveman zu sagen, was zu tun ist.
Eingang
Die Eingabe Ihres Programms ist eine Historie der Ereignisse, bei denen S
für Schärfen (dh der Höhlenmensch hat seinen Stock geschärft), P
für Stoßen und B
für Blockieren steht. Die Eingabe ist eine Historie beider Seiten (Sie und der Gegner), sodass Ihre und die Bewegungen des Gegners durch ein Komma ( ,
) getrennt werden.
Beispiel Eingabe:
SPB,SBB
Dies bedeutet, dass der Spieler seinen Stock geschärft, dann gestoßen und dann geblockt hat und der Gegner geschärft, dann geblockt und dann wieder geblockt hat.
Sie erhalten in Runde 1 keine Eingabe.
Ausgabe
Die Ausgabe ist der Eingabe sehr ähnlich (weil der Höhlenmensch nicht sehr schlau ist). Ihr Programm sollte S
zum Schärfen, P
zum Anstoßen und B
zum Blockieren ausgegeben werden . Nur das erste Zeichen der Ausgabe wird berücksichtigt, und jede andere Eingabe wird als B
(Block-) Befehl behandelt.
S
: schärfenBeim Schärfen erhöht sich die Schärfe des Höhlenmeisters um 1 und der Stock erhält 1 zusätzlichen Stoß. Jeder Stoß verringert die Schärfe des Stocks um 1, und wenn die Schärfe des Stocks 0 ist, ist es zu langweilig, um damit zu stoßen. Die Schärfe beginnt bei 0. Wenn die Schärfe 5 erreicht, ist der Stab ein Schwert! (Siehe unten.)
Wenn der Gegner während des Schärfens drückt (und die Schärfe> 0 ist), gewinnt der Gegner!
P
: steckenBeim Stoßen sinkt die Schärfe des Höhlenmeisters um 1 und Sie stoßen Ihren Gegner an! Wenn Ihr Gegner schärft, gewinnen Sie! Wenn der Gegner stößt, trifft Ihr Schläger den Schläger Ihres Gegners und beide werden stumpfer (um 1 "Schärfeeinheit"). Wenn der Gegner blockt, passiert nichts, außer dass Ihr Schläger stumpfer wird.
Wenn Sie stoßen, wenn die Schärfe Ihres Schlägers 5 oder mehr beträgt, wird Ihr Schläger zum Schwert und Sie gewinnen immer ! (Es sei denn, dein Gegner hat auch ein Schwert und hat ebenfalls gewählt
P
. In diesem Fall werden beide stumpfer und können zu Stöcken zurückkehren, wenn ihre Schärfe unter 5 fällt.)Sie können nicht mit einer Schärfe von 0 stoßen. Wenn Sie dies tun, passiert nichts.
B
: BlockWenn Sie blocken, passiert nichts, wenn Ihr Gegner stößt. Wenn dein Gegner nicht stößt, macht der Block nichts.
Das Blockieren schützt nicht vor einem Schwert, auch wenn Sie eines haben!
Regeln und Einschränkungen
Zusätzliche Regeln sind:
- Ihr Programm kann Dateien in einem eigenen Ordner lesen und schreiben (kein Diebstahl!), Wenn Sie Daten speichern möchten, aber auf nichts außerhalb zugreifen können (und Höhlenmenschen haben keine Internetverbindung in der Wildnis).
- Wichtiger Hinweis zu Dateien : Wenn Sie Dateien speichern, denken Sie daran, diese im Verzeichnis zu speichern
players/YourBotsName/somefile.foo
! Das aktuelle Arbeitsverzeichnis für Ihr Programm wird nicht das Ihres Programms sein!
- Wichtiger Hinweis zu Dateien : Wenn Sie Dateien speichern, denken Sie daran, diese im Verzeichnis zu speichern
- Höhlenmenschen sind fair: Ein Programm kann keinen Code haben, der für ein anderes Programm spezifisch ist, und Programme können sich nicht gegenseitig helfen. (Möglicherweise haben Sie mehrere Programme, die jedoch in keiner Weise miteinander interagieren können.)
- Der Höhlenrichter ist nicht geduldig. Wenn die Höhlenmenschen mehr als 100 Runden brauchen, um einen Gewinner zu ermitteln, langweilt sich der Richter und beide Höhlenmenschen verlieren.
Wenn Ihr Programm gegen eine Regel verstößt oder nicht der Spezifikation entspricht, wird das Programm disqualifiziert, entfernt playerlist.txt
und alle Duelle werden von Anfang an neu gestartet . Wenn Ihr Programm disqualifiziert wird, kommentiert der Caveman-Leiter (ich!) Den Beitrag Ihres Programms und erklärt, warum. Wenn Sie keine Regeln brechen, wird Ihr Programm zur Bestenliste hinzugefügt. (Wenn sich Ihr Programm nicht in der Bestenliste befindet, gibt es keinen erklärenden Kommentar zu Ihrem Beitrag und Sie haben Ihr Programm vor der unten angegebenen "Zuletzt aktualisiert" -Zeit gepostet. Sagen Sie es dem Höhlenmenschenführer! Vielleicht hat er es vergessen.)
Bitte fügen Sie Ihrem Beitrag Folgendes bei:
- Ein Name.
- Ein Shell - Befehl ausführt Ihr Programm (ex.
java MyBot.java
,ruby MyBot.rb
,python3 MyBot.py
, Etc.).- Hinweis: Die Eingabe wird als Befehlszeilenargument angehängt.
- Die Höhlenmenschen verwenden Ubuntu 14.04, stellen Sie also sicher, dass Ihr Code (frei) darauf funktioniert.
- Eine Versionsnummer, wenn Ihr Code in verschiedenen Versionen der von Ihnen gewählten Sprache unterschiedlich funktioniert.
- Dein Code (offensichtlich).
- So kompilieren Sie den Code, falls erforderlich.
Controller Code / Testing, Beispiel Bot
Der Caveman-Anführer schrieb den Kontrollcode in C ++ und stellte ihn auf ein Github-Repo . Dort können Sie Ihr Programm ausführen und testen.
Ein sehr, sehr einfaches Programm (1 Zeile!) Finden Sie auch in den folgenden Antworten .
Wertung und Bestenliste
Die Wertung ist einfach. Welcher Höhlenmensch gewinnt, bekommt einen Punkt. Der Höhlenmensch mit den meisten Punkten nach 3 Duellen gegen jeden anderen Höhlenmenschen wird der neue Höhlenmenschenführer!
150 Watson
147 SpeculativeSylwester
146 Gruntt
141 BashMagnon
126 ChargerMan
125 PrisonRules
124 ViceLeader
122 MultiMarkov
122 CaveDoctor
120 RegExMan
120 Hodor
117 FancyTechnoAlgorithm
116 Semipatient
113 Watcher
108 BobCaves
105 MinimaxMan
104 Oracle
102 MaybeMarkov
97 Nash
95 Sicillian
95 Feint
95 Basilisk
94 SharpMan
93 Darwin
91 Nigel
91 JavaMan
88 Entertainer
88 CarefulBot
85 CaveMonkey
84 SSBBP
82 SirPokealot
79 MasterPoker
77 Unpredictable
76 IllogicalCaveman
75 SharpenBlockPoke
75 HuddleWolfWithStick
72 WoodenShield
68 PokeBackBot
68 PatientBlacksmith
66 PatientWolf
58 MonteCarloMan
58 BlindFury
56 BinaryCaveman
55 PokeBot
55 CavekidBlocks
53 Swordmaster
53 Blocker
52 NakedEarlyNerd
52 ModestCaveman
50 LatePokeBot
40 Trickster
39 SwordLover
38 ForeignCaveman
36 Swordsmith *
28 Touche
27 WantASword
27 FoolMeOnce
24 PeriodicalCavemanCicada
11 Aichmophobic
(Diese Rangliste wurde automatisch magisch generiert)
Spieler, die mit einem gekennzeichnet sind, *
haben irgendwann einen Fehler oder eine Ausnahme geworfen. Diese Spieler haben auch einen Kommentar zu ihren Beiträgen.
Spieler , die nicht mehr in den Tests aus irgendeinem Grunde aufgenommen werden (diese Spieler einen Kommentar über ihre Beiträge haben das Problem zu erklären): Monkey
, Elephant
, FacileFibonacci
, StudiousSylwester
.
Letzte Aktualisierung: 3. August 00:15 (UTC).
quelle
Antworten:
Darwin - C
Wer braucht schon Strategie? Lassen Sie eine Gruppe Höhlenmenschen aufeinander los und lassen Sie die natürliche Auslese den Rest erledigen!
Wir verwenden ein sehr einfaches Modell für das primitive Gehirn unseres Höhlenmenschen: Es hat kein Gedächtnis und berücksichtigt nur die Schärfe des Stocks seines und seines Gegners. Diese werden als Variablen für ein binäres Polynom einer endlichen Ordnung verwendet. Jeder Aktion (Blockieren, Schärfen und Anstoßen) ist ein Polynom zugeordnet, dessen Ergebnis die relative Wahrscheinlichkeit für die Auswahl dieser Aktion bestimmt. Das ist so ziemlich alles - beginnen Sie mit einigen zufälligen Koeffizienten und optimieren Sie iterativ.
Der Bot:
Kompilieren mit:
gcc darwin.c -odarwin -w -O3
. Führen Sie mit:./darwin <history>
.Der Bot liest die Koeffizienten aus einer
program
implayers/Darwin
Verzeichnis angegebenen Datei (eine andere Datei kann als zweites Befehlszeilenargument angegeben werden). Dieses Programm scheint gut zu funktionieren:Speichern unter
players/Darwin/program
.Das folgende Programm generiert
program
Dateien, die vom Bot verwendet werden können (muss nicht kompiliert werden, wenn Sie dieprogram
obige Datei verwenden):Kompilieren mit:
gcc genprog.c -ogenprog -w -O3
. Führen Sie mit:./genprog [output-filename]
.Watson
Was ist die DNA eines siegreichen Höhlenbewohners? Vielleicht hat dieser Typ die Antwort:
Laufen mit:
python Watson.py
Watson ist das Produkt eines genetischen Algorithmus. Im Gegensatz zu Darwin ist das genetische Datum dieses Mal ein aktuelles Programm, das in einer winzigen domänenspezifischen Sprache geschrieben ist (hier in Python übersetzt).
Einfache Sequenz schlägt große Spieler
Dieser kleine Kerl macht sich überraschend (oder vielleicht auch nicht so überraschend) gut, besonders gegen die Führer:
Laufen mit:
python SSBBP.py
quelle
players/Darwin
Verzeichnis lesen / schreiben .undefined reference to `fmax'
. --Edit-- Egal, ich brauchte in der Tat-lm
.Unberechenbarer Höhlenmensch
Dieser Höhlenmensch wählt jede Runde nach dem Zufallsprinzip aus, aber ich habe ihm sehr einfach erklärt, dass bestimmte Aktionen manchmal einfach keinen Sinn ergeben. Fühlen Sie sich frei, diesen Code zu kopieren, wenn Sie eine andere Logik ausdrücken möchten.
Das ist Ruby, speichere es als 'unpredictable.rb' und starte es mit
ruby unpredictable.rb
quelle
no 'Block'
sollte das ja auch sein, wenn mein Gegner ein Schwert hat.unless
für dieno 'Block'
undno 'Poke
Aussagen? (no 'Block' unless he.has_pointy_stick
)Höhlenarzt - Lua
"Ich verliere gegen neue Ausländer, habe sie rausgeschmissen, um sie zu studieren."
Wenn Sie so viele Patienten wie den Höhlenarzt gesehen haben, beginnen Sie, die Psyche des Höhlenmenschen wirklich zu verstehen (hoffe ich zumindest). Das Spiel des Höhlenarztes ist reine Strategie, er wartet auf Stöße, die er blockiert, um seinen Gegner zu entwaffnen, aber er lässt diesen Gegner nicht in die Nähe eines Schwertes kommen. Er versucht vorherzusagen, wann es sicher ist, zu schärfen, damit er nicht die Oberhand verliert.
Laufen mit:
lua CaveDoctor.lua
quelle
ForeignCaveman
ForeignCaveman hat keine Ahnung, was Sie gerade gesagt haben. Er macht nur ... Sachen.
javac ForeignCaveman.java
dannjava ForeignCaveman
quelle
Vize-Leiter
Türklinke ♦ ist führend. Ich will Anführer sein! Folge dem super intelligenten Programm, um führend zu werden!
Kompilieren:
javac ViceLeader.java
Run:java ViceLeader
.quelle
if (enemySharpness <= 4 || mySharpness >= 5)
vs==
?Vielleicht Markov 2.1
Ich denke, es verwendet Markov-Ketten, um vorherzusagen, was der andere Höhlenmensch tun wird, aber ich habe nur kurz auf die Wikipedia-Seite über Markov-Ketten geschaut und festgestellt, dass sie zu viel Text enthält.
Es versucht, 30 Runden am Leben zu bleiben und baut dann eine Tabelle mit den aktuellen und nächsten Statusänderungen auf und reagiert auf die Erwartungen, die der andere Höhlenmensch erfüllen wird.
Der Code enthält eine Menge unnötiger Anweisungen, funktioniert aber ziemlich gut.
BEARBEITEN
Erkannte einen Fehler in der Logik. Jetzt macht es tatsächlich etwas, wenn es ein Schwert hat.
$ python3 players/MaybeMarkov/MaybeMarkov.py
quelle
PeriodicalCicadaCaveman
Dieser ziemlich kluge Höhlenmensch hat einen bestimmten Bug studiert und festgestellt, dass niemand seinen Lebensstil anpassen kann, um die Primzahl Cicada auszunutzen.
Es verbirgt sich für den größten Teil seines Lebens, stößt aber gelegentlich an. Sicher, es ist anfällig für Schwerter und verbringt einen ganzen Zyklus mit einem ungeschärften Stock, aber den Stock schärfen, wenn es total stumpf ist? Genau das erwarten die anderen von ihr ... nicht diese Zikade
Kompilieren: mcs program.cs um mono program.exe auszuführen
Edit: Änderte den sharpness-- Code ... wenn ich drücke, gewinne ich oder mein Stock wird langweiliger
Edit2: In Bobs Vorschlag hinzugefügt
Bearbeiten: Wurde dahingehend geändert, dass nur bei Schärfe 2 gestoßen wird. Wenn der Stock jemals auf Null steht, kann der andere Typ ein Schwert herstellen.
quelle
mcs program.cs
kompiliert es,mono program
führt es aus, aber Sie müssen dasfoo.Dump();
s durchSystem.Console.WriteLine(foo);
(oder eine Erweiterungsmethode hinzufügenpublic static void Dump(this string value) { System.Console.WriteLine(value); }
) ersetzen .mcs
generierte Standarddateiname ist<filename>.exe
,program.cs
würde zB werdenprogram.exe
. Der Befehl run wäre alsomono program.exe
. (Zum Zeitpunkt meines vorherigen Kommentars hatte ich keinen Zugriff auf Mono.)FancyTechnoAlgorithm
Ein ausgefallener Techno-Algorithmus für das ausgefallene Techno-Computerprogramm.
Höhlenmensch verlieren den Kampf. Höhlenmensch wütend. Also Höhlenmensch zur Computerschule gehen lernen, Algorithmus zu machen.
Python 2-Programm. Zu rennen:
python fancytechnoalgorithm.py
quelle
python StickSharpener.py
).Der Beobachter
Er beobachtet die Bewegungen seines Gegners und lässt ihn immer seine Hand zeigen, bevor er zuschlägt. Er ist besonders auf diejenigen vorbereitet, die es versäumen, auf ein Schwert hinzuarbeiten.
Dateiname:
watcher.py
Zu rennen:
python watcher.py
Basilisk
Versucht, diejenigen zu zerstören, die ihn zu genau ansehen. Konsequent schlägt der Watcher, wird aber insgesamt wohl schlechter abschneiden.
Dateiname:
basilisk.py
Zu rennen:
python basilisk.py
Nash
Versucht, die Entscheidungen seines Gegners irrelevant zu machen, indem jeder Zug mit einer Wahrscheinlichkeit ausgewählt wird, die die Risiken und Chancen des Gegners berücksichtigt
Dies ist nicht ganz das Nash-Gleichgewicht (mein Strategie-Generator hat eine gewisse Instabilität), aber es ist nah.
Aus Gründen der Neugier sind hier die Schätzungen, wie wahrscheinlich es ist, dass dieser Bot in jedem Spielzustand gewinnt:
Dateiname:
nash.py
Zu rennen:
python nash.py
Finte
Öffnet mit einem schnellen Angriff, um die Abwehrkräfte seines Gegners zu testen.
Dateiname:
feint.py
Zu rennen:
python feint.py
LatePokeBot
PokeBots kleiner Bruder. Zeigt nie Schwäche, sondern versucht wie sein großer Bruder zu kämpfen.
Dateiname:
latepokebot.py
Zu rennen:
python latepokebot.py
quelle
:
in Basilisk vermisst ; Ich habe das für dich behobenPokeBot
Geschrieben in Ruby.
Laufen Sie mit
ruby pokebot.rb
.Dieser Bot ist nicht sehr schlau; es geht darum, was ein durchschnittlicher Höhlenmensch sowieso alleine tun würde.
quelle
PatientWolf v2.0
Schärft, wenn langweilig, stößt, wenn der Feind in der nächsten Runde ein Schwert hat, oder wenn der Feind langweilig ist, blockt er sonst.
Laufen Sie mit
EDIT: Danke an @sylwester für den Hinweis auf einen Fehler
quelle
PatientWolf.pl SB,SP
tut ein,P
da es denkt, es hat einen scharfen Stock.perl patientwolf.pl "SB,SP"
. Sie solltenmy($me,$him) = split/,/ $ARGV[0];
und tunif( @ARGV ) {print "S";exit}
.Binärer Höhlenmensch
Schärfen, Stechen, Wiederholen
Basierend auf der Idee, dass das Blockieren für Weichlinge ist, wechselt dieser Höhlenmensch zwischen den beiden verbleibenden Optionen.
Kompilieren mit
javac BinaryCaveman.java
Laufen Sie mit
java BinaryCaveman
BEARBEITEN: Adventures in String Arrays ..... args.length () löst einen Fehler aus. args.length gibt immer 1 zurück. args [0] .length () gibt die Längen der ersten Zeichenfolge im Array zurück.
EDIT 2: Dank der Hilfe von Doorknob, Brilliand und Sylwester aktualisiert. Danke Leute.
quelle
P
oderS
ist. Und wenn es noch keine Geschichte gibt, gibt er vor, die Geschichte wäre esP,
(was ihn dann dazu veranlasst, esS
zuerst zu tun ).args[0].length()
nicht seinargs.length
.CavekidBlocks
Ein weinendes und verängstigtes Höhlenkind mag wie eine leichte Beute aussehen. Lass dich nicht von seinem hübschen Gesicht täuschen, denn er weiß, wie man blockt.
Laufen Sie mit
python3 cavekidblocks.py
ChargerMan
Dieser Höhlenmensch ist sehr konservativ. Will versuchen, seine Waffe aufzuladen und greift nur an, wenn es nötig ist.
Laufen Sie mit
python3 chargerman.py
Betrüger
Trickster weiß nicht, wie man kämpft, also versucht er, andere Höhlenmenschen zu verwirren.
Laufen Sie mit
python3 trickster.py
Leider funktioniert Trickster nach dem Commit acc74 nicht mehr wie geplant.
quelle
Hodor
Hodor ist nicht sehr aggressiv. Er bleibt gerne in seinem Schild, es sei denn, es gibt eine gute Gelegenheit zum Streik.
kompiliere mit:
javac Hodor.java
und starte mit:java Hodor
Code:
Bearbeiten: kleinere Code-Aktualisierung
quelle
SB,BB
. Wenn sich andere Höhlenmenschen in der ersten Runde schlecht benehmen, benimmt sich auch Hodor schlecht.Spekulativer Sylwester - Perl5
Der spekulative Sylwester möchte Schwertsucher ausschalten, indem er sich die Muster ansieht und anstößt, wenn die Chance besteht, dass der Gegner schärft und schärft, wenn es am wahrscheinlichsten ist, dass der Gegner blockt. Dies wird er jedoch nicht tun, wenn die Möglichkeit besteht, dass er vermutet hat, dass er sich im nächsten Zug schärft, und wir sind noch vorsichtiger, wenn wir uns für eine Schärfung entscheiden.
Wenn der Gegner stumpf ist, versucht er, aggressiv zu sein, wird aber irgendwann anfangen, für ein Schwert zu sparen, wenn dies fruchtlos erscheint.
Um unter Linux zu laufen, füge dies einfach in die playerlist.txt ein:
Facile Fibonacci - R6RS-Schema
Neben dem ersten Zug blockt Facile Fibonacci, wenn der Zug eine Fibonacci-Zahl ist (ab 0) und füllt den Rest mit
PPSS..
und wechselt, wenn 8 zu einer endlosen Folge vonPSS
, um mit einem Schwert zu gewinnen.Um es zu starten, installiere einfach ikarus mit
apt-get install ikarus
und füge dies in die playerlist.txt ein:Studious Sylwester - Perl5
Der fleißige Sylwester wendet die gleiche Taktik an wie der spekulative Sylwester, sieht sich jedoch auch frühere Spiele an, um festzustellen, wo er möglicherweise eine falsche Wahl getroffen hat.
Um unter Linux zu laufen, füge dies einfach zu playerlist.txt hinzu
Fleißig bearbeiten
Ich kann die Probleme nicht reproduzieren, die Sie hatten,
$0
wenn Sie nicht den vollständigen Pfad zum Perl-Skript angegeben haben, wenn es mit Perl ausgeführt wird. Ich habe auch Ihre Änderungen übernommen und sehe keine Änderungen in CavemanDuels src. Es ist dasselbe, das ich mehr als 20 Mal ausgeführt habe, ohne das Problem, das Sie melden. Ich beginne zu befürchten, dass Sie das Skript als Bash-Skript erstellt haben, anstatt es während der Ausführung oder als Argument für Perl auszuführen. Ich brauche mehr Informationen, um es genau zu wissen. Als Test habe ich das gemacht und Sie können das Gleiche tun, um zu sehen, ob Sie das gleiche Ergebnis erzielen:quelle
$0
wirdbash
von einer Bash-Befehlszeile aufgerufen (was der Controller tut). Sie könnten jedoch nur hart codierenplayers/StudiousSylwester/foo.txt
.ikarus
und ich habe meine Gedanken$0
für Studious hinzugefügt.Schwertschmied
Brauche spitzen Stock. Wenn Sie einen scharfen Stock haben, stecken Sie ihn an. Mir tut es nicht weh.
Speichern unter
swordsmith.f90
und kompilieren mitgfortran -o swordsmith swordsmith.f90
, führen wie jedes normale ausführbare Datei:./swordsmith
.quelle
Patientenschmied
Dieser Bot ist in R geschrieben, um ihn
Rscript PatientBlacksmith.R
auszulösen.Misst die Stockschärfe des Gegners: Blockiert, wenn sie scharf ist, nehmen Sie sich Zeit, um sie zu schärfen. Wenn die eigene Schärfe 5 erreicht, stupsen Sie, bis die Schärfe nachlässt.
quelle
Gefängnisordnung, Haskell
Die Höhlenforscherin denkt, Höhlenmensch und andere Höhlenmenschen sollten reden und sich den Stock teilen. Aber hey ho, wenn kämpfen muss, kämpfe gegen Gefängnisregeln. Finde den Boss und greife an.
ViceLeader Alpha Caveman jetzt; Der Höhlenmensch muss kämpfen. Andere Höhlenmenschen kämpfen später. Wenn mein Höhlenmensch verliert, keine Sorge; Er ist sowieso zu haarig.
Geschrieben in Haskell (gehe zur funktionalen Programmierung!), Speichere also als prisonrules.hs und kompiliere dann mit:
Und laufe als:
quelle
Ich nenne ihn JavaMan
Hinweis: Ich habe nicht die Absicht, Codegolf zu spielen. Aber wenn Sie ein Golfer sind und die Leerzeichen / zusätzlichen Linien Ihre Augen zum Bluten bringen, können Sie dies jederzeit ändern
quelle
Tiefe Gedanken, C
Höhlenmann-Code. Höhlenmensch denken. Höhlenmensch.
Ich teste. Mehr Gedanken besser.
quelle
Nigel
Nigel ist ein geduldiger, defensiver alter Höhlenmensch, der lieber taktisch vorgeht, als alles in Angriff zu nehmen.
Es ist ein PHP-Skript, rufen Sie mit
php nigel.php
quelle
Aichmophobic - Lua
Er wird dich gelegentlich stupsen, aber nur bis der Stock zu scharf wird. In diesem Fall gerät er in Panik und rollt sich in die fetale Position.
Führen Sie es mit:
lua aichmophobic.lua
quelle
Bob Caves
Bob Caves ist einer der klügsten Typen in seiner Höhle. Er hat gelernt, mit einer Hand zu zählen (die andere ist damit beschäftigt, seinen Stock zu halten). Er hat von dieser Steinzeitolympiade gewusst und wollte mitmachen.
Seine Hauptstrategie ist es, seinen Stock zu blockieren und zu schärfen, bis er einen schönen spitzen Stock hat oder der andere Höhlenmensch auch einen spitzen. In diesem Fall versucht Bob Caves ihn zu stoßen!
Kompiliere mit
javac BobCaves.java
und starte mitjava BobCaves
Edit: Bob zählt jetzt, wenn es einen Block gibt! (Danke an Mikey Mouse ). Auch wird er seinen Stock scharf machen, wenn der andere Höhlenmenschenstock stumpf ist.
Edit 2: Verbesserte Zählmethode (nochmals danke an Mikey).
Edit 3: Bob etwas aggressiver machen.
quelle
Gruntt
Gruntt ist defensiv. Gruntt analysiert andere Höhlenmenschen, um zu wissen, wie man sie steckt. Dann sticht er sie direkt ins Auge. Gruntt ist kein netter Höhlenmensch.
Kompiliere mit
javac Gruntt.java
und starte mitjava Gruntt
quelle
ArrayOutOfBoundsException
in der ersten Runde eine aus und gibt manchmal mehrere Aktionen in anderen Runden aus.Ist es ein Vogel? Ist es ein Flugzeug? Es ist RegExMan!
Er versucht mit seiner besonderen RegEx-Urkraft Ihre überaus langweiligen Sequenzen zu analysieren!
In Python 2.7 geschrieben, laufe mit
python RegExMan.py [history]
quelle
Sizilianisch
Aber es ist so einfach! Alles, was ich tun muss, ist, was ich von einem anderen Höhlenmenschen kenne: Ist er der Typ Höhlenmensch, der blockieren, schärfen oder stoßen würde? Jetzt würde ein kluger Höhlenmensch stoßen oder blocken, weil er wusste, dass nur ein großer Dummkopf sich schärfen und angreifen würde. Ich bin kein großer Dummkopf, also kann ich eindeutig nicht schärfen. Aber andere Höhlenmenschen müssen wissen, dass ich kein großer Dummkopf bin und damit gerechnet hätte, damit ich eindeutig nicht stupsen oder blocken kann!
Laufen mit:
Code:
quelle
Bash-Magnon
Bash-Magnonen waren robust gebaut und leistungsstark. Der Körper war im Allgemeinen schwer und fest mit einer starken Muskulatur. Die Stirn war eher gerade als abfallend wie bei Neandertalern und nur leicht runzelig. Das Gesicht war kurz und breit. Das Kinn war hervorstehend. Das Gehirnvolumen lag mit rund 1.600 Kubikzentimetern über dem Durchschnitt des modernen Menschen. Jüngste Forschungsergebnisse legen jedoch nahe, dass die physikalischen Abmessungen des sogenannten "Bash-Magnon" sich nicht ausreichend von den heutigen Menschen unterscheiden, um eine separate Bezeichnung zu rechtfertigen.
Ich habe ein Gehirn, ich erinnere mich.
Dies ist eine selbst ausführbare Datei
./bash-magnon.sh
quelle
PokeBackBot
Einfach angepasst von PokeBot:
Laufen Sie mit
ruby pokebackbot.rb
.Dies verwendet die nächst einfachere Strategie und blockt "geduldig" für eine Runde, bevor angegriffen wird.
quelle
SPS
(was vernünftig erscheint), aber bisher war PokeBot der einzige, der es gab.Schwertmeister
In Python 3.4 geschrieben (funktioniert mit Python 3.x)
Versucht, ein Schwert so schnell wie möglich zu bekommen, greift aber an, wenn es eine Chance hat, ihn zu treffen (Schärfe> 0), und der Feind könnte es auch verletzen (Schärfe des Feindes> 0).
Blockt nur, wenn keine Schärfe vorhanden ist und der Feind angreifen kann.
Beginnen mit:
(angenommen, Sie speichern es als
swordmaster.py
)Schneller und hässlicher Code:
(Stellen Sie
dg
zuTrue
Debug - Nachrichten aktivieren)quelle
S
,P
,S
,P
...FoolMeOnce.py
Speichern Sie die Züge jedes Spielers für das erste Duell und spielen Sie dann mit genau den gleichen Zügen. Wenn der Algorithmus des Gegners nicht zufällig ist, können wir dasselbe Ergebnis vorhersagen und nur dann zuschlagen, wenn wir wissen, dass wir gewinnen werden.
In Python 3 geschrieben, daher müssen Sie höchstwahrscheinlich python3 verwenden. FoolMeOnce.py In der ersten Runde bin ich mir nicht sicher, ob wir eine leere Zeichenfolge oder nur ein Komma erhalten, daher sind möglicherweise einige Anpassungen erforderlich.
quelle