4-Mann-Abstandshalter
Beschreibung
Sie sind irgendwie in eine Vier-Wege-Situation geraten. Eine geladene Waffe liegt in Ihren Händen und einige Granaten sind am Gürtel eingehakt.
Das Ziel ist es, am Ende einer Pattsituation die meiste Gesundheit zu haben. Eine Pattsituation ist beendet, wenn höchstens eine Person einen positiven Gesundheitszustand aufweist.
Jeder Spieler hat 5
Gesundheit und stirbt, wenn seine Gesundheit auf / unter sinkt 0
. Der Zug, an dem ein Spieler stirbt, ist der letzte Zug, an dem der Spieler Schaden erleiden kann.
Wenn sich am Ende eines Abstands ein Live-Spieler befindet, gewinnt dieser Spieler. Andernfalls gewinnt der Spieler mit der geringsten negativen Gesundheit.
Aktionen
Schießen : Schießen Sie auf jemanden.
2
Schaden, wenn ein lebender Feind erschossen wird0
Schaden, wenn ein toter Feind erschossen wirdhealth_at_start_of_turn+2
Schaden, wenn Sie sich selbst erschießen. (Beachten Sie, dass dies Sie mit am meisten-2
Gesundheit verlassen wird.)- Wenn ein Feind in der gleichen Runde, in der Sie selbst geschossen haben, auf Sie schießt, haben Sie -4 Lebenspunkte.
- Deine Aktion in der folgenden Runde wird ignoriert (und als solche angenommen
Nothing
).
Ausweichen : Versuchen Sie, dem Schuss eines einzelnen Gegners auszuweichen.
Vorbereiten : Hängen Sie Ihre Granate aus und bereiten Sie das Werfen vor.
- Du hast nur drei Runden Zeit, um es zu werfen, bevor du in die Luft gejagt wirst (
6
Schaden an dir selbst,3
Schaden an allen lebenden Feinden) - Das Sterben mit einer nicht geworfenen Granate bedeutet, die Granate drei Runden lang nicht zu werfen.
- Du hast nur drei Runden Zeit, um es zu werfen, bevor du in die Luft gejagt wirst (
Werfen : Spann die Granate auf jemanden und hoffe auf das Beste.
- Das Ziel erhält
8
Schaden, wenn es lebt - Jeder andere (auch Sie selbst)
3
erleidet Schaden, wenn er lebt
- Das Ziel erhält
Nichts : Warte eine Weile und beobachte, wie alle sterben.
Eingang
Ihrem Programm werden folgende Informationen übermittelt:
- Die Gesundheit jedes Spielers
Eine Liste der Aktionen, die dieser Spieler seit Beginn des Standoffs ausgeführt hat. Nachfolgend finden Sie das Format für die pro Spieler übergebenen Informationen:
[Health],[Action 1],[Action 2],[Action 3],...
Aktionen werden in dem Format angegeben, das im Abschnitt Ausgabe angegeben ist.
Sie erhalten 4 solche Zeichenfolgen, die durch ein Leerzeichen getrennt und als einzelnes Argument übergeben werden. Die Reihenfolge dieser Zeichenfolgen lautet:
[Player Info] [Opponent 1 Info] [Opponent 2 Info] [Opponent 3 Info]
Die Zeichenfolgen werden als zweites Argument übergeben. Das erste Argument enthält eine Ganzzahl, die den aktivierten Abstand eindeutig identifiziert. Es ist garantiert, dass die Abstände zwischen derselben Gruppe von Spielern nicht gleichzeitig sind. Jedoch mehrere Abstandshalter werden zur gleichen Zeit auftreten.
Zum Beispiel:
$./Player.bash 5 "3,S2,N 5,P,N 3,S0,N -2,S3,N"
Derzeit haben der Spieler und der zweite Gegner 3 Gesundheitspunkte, der erste Gegner hat 5 Gesundheitspunkte und der dritte Gegner hat -2 Gesundheitspunkte und ist tot.
In der ersten Runde:
- Spieler 1 hat Feind 2 erschossen
- Feind 1 bereitete eine Granate vor
- Gegnerischer 2-Schuss-Spieler
- Feind 3 erschoss sich
In der zweiten Runde:
- Alle Spieler haben nichts getan. (Spieler und Feind 2 können nichts tun, da sie in der vorherigen Runde geschossen haben. Feind 3 ist tot: Er wird
Nothing
für den Rest der Distanz sorgen.)
Das zweite Argument zu Beginn einer Pattsituation ist: 5 5 5 5
.
Ausgabe
Ein Befehl sollte im unten aufgeführten Format ausgegeben werden. Eine ungültige Ausgabe wird als 'Nothing' interpretiert. Einem Befehl, der ein Ziel erfordert, sollte eine Ganzzahl folgen ( 0-3
mit der 0
Darstellung des Spielers und der 1-3
Darstellung der Feinde 1-3).
S[target]
: Schießt [Ziel].D[target]
: Versucht, [Ziel] auszuweichen.P
: Bereite eine Granate vor.T[target]
: Wirf die Granate auf [Ziel].N
: Nichts tun.
Ein Befehl, der ein Ziel benötigt, dem jedoch ein Ziel zugeführt wird, das nicht zwischen dem Ziel 0
und / 3
oder einem Ziel liegt, wird als Ziel angenommen 0
(der Spieler).
Wertung
Am Ende jeder Auseinandersetzung erhalten die Spieler eine Punktzahl, die nach der folgenden Formel berechnet wird:
35 + health at end of standoff
Im Fall , dass ein Spieler eine Pattsituation mit negativen gesundheitlichen endet, sie wird eine Punktzahl erhält unter 35 . Die folgenden Punkte werden ebenfalls als Bonus belohnt:
- Meiste Gesundheit: +4 Punkte
- Zweithäufigste Gesundheit: +2 Punkte
- Drittgrößte Gesundheit: +1 Punkt.
Im Falle eines Gleichstands wird der niedrigere Bonus gewährt (bei einem Gleichstand mit zwei Personen mit der höchsten Gesundheit erhalten beide +2; bei drei Personen mit der höchsten Gesundheit +1 und wenn alle gleichermaßen enden, +0).
Die endgültige Punktzahl wird durch Berechnung des Mittelwerts aller Einzelpunktzahlen ermittelt.
Regeln / Details
- Die Reihenfolge der Ereignisse innerhalb einer Runde ist wie folgt:
- Alle Spieler machen ihre Aktionen.
- Spieler mit 0 oder weniger Lebenspunkten sterben.
- Nicht geworfene Granaten, die explodieren müssen, werden explodieren (Spieler, die gerade gestorben sind, sind immer noch verletzt, da sie noch an der Reihe sind, zu sterben).
- Keine Zusammenarbeit zwischen Einträgen.
- Drei * Abstände treten zwischen jedem Satz von 4 Spielern auf. (Die Reihenfolge der Spieler kann mit jedem Standoff variieren.)
- Einträge, die übermäßig viel Speicherplatz beanspruchen, werden disqualifiziert.
- Das Lesen oder Ändern von Dateien, die nicht zu Ihren Einträgen gehören, disqualifiziert Ihren Eintrag.
- Ein von einem Betrunkenen gefahrener LKW überfährt nach dem
50th
Zug alle lebenden Spieler , wenn die Pattsituation am Ende des50th
Zuges noch nicht vorbei ist .- Dieser LKW fügt allen lebenden Spielern 20 Schadenspunkte zu.
- Standoffs passieren schnell. Programme werden nach 1 Sekunde abgebrochen.
- Ihr Programm wird in jeder Runde aufgerufen, auch nachdem Sie gestorben sind.
- Sie können nur Dateien in Ihr Verzeichnis lesen oder schreiben (wenn Ihr Eintrag den Namen JohnDoe trägt, können Sie Dateien im Verzeichnis player / JohnDoe / speichern). Dies ist jedoch NICHT das aktuelle Verzeichnis, während Ihr Skript ausgeführt wird.
- Die Abstände finden auf einem Computer statt, auf dem Arch Linux ausgeführt wird (Release 2014.08.01).
Der Controller ist auf GitHub verfügbar .
Bitte fügen Sie Ihrem Beitrag Folgendes bei:
- Ein Name für Ihren Bot
- Ein Shell-Befehl zum Ausführen des Bots (z.
java Doe.java
B.). Die Eingabe wird als einzelnes Argument (java Doe.java 5 "-2,S0 -2,S1 -2,S2 5,N"
) über die Befehlszeile übergeben. - Code Ihres Bots
- Wie der Bot kompiliert werden soll (falls zutreffend)
- Sprache (und ggf. Version, insbesondere für Python)
* Controller dauert viel zu lange für sechs.
Anzeigetafel
Observer 43.280570409982
MuhammadAli 43.134861217214
Osama 43.031983702572
LateBoomer 42.560275019099
SimpleShooter 42.412885154062
LessSimpleShooter 42.3772
Neo 42.3738
Scared 42.3678
Richochet 42.3263
Equivocator 42.2833
TwentyFourthsAndAHalfCentury 42.2640
Darwin 42.1584
HanSolo 42.1025
Coward 42.0458
ManipulativeBastard 41.8948
Sadist 41.7232
Aggressor 41.7058
CourageTheDog 41.5629
Grenadier 40.9889
Bomberman 40.8840
Spock 40.8713
Sniper 40.6346
DONTNUKEMEBRO 39.8151
PriorityTargets 39.6126
Hippolyta 39.2480
EmoCowboy 39.2069
Zaenille 39.1971
AntiGrenadier 39.1919
PoliticallyCorrectGunman 39.1689
InputAnalyzer 39.1517
Rule0Bot 39.1000
BiasedOne 39.0664
Pacifist 39.0481
StraightShooter 39.0292
Ninja 38.7801
MAD 38.2543
Monkey 37.7089
Label1Goto1 36.2131
Generated: 2014/08/22 03:56:13.470264860 UTC
Protokolle: auf GitHub
quelle
Antworten:
Beobachter
Dieser Typ analysiert seine Feinde. Das Ziel ist es, zu überleben, bis nur noch ein "aggressiver" Gegner übrig ist, und diesen dann in einem epischen Gefecht zu töten.
Kompilieren:
javac Observer.java
Ausführen:java Observer arg0 arg1
quelle
!player.contains("S" + id)
Ist dies eine notwendige Bedingung in der Funktion "isAggressive"? Ein selbstmörderischer Spieler wird sowieso tot seinGrenadier
Waffen sind überbewertet. Ein echter Schottenstreit sieht so aus:
Während dies trivial erscheint, ist es wahrscheinlich keine schreckliche Strategie. Da Gewehren und Granaten haben beide eine zwei wiederum Zyklus ist dies bei weitem die effizientere 1 Art und Weise Schaden zuzufügen.
Natürlich ist es nicht gut, wenn alle drei Gegner in der ersten Runde auf mich schießen. Aber sonst wäre es auch nicht viel.
Kompilieren Sie / führen Sie in der Standard-Java-Weise aus:
1 Sinnlose Fußnote
quelle
Asimovs Regel Nummer 0 Bot - Python
Er greift den ersten Spieler an, den er mit einer Granate sieht, um die Mehrheit der Menschen zu schützen. Wenn niemand die Mehrheit der Menschen bedroht, wird er nichts tun.
Führen Sie es wie folgt aus:
quelle
Han Solo - Python
Han schoss zuerst. In diesem Fall schießt er zuerst, indem er das nächste lebendige Ziel auswählt.
Führen Sie es wie folgt aus:
Hinweis : Dies ist das erste, was ich jemals in Python geschrieben habe. Wenn Sie also Python-spezifische schlechte Praktiken bemerken, lassen Sie es mich bitte wissen.
quelle
is_alive
EmoCowboy
Warum warten, um zu sterben? Töte dich jetzt einfach. Hoffentlich sprengen sich die anderen Dummköpfe gegenseitig bis auf weit unter -2.
Punktzahl wird normalerweise -2 sein. Manchmal -4, wenn Leute beschließen, mich vom Hieb zu schießen. Selten mehr als das, was bedeutet, dass dies einige der aktuellen Einreichungen schlagen sollte.
Python
EDIT: Dies ist kein Scherz, weshalb diese Emo-Einreichungen im Allgemeinen verpönt sind. Dies ist eine legitime Strategie. Am Leben zu sein ist tödlich!
quelle
Pazifist
Er ist ein echter Swell-Typ, hat sich gerade mit der falschen Menge angefreundet.
Ausführen als
runghc pacifist.hs
, aber Sie können es mit -O3 kompilieren, wenn Effizienz ein Problem ist.quelle
-O3
es einen verdammten Unterschied macht.runghc
Seite. Eigentlich ist es auf meiner Linux-Box 10-mal langsamer.Monkey - Python (Erster Eintrag!)
Affe sehen, Affe tun. Wiederholt genau die letzte Aktion eines zufälligen Spielers.
Kann folgendermaßen ausgeführt werden: "python monkey.py args" Keine zusätzlichen Schritte erforderlich.
quelle
-1
direkt.argv[2]
die Spielerhistorie erhalten.Simple Shooter - Perl (Fehler behoben)
Dieser Bot schießt auf den Gegner mit der größten Gesundheit. Es ist eine sehr einfache Strategie, aber ich denke, sie hat eine gute Chance, tatsächlich gut abzuschneiden.
So führen Sie es mit einer Beispieleingabe aus:
quelle
Spock, in Python 3.x
Dieser Code ist eher ein Versuch (daher nach Spock benannt, weil ... er ein Vulkanier ist und sie in solchen Dingen ziemlich gut sind), aber es hat Spaß gemacht, ihn trotzdem zu erstellen. Die Hauptgründe für all diesen Code sind Annahmen, die ein gutes, logisches Wesen wie Spock machen würde, wenn die Spielregeln gegeben wären:
Das Ziel dieses Spiels ist es, die Punktzahl zu maximieren , was jeder tun würde, der nur stillsteht, was aufgrund des Trucks nicht möglich ist.
Die Art und Weise, wie Spock im Rest des Spiels spielt, kann durch sein berühmtes Zitat zusammengefasst werden: " Die Bedürfnisse der Vielen überwiegen die Bedürfnisse der Wenigen ". Mit anderen Worten, Spock muss sicherstellen, dass der geringste Schaden entsteht, indem er diejenigen tötet, die ihn verursachen. Wie er es macht:
Der Grund dafür ist, dass wir durch das Zielen auf die schwächsten Spieler Schadensquellen ausschalten. Der Grund für die Granaten ist, dass sie unabhängig davon losgehen und weniger Schaden anrichten, wenn sie nicht geworfen werden.
Und so funktioniert dieser Bot. Ich habe nicht ausgiebig auf Eingabefehler getestet (also warnen Sie mich, wenn etwas schief geht), aber ich bin zuversichtlich, dass ich die meisten Probleme behoben habe. Ich habe einen kleinen Teil des Codes aus dem HanSolo-Bot verwendet, aber zum größten Teil handelt es sich um ein Wirrwarr von Code. Genießen.
Führen Sie es wie folgt aus:
2014-08-12 - Kleinere Fehlerbehebung in Bezug auf die Granatenerkennung
2014-08-14 - Kleinere Fehlerbehebung in Bezug auf das Endspiel, dank isaacg für den vorherigen Hinweis
quelle
Traceback (most recent call last):
File "./players/Spock/Spock.py", line 87, in <module>: Endgame(current_turn)
File "./players/Spock/Spock.py", line 79, in Endgame: if IsTarget(player, target_health):
File "./players/Spock/Spock.py", line 4, in IsTarget: return int(player[1].split(",")[0]) < target_health
TypeError: unorderable types: int() < str()
player[1][1]
sollte seinint(player[1][1])
.Politisch korrekter Schütze
Sehr politisch korrekt, da es nichts diskriminiert. Daher ist es nicht sehr schlau.
Es ist eigentlich egal, welche Argumente wie an sie weitergegeben werden.
python politicallycorrectgunman.py
quelle
random.choice(array)
?Straight Shooter
Er ist ein ausgebildeter Teil der Kavallerie und spricht in vielen Sprachen, aber wenn Straight Shooter blinzelt, kann er nur den einen Feind vor sich sehen. Als Pferd versteht er nicht, dass man zwischen den Schüssen warten muss.
Perl, Python 2/3, Ruby: Dieses Pferd ist wirklich ein Polygot-Eintrag.
Für eine Antwort, die ein wenig mehr Gedanken (und ein funktionelles Paradigma) enthält, siehe Vierundzwanzigstes und ein halbes Jahrhundert .
quelle
Anti-Grenadier
Granaten sind schlecht. Sehr schlecht. Wenn also jemand eine vorbereitet, ist es am besten, sie zu erschießen. Ansonsten bleiben wir einfach.
quelle
Ricochet - Perl
Einfache Strategien scheinen in dieser Herausforderung angemessen zu sein, hier ist eine andere. Es schießt einen zufälligen lebenden Spieler. Es hat die zusätzliche Eigenschaft, am Ende Selbstmord zu begehen, um dem Lastwagen auszuweichen.
Laufen Sie wie folgt:
quelle
Aggressor
Zieht in Runde 1, wirft in Runde 2 auf den Gegner mit der höchsten Gesundheit und schießt danach auf den Gegner mit der höchsten Gesundheit.
Führen Sie dies wie ./agg ID "5 5 5 5" aus.
quelle
Ninja
Weicht einfach willkürlich aus, um nicht getroffen zu werden.
Rennen wie
Argumente sind nicht erforderlich, können jedoch ohne Probleme hinzugefügt werden.
quelle
Name : PriorityTargets
Shell-Befehl : ruby PriorityTargets.rb 5 [game_state]
Sprache : Ruby V2.1.2
Beschreibung : PriorityTargets versucht, gängige Spielstile zu finden. Anhand dieser Spielstile entscheidet es dann, wen es angreifen möchte und welche Waffe es verwenden soll.
Hinweis : Erster Code Golf Beitrag! Viel größer als die anderen Einsendungen, weil ich ein bisschen verrückt geworden bin.
quelle
Feigling - Perl
Benimmt sich sehr feige. Wenn er sich gesund fühlt, wählt er einen Feind, der sich nicht so fühlt und erschießt ihn. Bonuspunkte für die Feinde, die in der letzten Runde geschossen haben (weil bekannt ist, dass sie in
Nothing
dieser Runde geschossen haben und daher absolut wehrlos sind). Wenn er sich nicht so gut fühlt, rennt er in Deckung, um sein Versteck zu retten, und erschießt gelegentlich jemanden.Ziemlich normaler Perl-Code; Speichern Sie es in einer Datei und führen Sie es dann aus
perl file argument argument [...]
. Ich habe die Syntax überprüft und es war in Ordnung, daher hoffe ich auf keine Probleme damit.E: Potentielle Division durch 0 Fehler beseitigt.
quelle
Bomberman
Bot in R geschrieben, Kommandozeile sollte lauten:
Rscript Bomberman.R arg0 arg1
Nachdem ich angefangen hatte, diesen Bot zu schreiben, wurde mir klar, dass Geobits bereits einen Grenadier hergestellt hat, aber ich denke, meiner unterscheidet sich erheblich darin, dass er prüft, ob sein Gesundheitszustand über 3 liegt, bevor er eine Granate vorbereitet Der letzte Schütze zuerst und der gesündeste zweite, und wenn sein Gesundheitszustand unter 3 liegt, weicht er dem gefährlichen Spieler aus (weder der Tote noch der Schütze in der letzten Runde) oder schießt auf einen der verbleibenden Spieler.
Bearbeiten
Es scheint ein Kommunikationsproblem zwischen diesem Bot und Ihrem Controller zu geben, da alle von mir untersuchten Protokolle zeigten, dass mein Bot nur ausgegeben hat
N
. Also, hier ist derselbe Bot, der aber in Python umgeschrieben wurde, in der Hoffnung, dass es jemand sieht, wenn dieser auch Kommunikationsprobleme hat.Mit angerufen werden
python Bomberman.py arg0 arg1
.quelle
Neo
Weiche einem lebenden Spieler aus, der in der letzten Runde nicht geschossen hat. Wenn alle Lebenden in der letzten Runde geschossen haben, schieße einen zufälligen lebenden Spieler. Selbstmord, wenn man Scheinwerfer sieht.
Ich erwarte nicht viel von diesem Kerl gegen Granatenficker, aber gegen Schützen könnte es ziemlich gut funktionieren. Wir werden sehen.
quelle
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -1
at java.lang.String.charAt(String.java:658)
at Neo.main(Neo.java:17)
Vierundzwanzigstes und ein halbes Jahrhundert
Dieser Python-Eintrag duckt sich und weicht aus, bis nur noch passive Spieler oder ein einzelner aggressiver Spieler übrig sind, und beginnt dann zu schießen. Er hofft, dass ein vorübergehender Marsianer sich um Grenadiere und betrunkene Lastwagenfahrer kümmert.
Sofern ich nichts falsch gemacht habe, ist dies funktionales Python. Es sieht bestimmt nicht so aus wie die Art von Python, die ich geschrieben habe, bevor Haskell und Freunde mich gefunden haben, und ich glaube nicht, dass ich irgendetwas an Ort und Stelle mutiert habe. Aber wenn Sie es besser wissen, sagen Sie es mir bitte.
Rennen wie:
quelle
erschrocken
Diese Einreichung hat Angst vor allen. Aber es ist besonders ängstlich von einigen Menschen. So findet es heraus, wer am gefährlichsten ist, und erschießt sie. Wenn mehrere Gegner am gefährlichsten aussehen, schießt sie nach dem Zufallsprinzip.
Dies ist Python (2 oder 3, dasselbe Ergebnis in beiden.) Speichern unter
scared.py
, Ausführen mitpython3 scared.py
quelle
Manipulativer Bastard - Python
Bereitet Granaten vor und wirft sie. Wenn er denkt, es gibt keine Zeit oder es gibt zu wenige Feinde, schießt er. Wenn er alleine ist, versucht er den anderen auszutricksen.
quelle
Osama
Ich habe es ungefähr einen Tag lang versucht, jetzt ist es Zeit zu posten und zu sehen, wie sich die anderen in der Zwischenzeit entwickelt haben.
Kompilieren Sie mit
ghc -O2 osama.hs
und führen Sie dann mit./players/Osama/osama
.quelle
Scharfschütze - Lua
In der ersten Runde schießt es auf eine zufällige Person und dann auf alle Spieler, die es töten kann (2 oder 1 Gesundheit). Wenn keine dieser Aktionen ausgeführt wird, wird versucht, den Spieler zu erschießen, der zuletzt geschossen hat, andernfalls wird ein zufälliger Spieler erschossen. Laufen Sie mit
lua Sniper.lua
quelle
lua Sniper.lua 3 "5,S1 3,D3 5,N 5,P"
. Möglicherweise müssen Sie Ihrenarg
Index überprüfen .lua: ./players/Sniper/Sniper.lua:38: attempt to compare nil with number
Stack-Traceback:./players/Sniper/Sniper.lua:38: in main chunk
[C]: in ?
Darwin
Überleben der Stärksten bedeutet, dass die am wenigsten Gesunden sterben müssen.
Begründung
Wenn man sich die Ergebnisse vom Dienstag (12.) ansieht, scheint es drei verschiedene Gruppierungen zu geben: Überlebende; die effektiv Selbstmord; und das schlimmer als nutzlos. Die Überlebenden teilen einfache Schießstrategien. Während ein paar andere Bots ( Spock , Feigling ) den am wenigsten gesunden Feind anvisieren, komplizieren sie ihre Strategien auch mit anderen Aktionen. Dieser tut es nicht. Wie Simple Shooter hat es eine klare Definition des Ziels und bleibt unerbittlich dabei. Es wird interessant sein zu sehen, wo es in die Ergebnisse passt.
Dies ist eine abgespeckte, leicht modifizierte Version meiner früheren Vierundzwanzigste und Halfth Jahrhundert , und teilt ihren Aufruf:
quelle
Zaenille - C
Prioritäten:
Kompilieren mit
gcc <filename.c>
.Laufen Sie mit
./a.out <parameters>
.quelle
InputAnalyzer
Der Schlüssel zu einem solchen Spiel ist, zu analysieren, wie alle Ihre Gegner spielen, um entsprechend zu reagieren. Mein Bot wird genau das mit komplizierten Algorithmen tun, die dazu führen, dass sich meine Gegner zu meinem Vorteil wenden und einen entscheidenden Sieg erringen!
Edit: Ich jetzt
Kompiliere den Bot mit dem folgenden Befehl (Need to have ghc)
Der auszuführende Shell-Befehl sollte der folgende sein
Hinweis: Ich habe auf Windows getestet. Wenn Sie Probleme mit der Ausführung haben, geben Sie dies bitte in den Kommentaren an und ich werde mein Bestes tun, um den richtigen Befehl zu finden.
quelle
Hund namens Courage
Schießen Sie als erstes auf die Bösen. Weiche dann nach dem Zufallsprinzip aus, bis jemand eine Granate vorbereitet. Wenn dann alle auf ihn schießen, bereite meine eigene Granate vor und wirf sie auf irgendjemanden. Aber der Ablenkungsmann.
Edit: Jetzt implementiert, wie ich es mir vorgestellt habe. Vorher war die Kerbe: 35.9
Aktualisiert: Schießt manchmal, anstatt auszuweichen
couragethedog.py
Rennen wie
quelle
MAD - Java
Der MAD-Bot vertraut auf die Macht der Einschüchterung durch gegenseitige sichere Zerstörung . Wenn er keine Granate parat hat, bereitet er sie vor. Dann weicht er möglichen Schützen aus, bis entweder jemand versucht, ihm Schaden zuzufügen, oder seine Granate explodiert. Von dem Moment an, in dem er angegriffen wird, wirft er Granaten auf denjenigen, der versucht hat , ihm in diesem Match mehr Schaden zuzufügen. Wenn seine Granate explodieren soll, bombardiert er den führenden Spieler. MAD ist nicht dagegen, auf jemanden zu schießen, wenn es nichts gibt, woran man ausweichen oder direkt eine Granate angreifen könnte, und seine Granate ist immer noch für mindestens eine Runde gut.
Dieser Bot wird wahrscheinlich schlecht abschneiden, aber mir hat die Idee trotzdem gefallen. MAD wäre wahrscheinlich besser in einem Feld mit intelligenteren Bots, die das Verhalten anderer Bots protokollieren, und mit mehr Übereinstimmungen zwischen vier Bots.
quelle
java MAD 43 "5 5 5 5"
scheinen nichts auszugeben.Sadist
Python
Seine Priorität ist es, Schmerzen zu verursachen und Granaten zu verletzen. Er zieht die erste Kurve. Er tötet gern, wenn man nicht angreifen kann. Er spielt mit SSSs (Single Simple Shooter), indem er ausweicht und zieht, um die Dominanz zu verlängern. Er greift sogar diejenigen an, die noch niemandem etwas angetan haben.
Da er Granaten einsetzt, überlebt er (und alle anderen) die zweite oder dritte Runde in der Regel nicht. Wenn er mit einem anderen Granatwerfer gepaart ist, werden alle sterben. Das heißt, ich erwarte nicht, dass ich gewinnen werde, aber ich habe dies geschrieben, um Python zu lernen (ich habe es noch nie benutzt und versuche, eine Einführung in eine Reihe neuer Sprachen zu bekommen). Es gibt mehrere andere "Pull Firsts". Wenn Sie der Meinung sind, dass es zu ähnlich ist, lassen Sie es mich wissen. Die anderen scheinen jedoch nicht bereit zu sein, zu ziehen und dann auszuweichen.
quelle
raw_input
das funktionieren wird.sys.argv[2]
scheint der Konsens für Python-Einträge zu sein. Möglicherweise finden Sie auch eine Verwendung fürpop
, mit der Sie sich aufthisisme=player[0];player.remove(player[0])
das Einfachere konzentrieren könnenthisisme=player.pop(0)
.raw_input
zieht ausSTDIN
, aber der Player-Verlauf wird als Befehlszeilenargument an Ihr Programm übergeben, weshalb Sie benötigensys.argv
. Zum Testen können Sie es einfach manuell mit einstellensys.argv = ["sadist.py", "0", "5 5 5 5"]
. Dann sollten Sie anrufen könnenplayer=sys.argv[2].split()
. Wenn der Importsys
wirklich unmöglich ist, können Sie zum Testen sogar den Punkt fallen lassen und das Array aufrufensysargv
. Solange alles andere funktioniert und Sie zusys.argv
Ihrer Einreichung zurückkehren, sollte es in Ordnung sein.