Dada uma lista de palavras e uma grade de letras, encontre todas as palavras na grade e remova quaisquer letras que não façam parte de nenhuma das palavras. As palavras podem ser para a frente, para trás, para cima, para baixo ou na diagonal. Você pode supor que nenhuma palavra na lista ocorrerá em mais de um lugar na grade.
A entrada sempre será: uma lista de palavras, 1 por linha, seguida por uma linha em branco, seguida pela grade de letras.
Exemplos
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
Resultado
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
Resultado
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 é o código-golfe - a solução mais curta vence.
Respostas:
Ruby 1.9,
214210206182177173172166fonte
Perl - 230 caracteres
Contagem inclui 4 para opções de linha de comando "-ln".
Ungolfed:
fonte
.{$n}
parte do regexp (junto com a/s
opção) envolve as diagonais (e diretamente para baixo) para implementar o componente descendente da direção da correspondência. Sua preocupação é uma correspondência falsa que envolve? AFAICT, isso não pode fornecer correspondências falsas, devido às novas linhas na sequência. Suponha que a letra i de uma palavra corresponda na coluna mais à direita e estamos verificando a diagonal SE. A.{$n}
parte ignora os próximos caracteres $ W + 1, que são os seguintes imediatamente \ n e toda a próxima linha. A letra i + 1 será incompatível com o próximo \ n, portanto, nenhuma correspondência geral.JavaScript: 342 caracteres
Versão com código de golfe:
Versão formatada:
O conceito por trás dessa solução é iterar todas as posições no quadro, inicializar os valores de uma matriz 2D para '' para cada posição e, em seguida, considerar todas as possíveis direções e desvios de palavras. Se uma palavra correspondente for encontrada, o valor da matriz para essa posição será atualizado para a letra correta. Finalmente, a matriz é convertida em uma sequência e retornada.
fonte
Scala
697,666649degolfado:
fonte
stdin
vez defromFile
. Não especifiquei de onde vem a entrada.