Ontem, me perguntei se poderia escrever um programa para vasculhar uma determinada pesquisa de palavras e gerar as respostas. Foi realmente surpreendentemente fácil. Agora eu me pergunto o quão pequeno podemos ficar.
Regras
- Sua primeira entrada é uma sequência ou coleção de n linhas, cada uma com n caracteres
- Sua segunda entrada é uma lista de palavras em qualquer formato para encontrar no quebra-cabeça
- Todas as palavras da lista de pesquisa estão garantidas no quebra-cabeça
- As palavras podem ser orientadas em qualquer uma das quatro direções cardeais, bem como na diagonal para a frente e para trás
- Apenas caracteres AZ maiúsculos estarão presentes no quebra-cabeça
- Seu código deve encontrar todas as palavras na cadeia de pesquisa e gerar a posição de coordenadas da letra inicial, onde 0,0 é o caractere superior esquerdo.
- Caso você localize mais de uma instância da mesma palavra, você poderá manipulá-la da maneira que desejar. Saída várias vezes, ou apenas uma vez, cabe a você
Exemplos / Casos de Teste
Dado o seguinte quadro:
ABCD
EFGH
IJKL
MNOP
E a seguinte cadeia de pesquisa:
ABCD,CGKO,POMN,NJF,AFKP,CFI,LGB,MJGD
Seu programa deve gerar o seguinte, em qualquer ordem:
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 sempre, a resposta mais curta ganha
code-golf
string
word-search
morpen
fonte
fonte
Respostas:
JavaScript (Node.js) ,
154152150141 bytesretorna uma matriz de locais (era uma string com novas linhas antes)
Experimente online!
fonte
Python 2 , 213 bytes
Experimente online!
g
toma um local de partidai,j
e uma direçãou,v
e, por recursão, extrai a sequência iniciando nesse local nessa direção.f
depois visita cada locali,j
e direção inicialU/3-1,U%3-1
e verifica cada palavraw
para ver se a sequência resultante começa comw
.fonte
Python 3 ,
149147 bytesExperimente online!
Versão ungolfed
A idéia principal é que
b[i::d]
selecione uma fatia do tabuleiro de jogo. A fatia começa como posiçãoi
e se estende na direçãod
. Por exemplo,d = h+1
corresponde à diagonal sudeste, enquantod = ~h
que é igual a-h-1
corresponde à diagonal noroeste.[:len(y)]
corta a fatia no mesmo comprimento que a palavra que está sendo pesquisada.fonte