Eu venho fazendo buscas da palavra recentemente, e eu pensei que seria tão mais fácil se todas as palavras lidas da esquerda para a direita. Mas reescrever todas as linhas exige muito esforço! Então, estou recrutando jogadores de código para ajudar.
(Isenção de responsabilidade: a história acima pode ou não ser remotamente precisa.)
Seu código pegará uma grade retangular e produzirá todas as linhas através dela nas duas direções.
A saída deve conter todas as 8 rotações da grade (cardeais e diagonais principais), 'lidas' de cima para baixo, da esquerda para a direita. (Isso significa que cada "linha" será duplicada - uma vez para frente e outra para trás.)
As divisões de linha podem ser um espaço ou uma quebra de linha. Se você escolher espaços, as divisões de rotação da grade deverão ser quebras de linha; caso contrário, as divisões de rotação da grade devem ser duas quebras de linha.
Entrada de exemplo (tomada como uma matriz de caracteres, sequência multilinha ou outro formato razoável)
ABCDE
FGHIJ
KLMNO
PQRST
Exemplo de saída (usando a primeira opção para divisões)
ABCDE FGHIJ KLMNO PQRST
E DJ CIO BHNT AGMS FLR KQ P
EJOT DINS CHMR BGLQ AFKP
T OS JNR EIMQ DHLP CGK BF A
TSRQP ONMLK JIHGF EDBCA
P QK RLF SMGA TNHB OIC JD E
PKFA QLGB RMHC SNID TOJE
A FB KGC PLHD QMIE RNJ SO T
A ordem das rotações "lidas" não importa, desde que todos os oito cardeais e intercardeais primários sejam feitos uma vez.
Isso é código-golfe , então o código mais curto vence. Aplicam-se brechas padrão.
fonte
Respostas:
Python 3, 181 bytes
Explicação
Resultados
com uma saída mais limpa (189 bytes)
.
fonte
MATL , 40 bytes
Input é uma matriz de caracteres 2D na notação Matlab:
A saída contém cada "palavra" em uma linha separada.
Experimente online!
fonte