Sie erhalten ein teilweise gefülltes Connect 4-Raster (7x6).
O X
O X
X O X O O
X O X O X X
O X X X O O X
O O O X X O X
(Die Eingabe kann als 1D- oder 2D-Array sowie als Buchstaben oder Zahlen usw. erfolgen.)
Annehmen, dass
- X hat das Spiel gestartet.
- Niemand hat bisher gewonnen.
- Die Spieler haben vielleicht bis jetzt nicht gut gespielt, aber ab jetzt werden beide optimale Strategien anwenden.
- Eingangsnetz ist nicht fehlerhaft.
Sie müssen einen einzelnen Wert ausgeben, der angibt, welcher Spieler gewinnt (oder ein Unentschieden).
Code Golf Herausforderung; so gewinnt der kürzeste Code. Ihr Programm muss die Ausgabe nicht in angemessener Zeit tatsächlich berechnen, aber Sie sollten in der Lage sein, zu beweisen, dass die Ausgabe in einer begrenzten Zeit korrekt erhalten wird.
code-golf
game
grid
board-game
ghosts_in_the_code
quelle
quelle
Antworten:
Perl,
119118117 BytesBeinhaltet +4 für
-0p
Gib gedrehtes Brett mit Leerzeichen auf STDIN (Schwerkraft zieht Steine nach rechts)
connect4.pl
:3
Wird gedruckt, wenn der Spieler gewinnt,1
wenn der Spieler verliert und wenn2
er unentschieden spielt.Bei älteren Perls können Sie ein Literal verwenden
^S
, um ein Byte zu erhalten. Wenn Ihnen extreme Ineffizienz nichts ausmacht , können Sie die$$_||=
(Transpositionstabelle) weglassen und 6 weitere Bytes gewinnen. Wenn Sie das weglassen,$_=
wird Ihnen angezeigt, wo anstelle des Ergebnisses zu spielen ist (spielen1
und gewinnen, wenn es eines gibt, spielen2
und zeichnen, wenn es eines gibt, oder spielen3
und verlieren).Erstellt und bewertet einen vollständigen Minimax-Baum. Sie haben nicht genügend Speicher und Zeit, es sei denn, die Platine ist bereits ausreichend gefüllt.
quelle