Ich habe mich gestern gefragt, ob ich ein Programm schreiben könnte, um eine gegebene Wortsuche durchzukämmen und die Antworten auszugeben. Es war eigentlich überraschend einfach. Jetzt frage ich mich, wie klein wir werden können.
Regeln
- Ihre erste Eingabe ist eine Zeichenfolge oder eine Sammlung von n Zeilen, von denen jede n Zeichen lang ist
- Ihre zweite Eingabe ist eine Liste von Wörtern in jedem Format, die im Puzzle zu finden sind
- Alle Wörter in der Suchliste sind garantiert im Puzzle
- Wörter können in jede der vier Hauptrichtungen sowie diagonal vorwärts und rückwärts ausgerichtet werden
- Das Puzzle enthält nur Großbuchstaben von AZ
- Ihr Code muss jedes Wort in der Suchzeichenfolge finden und die Koordinatenposition des Anfangsbuchstabens ausgeben, wobei 0,0 das Zeichen oben links ist.
- Falls Sie mehr als eine Instanz desselben Wortes finden, können Sie damit umgehen, wie Sie möchten. Geben Sie es mehrmals oder nur einmal aus, es liegt an Ihnen
Beispiele / Testfälle
Angesichts der folgenden Tafel:
ABCD
EFGH
IJKL
MNOP
Und der folgende Suchbegriff:
ABCD,CGKO,POMN,NJF,AFKP,CFI,LGB,MJGD
Ihr Programm sollte in beliebiger Reihenfolge Folgendes ausgeben:
ABCD at 0,0
CGKO at 0,2
PONM at 3,3
NJF at 3,1
AFKP at 0,0
CFI at 0,2
LGB at 2,3
MJGD at 3,0
Wie immer gewinnt die kürzeste Antwort
code-golf
string
word-search
morpen
quelle
quelle
Antworten:
JavaScript (Node.js) ,
154152150141 ByteGibt ein Array von Positionen zurück (es war zuvor eine Zeichenfolge mit neuen Zeilen)
Probieren Sie es online!
quelle
Python 2 , 213 Bytes
Probieren Sie es online!
g
Nimmt eine Startpositioni,j
und eine Richtungu,v
und extrahiert durch Rekursion die Zeichenfolge, die an dieser Position in dieser Richtung beginnt.f
besucht dann jeden Startorti,j
und jede StartrichtungU/3-1,U%3-1
und überprüft jedes Wort,w
um festzustellen, ob die resultierende Zeichenfolge mit beginntw
.quelle
Python 3 ,
149147 BytesProbieren Sie es online!
Ungolfed-Version
Die Hauptidee ist, dass
b[i::d]
ein Slice vom Spielplan ausgewählt wird. Die Scheibe beginnt als Positioni
und erstreckt sich in die Richtungd
. Entspricht beispielsweised = h+1
der Südostdiagonale, wohingegend = ~h
die gleiche wie-h-1
die Nordwestdiagonale entspricht.[:len(y)]
schneidet die Scheibe in der gleichen Länge ab wie das gesuchte Wort.quelle