Erstellen Sie ein deterministisches Programm zu spielen n d Tic-Tac-Toe mit den anderen Kandidaten.
Ihr Programm sollte funktionieren, wenn n
(width) und d
(dimension number) in diesen Bereichen liegen:
n∈[3,∞)∩ℕ ie a natural number greater than 2
d∈[2,∞)∩ℕ ie a natural number greater than 1
n = 3; d = 2
(3 2, dh 3 mal 3):
[][][]
[][][]
[][][]
n = 3; d = 3
(3 3 dh 3 mal 3 mal 3):
[][][]
[][][]
[][][]
[][][]
[][][]
[][][]
[][][]
[][][]
[][][]
n = 6; d = 2
(6 2, dh 6 mal 6):
[][][][][][]
[][][][][][]
[][][][][][]
[][][][][][]
[][][][][][]
[][][][][][]
Und so weiter.
Eingang:
Die Eingabe erfolgt in STDIN. Die erste Zeile der Eingabe wird zwei Zahlen, sein n
und d
in der Form n,d
.
Danach wird eine Linie aus Koordinaten erstellt, die die durchgeführten Bewegungen angeben. Die Koordinaten werden in Form aufgeführt werden: 1,1;2,2;3,3
. Die obere linke Ecke ist der Ursprung (0,0 für 2D). Im allgemeinen Fall entspricht diese Liste der Stelle, 1,2,...,1,4;4,0,...,6,0;...
an der die erste Zahl die Links-Rechts-Position, die zweite Auf-Ab-Position, die dritte bis dritte Dimension usw. darstellt. Beachten Sie, dass die erste Koordinate die X
erste und die zweite Kurve ist ist O
s erste Runde, ....
Sollte dies der erste Zug sein, wird bei der Eingabe eine Zahl gefolgt von einer Leerzeile eingegeben.
Aus Gründen der Konsistenz endet die Eingabe immer mit einem Zeilenumbruch. Beispieleingabe (\ n ist Newline):
10,10\n0,0,0,0,0,0,0,0,0,0;0,2,3,4,5,6,7,8,9,0;0,1,2,3,4,5,6,7,8,9\n
Für den ersten Zug:
10,10\n\n
Wo \n
ist das Newline-Zeichen?
Ausgabe:
Geben Sie den Zug, den Sie ausführen möchten, in demselben Format wie die Eingabe aus (eine durch Kommas getrennte Liste). Ein ungültiger Zug (dh ein Zug, der bereits ausgeführt wurde) führt zu einem Verlust für das Spiel.
Hinweis: Sie können einen Zufallszahlengenerator verwenden, solange Sie einen Wert festlegen, bei dem jeder Lauf unter den gleichen Bedingungen identisch ist. Mit anderen Worten, das Programm muss deterministisch sein.
Hinweis: Es sind nur gültige Züge erlaubt.
Gewinnspiele (Wenn Sie genug mehrdimensionale Tic Tac Toe gespielt haben, ist dies dasselbe.)
Um zu gewinnen, muss ein Spieler alle angrenzenden Felder entlang einer Linie haben. Das heißt, dieser Spieler muss n
Züge auf einer Linie haben, um ein Gewinner zu sein.
Benachbart:
- jedes Plättchen ist ein Punkt; Zum Beispiel ist (0,0,0,0,0) ein Punkt in
d=5
- benachbarte Kacheln sind solche Kacheln, die beide Punkte auf derselben Einheit d-Würfel sind. Mit anderen Worten beträgt der Chebyshev-Abstand zwischen den Kacheln 1.
- Mit anderen Worten, wenn ein Punkt
p
an einen Punkt angrenztq
, unterscheidet sich jede Koordinate in derp
entsprechenden Koordinateq
darin nicht mehr als um eins. Außerdem unterscheidet sich mindestens ein Koordinatenpaar um genau eins.
Linien:
- Linien werden durch Vektoren und eine Kachel definiert. Eine Linie ist jedes Plättchen, das von der folgenden Gleichung getroffen wird:
p0 + t
<
some vector with the same number of coordinates as p0>
Simulations- und Gewinnbedingungen:
Geben Sie in Ihrer Antwort an, ob sie zur Benotung bereit ist. Geben Sie also deutlich an, ob Ihre Antwort fertig ist oder nicht.
Wenn Ihre Antwort als erledigt markiert ist, wird sie erst 24 Stunden nach der letzten Änderung des Codes bewertet.
Programme müssen offline arbeiten. Wenn festgestellt wird, dass ein Programm betrügt, erhält es automatisch eine Punktzahl von
-1
und wird nicht weiter gewertet. (Wie würde jemand damit enden, dass seine Programme betrügen?)Wenn Ihr Programm eine ungültige Ausgabe erzeugt, wird dies sofort als Verlust für das Spiel gewertet
Wenn Sie nach 1 Minute keine Ausgabe erstellen, wird dies sofort als Verlust für das Spiel gewertet. Bei Bedarf auf Geschwindigkeit optimieren. Ich möchte nicht eine Stunde warten müssen, um ein Programm von einem anderen zu testen.
Jedes Programm wird zweimal für jedes
n
in dem Bereich[3,6]
und jedesd
in dem Bereich[2,5]
einmal alsX
und einmal als gegen die anderen Programme ausgeführtO
. Dies ist eine Runde.Für jedes Spiel, das ein Programm gewinnt, erreicht es
+3
seine Punktzahl. Wenn das Programm unentschieden ist (1 Sieg und 1 Niederlage in einer einzigen Runde oder Unentschieden für beide Spiele), wird es ausgeglichen+1
. Wenn das Programm verloren geht, dann wird es+0
(dh keine Änderung).Das Programm mit der höchsten Punktzahl gewinnt. Sollte es ein Unentschieden geben, gewinnt das Programm mit der geringsten Anzahl verlorener Partien (von den unentschieden ausgetragenen Teilnehmern).
Hinweis: Abhängig von der Anzahl der Antworten benötige ich möglicherweise Hilfe beim Ausführen der Tests.
Viel Glück! Und mögen die Simulationen jemals zu Ihren Gunsten ablaufen!