Alak wurde vom Mathematiker AK Dewdney erfunden und in seinem 1984 erschienenen Buch Planiverse beschrieben. Die Regeln von Alak sind einfach:
Alak ist ein Zwei-Spieler-Spiel, das auf einem eindimensionalen Brett mit elf Slots gespielt wird. Jeder Steckplatz kann höchstens ein Stück gleichzeitig aufnehmen. Es gibt zwei Arten von Stücken, "x" und "o". x gehören einem Spieler, o dem anderen. Die anfängliche Konfiguration der Karte lautet:
xxxx___oooo
Die Spieler wechseln sich ab. In jeder Runde kann jeder Spieler nur einmal eine Figur bewegen. Ein Spieler kann seinen Zug nicht verpassen. Ein Spieler kann eine seiner Figuren auf den nächsten freien Platz rechts oder links verschieben, was das Springen über besetzte Plätze bedeuten kann. Ein Spieler kann keine Figur von der Seite des Bretts bewegen.
Wenn ein Zug ein Muster erzeugt, bei dem die Teile des Gegners auf beiden Seiten von zwei Teilen der Farbe des Bewegers umgeben sind (ohne dazwischen liegenden unbesetzten leeren Schlitz), werden diese umgebenen Teile vom Brett entfernt.
Das Ziel des Spiels ist es, alle Teile deines Gegners zu entfernen. An diesem Punkt endet das Spiel. Das Entfernen von All-außer-Eins beendet das Spiel ebenfalls, da der Gegner Sie nicht mit einer Figur umgeben kann und daher immer innerhalb weniger Züge verliert.
Ich fand dieses Spiel online und fragte mich: Kann es Golf gespielt werden?
Regeln des Golfsports
- Ihr Code muss allen Regeln im Spiel folgen, mit Captures umgehen, sich richtig bewegen usw. (einzige Ausnahme ist, dass Sie keinen Bot hinzufügen müssen, aber beide Spieler müssen irgendwie kontrolliert werden und ein Spieler muss ein Mensch sein).
- Die Eingabe muss auf Kachel X auf Kachel Y verschoben oder beendet werden. Sie können beispielsweise
1 4
sagen, dass Sie dieses Teil auf Kachel 1 auf Kachel 4 verschieben möchten.quit
würde das Programm beenden, obwohl die Verwendung von Control- Cakzeptabel wäre. Sie müssen auch überprüfen, ob ein Zug ungültig ist (indem Sie außerhalb des Spielfelds gehen oder an einen Ort ziehen, an dem Sie nicht belegte Bereiche überqueren müssten, um zu einer Nachricht zu gelangen oder eine Nachricht zu senden, die kein Kachelpaar ist oderquit
). - Ausgänge für die Spieler zu gewinnen und ungültig sein muss
P1 WINS
,P2 WINS
undINVALID
, respectively. (Alle diese sind 7 Zeichen.) - Die Ausgabe muss die Karte anzeigen. Das ist alles was benötigt wird.
- Es spielt keine Rolle, ob Sie Hilfsmittel wie nummerierte Kacheln oder andere Teile verwenden.
Die Herausforderung endet, wenn:
- Eine Antwort erhält 50 Stimmen
- Eine Antwort bleibt 3 Wochen lang die am besten gewählte, und in dieser Zeit wurden keine anderen Antworten veröffentlicht
und die Herausforderung hat mindestens 3 Antworten (es gibt also echte Konkurrenz).
Spielregeln
- Der Spieler links muss zuerst starten.
- Es nimmt jeweils nur ein Stück ein Quadrat ein. Sie bewegen das Stück nach links oder rechts, bis es auf ein nicht besetztes Feld trifft. Das Brett wickelt sich nicht ein und Sie können sich nicht durch unbesetzte Bereiche bewegen. Beispielsweise:
xoo__o
. Hierx
würde die Bewegung nach rechts das Board ändern_oox_o
.xxooo_
. Hierx
könnte sich die am weitesten links stehende Person bewegen, um nachzugeben_xooox
, was daso
s einfängt und verlässt_x___x
.x__oox
. Hier werden dieo
s nicht erfasst (es gibt noch eine Lücke). Die Erfassung ist nicht möglich, da Sie sich nicht durch nicht belegte Bereiche bewegen können. Diex
links konnten nur ein Feld bewegen, da sich keine anderen Teile dazwischen befinden (Verlassen_x_oox
).
- Mehrere benachbarte Teile können gleichzeitig erfasst werden, wenn die Gruppe von den Teilen des Gegners umgeben ist. ZB von
x_oox
bis_xoox
erfasst beideo
s und führt zu_x__x
. - Wenn Sie nach einem Zug zuerst die Figuren des Gegners erfassen , bevor Sie prüfen, ob Ihre eigene Figur entfernt werden soll. Nehmen Sie zwei Beispiele:
o_oxx
zuoxox_
. Erstens wird der zweiteo
erfasst,ox_x_
sodass der erstex
auf dem Brett bleibt.o_oox
zuoxoo_
. Dieses Mal wird keines dero
s erfasst, daherx
wird stattdessen das s erfasst.- Wenn Sie nur eine Figur haben, endet das Spiel, da Sie nicht mit nur einer Figur erfassen können.
Lasst die Spiele beginnen! Ich freue mich darauf zu sehen, was Sie sich einfallen lassen.
quelle
Antworten:
C
617592 BytesEnträtselt:
Ich wollte dieses wirklich in ~ 400 Bytes bekommen, aber es gibt viele kleine Regeln hier und die Eingabeverarbeitung endete ziemlich widerlich. Damit bin ich definitiv nicht fertig. Hier ist eine Reihe von Beispielläufen, die fast alles abdecken:
Wenn ich etwas falsch interpretiert habe, lass es mich wissen!
quelle
printf("INVALID");
durchputs("INVALID");
,o<2||x<2
mito<2|x<2
undprintf(b);while(!q){
mitfor(printf(b);!q;){
PHP - 505
Benachrichtigungen müssen durch Umleiten
STDERR
an unterdrückt werden/dev/null
.Mit vernünftigen Leerzeichen:
Mit den Testfällen von BrainSteel:
quelle
/dev/null
./dev/null
.Python 2,
536509448441 BytesAnruf über
a()
; Züge sind in der Formpiece,destination
(dh1,4
) einzugeben; Beenden Sie mit Strg-C. Wenn jemand mehr Golfpotential sehen kann, bin ich ganz Ohr.quelle
SpecBAS - 718 Bytes
SpecBAS ist eine aktualisierte Version von Sinclair / ZX BASIC, die außerhalb eines Emulators ausgeführt werden kann. (Immer noch interpretiert).
Habe einige der neuen Funktionen verwendet, um die Größe so weit wie möglich zu verringern.
Zeile 12 richtet einen regulären Ausdruck ein, um mithilfe von Inline-IF nach "Sandwich" -Stücken zu suchen, und Zeile 18 verwendet die Umlaufnatur von INC (anstatt zu sagen
INC p: IF p=3 THEN LET p=1
).Ausgabe (kann nicht von der Ausgabe-Witwe kopiert werden, also Screenshot)
quelle
C #, 730 Bytes
Ich stelle mir vor, dass weitere Verbesserungen möglich sind. Auf der anderen Seite habe ich die
INVALID
Ausgabe als Beendigung der Ausführung interpretiert , sodass ich dieses Problem möglicherweise beheben muss, um mit anderen Antworten gleich zu sein.quelle