Grundregeln (anders als meine)
Geschichte
Es ist das Jahr 4579, Menschen haben jetzt 2 Hände mit je 1001 Fingern. Essstäbchen basieren auf Punkten. Und @Dennis hat mehr Wiederholungen als @Martin ... Von Hand gezeichnete rote Kreise werden jetzt herabgestuft ... Jon Skeet hat auf jeder SE-Site 2 Billionen Wiederholungen erzielt ... Ja, beängstigend, ich weiß
Chopsticks ist ein Handspiel, das gelöst wurde. Um das zu umgehen, habe ich es mutiert erstellt. Ich habe die Anzahl der Finger erhöht.
Spielregeln
So wird das gespielt
Jeder beginnt mit 2 Händen. Jede Hand hat 1001 Finger. Jede Hand beginnt mit 1 (einem) Finger auf jeder Hand. Während deines Zuges kannst du die Hand des anderen Spielers "schlagen". Zum Schlagen wählst du 1 deiner Hände zum Schlagen und 1 ihrer Hände zum Schlagen. Die Hand, die getroffen wurde, hat jetzt die Anzahl der Finger, die sie zuerst hatten, UND die Anzahl der Finger, die Sie auf der Hand hatten, mit der Sie geschlagen haben.
EX
P1: 1,1
P2: 1,1
. P1[0]
Treffer P2[1]
. Jetzt sind es die Finger P1:1,1
P2:1,2
. Jetzt P2[1]
trifft p1[0]
. Die Finger sind jetzt P1: 3,1
P2 1,2
.
Wenn eine Hand 1001 Finger oder mehr hat, ist diese Hand aus. Dann kann ein Spieler, der eine Hand ausgeteilt hat (für seinen Zug), "splitten". Teilen ist, wenn Sie die Hand nehmen, die sich in der Hand befindet, die Anzahl der Finger halbieren (aufrunden) und diese Finger der anderen Hand geben, die sie wieder in die Hand nimmt.
EX
P1: 1000,2
P2 7,7
. P2[0]
Treffer P1[0]
. Punktzahl ist P1: 0,2
P2 1,1
. P1[1]
teilt sich für seinen Zug und die Punktzahl ist P1: 1,1
und P2 7,7
.
Das Spiel endet, wenn ein Spieler beide Hände ausgeteilt hat. Die Punkte werden nach der Anzahl der Finger des Gewinners gewertet. Mehr Punkte = besser. Der Verlierer erhält keine Punkte.
Es gibt andere Regeln, die verwendet werden, aber diese werden hier verwendet.
Jeder spielt jeder (Round Robin)
Endspiel
Zählen Sie Ihre Punkte aus jeder Runde, die Sie gewinnen, zusammen. Dann durchschnittlich alle Punkte. Teilen Sie Ihre Gesamtsumme durch die Durchschnittspunkte und erhalten Sie Ihre endgültige Punktzahl. Die meisten Punkte gewinnen.
Aktuelle Regeln
Bitte versuchen Sie nicht , das Spiel zu lösen. Ich muss es tatsächlich ausführen können: P
Stellen Sie sicher, dass der Bot schnell laufen kann. Mit der Länge der Runden dauert dies eine Weile
Alle in Ihrem Programm benötigten Bibliotheken müssen sich in der Standard-Python-Bibliothek befinden. Listen Sie auch die Dateien auf, die Sie importieren möchten. Die Importe werden nur der grundlegende Import sein (für Mathematik I tun: import math
)
Die Antworten müssen in Python 3.x funktionieren
Handler
Ihr Bot wird eine eigene Python 3-Datei mit einer play
Funktion sein.
play
Es werden zwei Listen mit jeweils zwei Nummern übergeben. Diese Zahl gibt an, wie viele Finger sich auf jeder Hand befinden. Die erste Liste ist Ihre eigene Hand.
Wenn Sie die Hand des anderen Spielers treffen möchten, geben Sie eine Liste mit zwei Bits zurück. Das erste Bit ist der Index der Hand, die Sie zum Schlagen verwenden ( 0
für die erste, 1
für die letzte), und das zweite Bit ist der Index der Hand, die Sie auf den Gegner schlagen.
Wenn Sie sich für eine Aufteilung entscheiden, geben Sie einen anderen Wahrheitswert zurück.
Tada!
Die Steuerung finden Sie hier . Speichern Sie jeden Bot in einer eigenen Datei und listen Sie den Dateinamen jedes Bots (ohne .py
) in auf botnames
.
Schlussbemerkung:
Sie und der andere Bot wechseln sich zuerst ab. Wenn das Spiel nicht in 100.000 (einhunderttausend) Runden endet, wird das Spiel beendet und keiner der beiden Bots gewinnt.
Der Controller ist nicht gegen ewige Bewegungen geschützt, aber unnötiger Overhead wird stark verpönt.
My handler is very simple, your bot must do it's logic then adjust the the finger scores as needed, remember!
Was, also machen wir die Berechnungen für den KoTH?