In Keep Talking und Nobody Explodes müssen die Spieler Bomben entschärfen, basierend auf Informationen ihrer "Experten" (andere Personen mit einem Handbuch). Jede Bombe besteht aus Modulen, von denen eines Passwörter sein können, wobei der Experte diese Liste möglicher Passwörter erhält, die alle fünf Buchstaben lang sind:
about after again below could
every first found great house
large learn never other place
plant point right small sound
spell still study their there
these thing think three water
where which world would write
Und der Spieler erhält eine Liste mit 6 möglichen Buchstaben für jede Stelle im Passwort. Geben Sie angesichts der möglichen Buchstabenkombinationen das richtige Passwort aus. Die Eingabe kann in jedem vernünftigen Format erfolgen (2D-Array, durch Zeilenumbruch getrennte Zeichenfolge usw.). Sie können den Code, den Sie zum Komprimieren / Generieren der Liste / Zeichenfolge / des Arrays / eines beliebigen Kennworts verwenden, rabattieren. (Danke @DenkerAffe)
HINWEIS: Bei Passwörtern wird die Groß- und Kleinschreibung nicht berücksichtigt. Sie können davon ausgehen, dass die Eingabe nur für ein Kennwort aufgelöst wird.
Beispiele / Testfälle
Die Eingabe hier wird als Array von Zeichenfolgen dargestellt.
["FGARTW","LKSIRE","UHRKPA","TGYSTG","LUOTEU"] => first
["ULOIPE","GEYARF","SHRGWE","JEHSDG","EJHDSP"] => large
["SHWYEU","YEUTLS","IHEWRA","HWULER","EUELJD"] => still
<
zum Beispiel nicht sicher, ob ich das in meiner Bash-Lösung zählen sollte.Antworten:
Pyth, 13 Bytes
Testsuite.
quelle
Bash, 22 Bytes
Lauf so:
quelle
fold -5<<<ABOUTAFTERAGAINBELOWCOULDEVERYFIRSTFOUNDGREATHOUSELARGELEARNNEVEROTHERPLACEPLANTPOINTRIGHTSMALLSOUNDSPELLSTILLSTUDYTHEIRTHERETHESETHINGTHINKTHREEWATERWHEREWHICHWORLDWOULDWRITE|grep `printf [%s] $@`
JavaScript (ES6), 62 Byte
53 Bytes in Firefox 48 oder früher:
Wäre 49 Bytes gewesen, wenn nicht für diesen Fall Unempfindlichkeitsanforderung:
Code-Snippet anzeigen
quelle
Brachylog , 25 Bytes
Die nicht gezählten Bytes sind das Array von Wörtern, einschließlich der eckigen Klammern.
Erläuterung
quelle
Ruby,
484239 BytesJetzt, da es fertig ist, ist es der Pyth-Lösung sehr ähnlich,
aber ohnebis zu dem Punkt, an dem es jetzt im Grunde ein direkter Port ist.%s
FormatierungWenn Sie nur das Ergebnis mit ausgeben
puts
, brauchen Sie das[0]
am Ende nicht, da diesputs
für Sie erledigt wird.Mit Testfällen:
quelle
JavaScript (ES6), 71 Byte
Verwendungszweck:
quelle
Python,
646057 BytesCode zum Erstellen einer Wortliste
w
als Zeichenfolge, Wörter werden durch Leerzeichen getrennt (Bytes werden von der Länge des Lösungscodes abgezogen):Aktuelle Lösung (57 Bytes): 3 Bytes dank @RootTwo gespart
Diese Funktion verwendet ein
tuple
(Neinlist
!) Von genau 5 Zeichenfolgen, die die möglichen Buchstaben für jedes Kennwortzeichen als Eingabe darstellen.Sehen Sie diesen Code auf ideone.com
Zweite Version (60 Bytes):
Diese Funktion verwendet ein
tuple
(Neinlist
!) Von genau 5 Zeichenfolgen, die die möglichen Buchstaben für jedes Kennwortzeichen als Eingabe darstellen.Sehen Sie diesen Code auf ideone.com
Erste Version (64 Bytes):
Diese Funktion verwendet eine beliebige Iteration (z. B.
list
odertuple
) von genau 5 Zeichenfolgen, die die möglichen Buchstaben für jedes Kennwortzeichen als Eingabe darstellen.Sehen Sie diesen Code auf ideone.com
quelle
"(?i)\\b"+"[%s]"*5%a
w=...
Codezeile: " Die eigentliche Lösung (57 Bytes, 3 Bytes dank @RootTwo gespeichert): "Hoon , 125 Bytes
Ungolfed:
Hoon hat keinen regulären Ausdruck, nur ein Parser-Kombinatorsystem. Dies macht es ziemlich kompliziert, alles
(mask "abc")
zum Laufen zu bringen: übersetzt grob in Regex[abc]
und ist der Kern des Parsers, den wir erstellen.;~(plug a b)
ist eine monadische Bindung von zwei Parsern unter++plug
, die den ersten und dann den zweiten analysieren muss, sonst schlägt sie fehl.++knee
wird verwendet, um einen rekursiven Parser zu erstellen; Wir geben ihm einen Typ (*tape
) des Ergebnisses und einen Rückruf zum Aufrufen, um den eigentlichen Parser zu generieren. In diesem Fall lautet der Rückruf "Rufen Sie den gesamten Abschluss erneut auf, stattdessen jedoch mit dem Ende der Liste". Der?~
Runentest ist, dass die Liste leer ist und gibt(easy ~)
(nichts analysieren und ~ zurückgeben) oder einen anderen hinzufügtmask
und erneut wiederholt.Nachdem wir den Parser erstellt haben, können wir ihn verwenden.
++skip
Entfernt alle Elemente der Liste, für die die Funktion yes zurückgibt.++rust
versucht, das Element mit unserer Regel zu analysieren undunit
gibt ein entweder[~ u=result]
oder zurück~
(unsere Version von Haskells Vielleicht). Wenn dies der~
Fall ist (Keine, und die Regel konnte entweder nicht oder nicht den gesamten Inhalt analysieren), gibt die Funktion true zurück und das Element wird entfernt.Was übrig bleibt, ist eine Liste, die nur das Wort enthält, bei dem jeder Buchstabe eine der Optionen in der angegebenen Liste ist. Ich gehe davon aus, dass sich die Liste der Passwörter bereits im Kontext unter dem Namen befindet
pass
.quelle
Python 3, 81 Bytes
Eine anonyme Funktion, die eine Liste von Zeichenfolgen
x
eingibt und das Kennwort zurückgibt.Die Liste der möglichen Passwörter
l
ist wie folgt definiert:Dies ist eine einfache rohe Kraft; Ich war interessiert zu sehen, wie kurz ich das ohne Regexe bekommen könnte.
Wie es funktioniert
Probieren Sie es auf Ideone
quelle