Order and Chaos ist eine Variante von Tic-Tac-Toe, die auf einem 6x6-Brett gespielt wird. Was das Spiel jedoch einzigartig macht, ist, dass beide Spieler entweder ein X oder ein O platzieren können! In jeder Runde (beginnend mit Reihenfolge) platziert ein Spieler ein X oder O auf einem freien Feld.
Gewinnen ist einfach. Die Reihenfolge gewinnt, wenn sich 5 Xs oder Os (vertikal, horizontal oder diagonal) in einer Reihe auf dem Brett befinden. Chaos gewinnt, wenn das Brett gefüllt ist und keine Zeichenfolgen von 5 Xs oder Os auf dem Brett sind. Deine Arbeit? Nun, da dies Programming Puzzles und Code Golf ist, werden Sie das Spiel programmieren und Golf spielen.
Die Regeln
- Sie müssen Eingaben als
x y t
, wox
undy
Koordinaten akzeptieren undt
ist der Kacheltyp (X
oderO
). Die Koordinaten beginnen0 0
in der oberen linken Ecke und steigen bis zu5 5
(der unteren rechten Ecke) an. - Sie müssen das
q
Beenden und Drucken akzeptieren ,INVALID
wenn der Benutzer ungültige Koordinaten, Kacheln oder Eingaben eingibt, die nicht in Form von vorliegenx y t
, oder versucht, eine Kachel dort zu platzieren, wo bereits eine vorhanden ist. (Die einzige Ausnahme istq
, da dies das Programm beendet.) - Wenn Order gewinnt, werden Sie ausgeben
P1 WINS
. Wenn Chaos gewinnt, werden Sie ausgebenP2 WINS
. - Bestellung muss zuerst gehen.
- Ein Leerzeichen wird durch dargestellt
.
. - Kacheln sind
X
undO
(Großbuchstaben). Sie müssen keine Kleinbuchstaben akzeptieren, aber Großbuchstaben sind erforderlich. - Ihr Board darf nur bestehen aus
.XO
. - Sie simulieren tatsächlich beide Spieler, die das Spiel spielen, ohne ein Brett zu bekommen und zu überprüfen, wer gewinnt. Es akzeptiert einen Zug als Eingabe, druckt dann das Brett, akzeptiert einen weiteren Zug usw., bis ein Spieler gewinnt.
Das Startbrett sieht so aus:
......
......
......
......
......
......
Und nach den Eingaben des ersten Spielers (Reihenfolge) 1 2 X
sollte es so aussehen:
......
......
.X....
......
......
......
Wenn der nächste Spieler (Chaos) eingibt 3 3 O
, sieht es ebenfalls so aus:
......
......
.X....
...O..
......
......
Und das geht so lange weiter, bis ein Spieler gewinnt.
Wie immer sind Standardlücken verboten, die den Spaß an allem nehmen.
Der Gewinner ist derjenige mit dem kürzesten Code am 15. Juni, 00:00 UTC (ungefähr einen Monat nach Veröffentlichung dieser Herausforderung).
quelle
INVALID
. Ich habe das jetzt bearbeitet, danke.Antworten:
PHP, 316
Hier ist meine Vorlage. Es muss von PHP in der Kommandozeile ausgeführt werden.
Beachten Sie, dass dieser Code aufgrund einiger von mir vorgenommener Verknüpfungen Hinweise erzeugt. Lassen Sie mich wissen, ob dies in Ordnung ist. Ich kann es beheben, indem ich ein paar weitere Zeichen hinzufüge. Ich habe diese Seite überprüft und in der oberen Antwort wird davon ausgegangen, dass die Fehlerberichterstattung deaktiviert ist, wenn keine Erwähnung erfolgt.
Und hier ist die nicht Golfversion des Codes:
quelle
JavaScript, 360
Bearbeiten Modifiziertes interaktives Spiel, sollte auch in MSIE laufen
Wie gewünscht, textbasiertes Spiel, Eingabe über Popup, Ausgabe in der Konsole (um eine monospaced Schriftart zu haben).
Beenden Sie das Spiel mit 'q' oder klicken Sie an der Eingabeaufforderung auf 'Abbrechen'.
Ohne ES5-Funktionen sollte es in jedem moderierten Browser ausgeführt werden (wo Sie ein JS-Konsolenfenster haben können).
Führen Sie jetzt eine weitere unterhaltsame interaktive und grafische Version aus, um das Snippet abzuspielen.
Code-Snippet anzeigen
quelle
Java, 565 Zeichen D:
Dies ist wahrscheinlich der längste Code-Golf aller Zeiten. Ich bin wirklich nicht gut darin.
quelle
Oktave, 453
Die Implementierung ist recht unkompliziert, der einzige echte „Trick“, mit
format plus
dem das Drucken erledigt werden kann. Hier ist eine kommentierte Version:Aufgrund der Anforderung, die Eingabesyntax und -gültigkeit zu überprüfen, wird im Code
fread()
jeweils ein Zeichen gelesen.Ich habe darauf geachtet, das Board und die Nachrichten ordentlich auszugeben. Wenn eine zusätzliche Ausgabe akzeptabel ist, könnte ich ein paar Bytes sparen. Bei Verwendung des automatischen Drucks (nein
disp(F)
) wird die Karte beispielsweise als angezeigtAußerdem habe ich interpretiert, dass jeder Zug in einer separaten Zeile angegeben wird.
Beispielinteraktion (der
-q
Schalter dient nur zur Unterdrückung des Octave-Headers):Die ungültige Verschiebung führte zum Beenden des Programms (nicht sicher, ob dies beabsichtigt war).
quelle
x y t
in einer separaten Zeile (und keine andere Eingabe).