Das Ghost-Spiel wird zwischen zwei Spielern gespielt, die abwechselnd in jeder Runde einen Buchstaben sagen. An jedem Punkt müssen die Buchstaben bisher ein gültiges englisches Wort beginnen. Der Verlierer ist der Spieler, der zuerst ein vollständiges Wort vervollständigt. Wenn zum Beispiel die Buchstaben bisher EAGL sind, ist der einzig gültige nächste Buchstabe "E" und der nächste Spieler verliert. (Auch wenn es längere Wörter wie "Adler" gibt.)
Die Herausforderung
Sie müssen ein Programm oder eine Funktion schreiben, um anhand der bisherigen Buchstaben zu bestimmen, wer unter der Annahme von zwei perfekten Spielern gewinnt. Die Eingabe ist eine Zeichenfolge, die den aktuellen Status des Spiels darstellt, und eine Liste von Zeichenfolgen, die das Wörterbuch gültiger Wörter darstellen. Die Ausgabe sollte unterscheiden, ob der nächste Spieler gewinnt oder verliert.
Einzelheiten
- Der Code muss den Fall behandeln, in dem der aktuelle Status leer ist. Sie können jedoch davon ausgehen, dass kein Wort im Wörterbuch leer ist.
- Sie können davon ausgehen, dass jede Eingabezeichenfolge nur aus ASCII-Kleinbuchstaben besteht, dh az.
- Sie können den aktuellen Status annehmen und alle Wörter im Wörterbuch haben jeweils höchstens 80 Zeichen.
- Das Wörterbuch ist garantiert nicht leer (um den Fall zu vermeiden, dass es keinen gültigen ersten Zug gibt).
- Sie können davon ausgehen, dass der "aktuelle Status" gültig ist: Es wird notwendigerweise ein Wort geben, das mit dem aktuellen Status beginnt. Außerdem ist der aktuelle Status weder ein vollständiges Wort noch ein Präfix des aktuellen Status ein vollständiges Wort.
- Das Wörterbuch wird nach den Regeln vorgefiltert, nach denen "englische Wörter" für das Spiel gültig sind. Bei einer Variante, bei der Wörter mit drei oder weniger Buchstaben das Spiel noch nicht beenden, wird das Wörterbuch vorgefiltert vorgefiltert werden, um nur die Wörter von vier oder mehr Buchstaben einzuschließen.
- Sie können davon ausgehen, dass das Wörterbuch vorsortiert wird.
Beispiele
Angenommen, das Wörterbuch lautet:
abbot
eager
eagle
eaglet
earful
earring
Für die folgenden aktuellen Zustände sollte die Ausgabe dann wie folgt sein:
Current state Result
============= ======
loss
a win
eag win
eagl loss
ear win
earf win
earr loss
Ebenso ist für die Wortliste unter https://raw.githubusercontent.com/dschepler/ghost-word-list/master/wordlist.txt (erstellt auf einem Debian-System unter Verwendung pcregrep '^[a-z]{4,80}$' /usr/share/dict/american-english
) hier eine mögliche Sitzung:
Current state Result
============= ======
win
h loss
ho win
hoa loss
hoar win
hoars loss
(Und dann schließt der nächste Zug "heiser" ab.)
Wertung
Dies ist Code-Golf : Das kürzeste Programm in Bytes für jede Programmiersprache gewinnt.
quelle
Antworten:
JavaScript, 54 Bytes
Nennen Sie es so: f (wordlist_as_array) (current_word_as_string), es gibt true für win, false für lose zurück.
ziemlich schlechte Leistung T_T, arbeiten nur mit dem kleinen Testfall.
Code-Snippet anzeigen
quelle
Python 3 ,
13512984 Bytes-4 Bytes dank Mr. Xcoder !
-42 Bytes danke an Daniel Schepler !
Probieren Sie es online aus!
A
1
zeigt an, dass der aktuelle Spieler gewinnt, während a-1
angibt, dass er verlieren wird.quelle
lambda
.PHP,
192 154 10098 BytesFunktion kehrt
1
für Gewinn,NULL
für Verlust zurück.Rufen Sie an
t(string $word,array $dictionary)
oder probieren Sie es online aus .Nervenzusammenbruch
quelle
C ++, 243 Bytes (nicht wettbewerbsfähig)
Zu Ihrer Information, hier ist die Golfversion meiner Referenzimplementierung (als nicht wettbewerbsfähig markiert, da es meine eigene Herausforderung ist). Es wird erwartet, dass die Wortliste im
w
Parameter ein nullterminiertes Array (aus nullterminierten Zeichenfolgen) ist. Es kehrt zurück,1
wenn der nächste Spieler verliert oder0
wenn der nächste Spieler gewinnt.Probieren Sie es online aus.
Erweiterte und kommentierte Version:
quelle