Dada una lista de palabras y una cuadrícula de letras, busque todas las palabras en la cuadrícula y elimine las letras que no sean parte de ninguna de las palabras. Las palabras pueden ser hacia adelante, hacia atrás, hacia arriba, hacia abajo o en diagonal. Puede suponer que ninguna palabra en la lista aparecerá en más de un lugar en la cuadrícula.
La entrada siempre será: una lista de palabras, 1 por línea, seguida de una línea en blanco, seguida de la cuadrícula de letras.
Ejemplos
Entrada
ADA
ALGOL
ASSEMBLY
BASIC
COBOL
DELPHI
FORTRAN
JAVA
LABVIEW
LOGO
PASCAL
PERL
PHP
PYTHON
SMALLTALK
VISUALC
LLJKCABLFCI
OROLOBOCOIM
GELACSAPRSX
LPSTAHWVTAV
ANRLXLXQRBI
IHPLEDOXAHS
KJYAPHPYNOU
FABMADANZJA
EVISNOHTYPL
AAYLBMESSAC
WEIVBALOGOM
Salida
LL K FC
OR LOBOCOI
GELACSAPRS
LP T TAV
A L RBI
IHPLED A S
J APHP N U
A MADA A
V SNOHTYPL
AYLBMESSAC
WEIVBALOGO
Entrada
BACKSPACE
BOLD
CLOSE
COMPACTDISC
COPY
CPU
CURSOR
DELETE
DESKTOP
DVD
EDIT
ENTER
EXIT
FLOPPY
FONT
HARDWARE
INTERNET
KEYBOARD
MONITOR
MOUSE
PASSWORD
PASTE
RETURN
SAVE
SOFTWARE
START
TEXT
TOWER
WORDPROCESSING
IAUERAWTFOSICPN
DGZPFLOPPYARFLU
RSNOCURSORVZDBM
AMNIUOMRNHEGUIN
OTBNSRMONITORNT
BEYTTSGPJBOLDRT
YRQEAHEHARDWARE
EOGRRNECECLOSEP
KIONTYKTODTOWER
ELCENSUPERPDKNN
ATRTPRYKELPVIEJ
GIEANPOTKSEDUSL
NXCMPASSWORDRUC
TEDITAGVSWJCTOV
CWOYPGYQKNLVXMW
Salida
UERAWTFOS
DG PFLOPPYA
R NOCURSORV
A NI O E
OT NS MONITOR
B TTS P BOLD
Y EA EHARDWARE
E RRNECECLOSE
K NT KTO TOWER
E SUPER D
TRTPRY ELPVIE
IEANPOTKSED S
XC PASSWORDRUC
TEDITA O
P MW
Este es el código de golf: la solución más corta gana.
Respuestas:
Ruby 1.9,
214210206182177173172166fuente
Perl - 230 caracteres
El recuento incluye 4 para las opciones de línea de comandos "-ln".
Sin golf:
fuente
.{$n}
parte de la expresión regular (junto con la/s
opción) se ajusta a las diagonales (y hacia abajo) para implementar el componente hacia abajo de la dirección del partido. ¿Es tu preocupación una coincidencia falsa que se envuelve? AFAICT, esto no puede dar coincidencias falsas, debido a las nuevas líneas en la cadena. Supongamos que la letra i de una palabra coincide en la columna de la derecha, y estamos verificando la diagonal SE. La.{$n}
parte omite los siguientes caracteres $ W + 1, que son los siguientes \ ny todos los de la línea siguiente. La letra i + 1 no coincidirá con la siguiente \ n, por lo tanto, no habrá coincidencia general.JavaScript: 342 caracteres
Versión con código de golf:
Versión formateada:
El concepto detrás de esta solución es iterar sobre todas las posiciones en el tablero, inicializar los valores de una matriz 2D en '' para cada posición, y luego considerar todas las posibles direcciones de palabras y compensaciones de palabras. Si se encuentra una palabra coincidente, el valor de la matriz para esa posición se actualiza a la letra correcta. Finalmente, la matriz se convierte en una cadena y se devuelve.
fuente
Scala
697,666649degolfado:
fuente
stdin
lugar defromFile
. No especifiqué de dónde proviene la entrada.