Dado um texto retangular como um quebra-cabeça de pesquisa por palavra e uma sequência de pesquisa, determine se o texto contém a sequência de pesquisa. A cadeia de pesquisa pode aparecer:
- horizontal, vertical ou diagonal
- para frente ou para trás
Você pode escrever uma função ou um programa e usar duas strings como entrada via argumento da função, ARGV ou STDIN. A saída deve ser um resultado verdadeiro ou falso que pode ser retornado da função ou gravado em STDOUT.
Suponha que o texto contenha caracteres ASCII imprimíveis arbitrários (códigos hexadecimais 20 a 7E) e caracteres de quebra de linha. As letras diferenciam maiúsculas de minúsculas. Você pode assumir que o texto de entrada é retangular, ou seja, todas as linhas têm o mesmo comprimento. Você pode decidir se a entrada termina com uma nova linha à direita ou não (se for importante para o envio).
Isso é código de golfe, a resposta mais curta (em bytes) vence.
Exemplos
Usando essa grade do artigo da Wikipedia sobre pesquisas de palavras como a primeira entrada:
WVERTICALL
ROOAFFLSAB
ACRILIATOA
NDODKONWDC
DRKESOODDK
OEEPZEGLIW
MSIIHOAERA
ALRKRRIRER
KODIDEDRCD
HELWSLEUTH
as seguintes cadeias de pesquisa devem produzir resultados verdadeiros ou falsos, respectivamente:
Truthy: RANDOM, VERTICAL, HORIZONTAL, WORDSEARCH, WIKIPEDIA, TAIL
Falsy: WordSearch, CODEGOLF, UNICORN
Como alternativa, usando este texto de entrada
Lorem ipsum dolor sit amet consectetu
r adipisicing elit sed do eiusmod tem
por incididunt ut labore et dolore ma
gna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco lab
oris nisi ut aliquip ex ea commodo co
nsequat. Duis aute irure dolor in rep
rehenderit in voluptate velit esse ci
llum dolore eu fugiat nulla pariatur.
Obtemos os seguintes resultados de pesquisa (usando aspas agora, porque há espaços em algumas cadeias de pesquisa):
Truthy: "Lorem", "mine", "uma bop", "tuetdod", "snol,a", "texas", "pii.d v", "vexta"
Falsy: "lorem", "wordsearch", "pii.d v", "mute"