Hier, je me suis demandé si je pouvais écrire un programme pour passer au peigne fin une recherche de mots donnée et produire les réponses. C'était en fait étonnamment facile. Maintenant, je me demande à quel point nous pouvons être petits.
Règles
- Votre première entrée est une chaîne ou une collection de n lignes, dont chacune comporte n caractères
- Votre deuxième entrée est une liste de mots dans n'importe quel format à trouver dans le puzzle
- Tous les mots de la liste de recherche sont garantis dans le puzzle
- Les mots peuvent être orientés dans l'une des quatre directions cardinales, ainsi qu'en diagonale vers l'avant et vers l'arrière
- Seuls les caractères AZ majuscules seront présents dans le puzzle
- Votre code doit trouver chaque mot dans la chaîne de recherche et afficher la position des coordonnées de la lettre de départ, où 0,0 est le caractère supérieur gauche.
- Si vous localisez plusieurs instances du même mot, vous pouvez le gérer comme vous le souhaitez. Sortie plusieurs fois, ou une seule fois, c'est à vous
Exemples / cas de test
Étant donné le tableau suivant:
ABCD
EFGH
IJKL
MNOP
Et la chaîne de recherche suivante:
ABCD,CGKO,POMN,NJF,AFKP,CFI,LGB,MJGD
Votre programme doit afficher les éléments suivants, dans n'importe quel ordre:
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
Comme toujours, la réponse la plus courte l'emporte
code-golf
string
word-search
morpen
la source
la source
Réponses:
JavaScript (Node.js) ,
154152150 150141 octetsrenvoie un tableau d'emplacements (c'était une chaîne avec de nouvelles lignes auparavant)
Essayez-le en ligne!
la source
Python 2 , 213 octets
Essayez-le en ligne!
g
prend un emplacement de départi,j
et une directionu,v
et par récursion extrait la chaîne commençant à cet emplacement dans cette direction.f
visite ensuite chaque emplacementi,j
et direction de départU/3-1,U%3-1
et vérifie chaque motw
pour voir si la chaîne résultante commence parw
.la source
Python 3 ,
149147 octetsEssayez-le en ligne!
Version non golfée
L'idée principale est de
b[i::d]
sélectionner une tranche sur le plateau de jeu. La tranche commence comme positioni
et s'étend dans la directiond
. Par exemple,d = h+1
correspond à la diagonale sud-est, tandis qued = ~h
, qui est la même que-h-1
, correspond à la diagonale nord-ouest.[:len(y)]
coupe la tranche à la même longueur que le mot recherché.la source