Ayer me pregunté si podría escribir un programa para revisar una búsqueda de palabras y generar las respuestas. En realidad fue sorprendentemente fácil. Ahora me pregunto qué tan pequeños podemos llegar a ser.
Reglas
- Su primera entrada es una cadena o colección de n líneas, cada una de las cuales tiene una longitud de n caracteres.
- Su segunda entrada es una lista de palabras en cualquier formato para encontrar en el rompecabezas
- Todas las palabras en la lista de búsqueda están garantizadas para estar en el rompecabezas
- Las palabras pueden orientarse en cualquiera de las cuatro direcciones cardinales, así como en diagonal tanto hacia adelante como hacia atrás
- Solo los caracteres en mayúscula AZ estarán presentes en el rompecabezas
- Su código debe encontrar cada palabra en la cadena de búsqueda y generar la posición de coordenadas de la letra inicial, donde 0,0 es el carácter superior izquierdo.
- En el caso de que localice más de una instancia de la misma palabra, puede manejarla como desee. Envíelo varias veces, o solo una vez, depende de usted
Ejemplos / Casos de prueba
Dada la siguiente tabla:
ABCD
EFGH
IJKL
MNOP
Y la siguiente cadena de búsqueda:
ABCD,CGKO,POMN,NJF,AFKP,CFI,LGB,MJGD
Su programa debería generar lo siguiente, en cualquier orden:
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
Como siempre, la respuesta más corta gana
code-golf
string
word-search
morpen
fuente
fuente
Respuestas:
JavaScript (Node.js) ,
154152150141 bytesdevuelve una matriz de ubicaciones (antes era una cadena con nuevas líneas)
Pruébalo en línea!
fuente
Python 2 , 213 bytes
Pruébalo en línea!
g
toma una ubicación iniciali,j
y una direcciónu,v
y, mediante recursión, extrae la cadena que comienza en esa ubicación en esa dirección.f
luego visita cada ubicacióni,j
y dirección de inicioU/3-1,U%3-1
y comprueba cada palabraw
para ver si la cadena resultante comienza conw
.fuente
Python 3 ,
149147 bytesPruébalo en línea!
Versión sin golf
La idea principal es que
b[i::d]
selecciona una porción del tablero de juego. El corte comienza como posicióni
y se extiende en la direcciónd
. Por ejemplo,d = h+1
corresponde a la diagonal sureste, mientrasd = ~h
que, que es lo mismo-h-1
, corresponde a la diagonal noroeste.[:len(y)]
corta el corte en la misma longitud que la palabra que se busca.fuente