fundo
Comemorando o lançamento do Dyalog APL 16.0 , onde a solução para esse problema é {⊢⌺(≢⍵)⊢⍵}
Explicação
Tarefa
Dada uma cadeia ASCII imprimível de comprimento estranho n , fazer um n x n quadrado com a cadeia centrado horizontalmente, duplicado para ser centrado verticalmente, e com acrostics da mesma cadeia em cada linha e coluna. Observe que todas as cordas, exceto as centradas, serão cortadas para manter o tamanho do quadrado n × n .
A explicação do seu código será muito apreciada.
Regras
- Você pode ter espaços em branco e novas linhas à direita (isso inclui o triângulo inferior direito)
- Você pode retornar uma lista de strings
Exemplo usando a sequência ABXCD
:
n é 5. Primeiro, desenhamos as duas cordas centralizadas, uma horizontal e outra vertical:
┌─────┐ │ A │ │ B │ │ABXCD│ │ C │ │ D │ └─────┘
(Caixa delimitadora 5 × 5 adicionada para maior clareza)
Em seguida, colocamos todos os acrósticos possíveis, horizontal e verticalmente:
UMA AB ┌─────┐ │ ABX│CD │ ABXC│D │ABXCD│ A│BXCD │ AB│XCD │ └─────┘ CD D
Finalmente, retornamos apenas o que está dentro da caixa delimitadora:
ABX ABXC ABXCD BXCD XCD
Casos de teste
World
:
Wor
Worl
World
orld
rld
mississippi
:
missis
mississ
mississi
mississip
mississipp
mississippi
ississippi
ssissippi
sissippi
issippi
ssippi
Pneumonoultramicroscopicsilicovolcanoconiosis
:
Pneumonoultramicroscopi
Pneumonoultramicroscopic
Pneumonoultramicroscopics
Pneumonoultramicroscopicsi
Pneumonoultramicroscopicsil
Pneumonoultramicroscopicsili
Pneumonoultramicroscopicsilic
Pneumonoultramicroscopicsilico
Pneumonoultramicroscopicsilicov
Pneumonoultramicroscopicsilicovo
Pneumonoultramicroscopicsilicovol
Pneumonoultramicroscopicsilicovolc
Pneumonoultramicroscopicsilicovolca
Pneumonoultramicroscopicsilicovolcan
Pneumonoultramicroscopicsilicovolcano
Pneumonoultramicroscopicsilicovolcanoc
Pneumonoultramicroscopicsilicovolcanoco
Pneumonoultramicroscopicsilicovolcanocon
Pneumonoultramicroscopicsilicovolcanoconi
Pneumonoultramicroscopicsilicovolcanoconio
Pneumonoultramicroscopicsilicovolcanoconios
Pneumonoultramicroscopicsilicovolcanoconiosi
Pneumonoultramicroscopicsilicovolcanoconiosis
neumonoultramicroscopicsilicovolcanoconiosis
eumonoultramicroscopicsilicovolcanoconiosis
umonoultramicroscopicsilicovolcanoconiosis
monoultramicroscopicsilicovolcanoconiosis
onoultramicroscopicsilicovolcanoconiosis
noultramicroscopicsilicovolcanoconiosis
oultramicroscopicsilicovolcanoconiosis
ultramicroscopicsilicovolcanoconiosis
ltramicroscopicsilicovolcanoconiosis
tramicroscopicsilicovolcanoconiosis
ramicroscopicsilicovolcanoconiosis
amicroscopicsilicovolcanoconiosis
microscopicsilicovolcanoconiosis
icroscopicsilicovolcanoconiosis
croscopicsilicovolcanoconiosis
roscopicsilicovolcanoconiosis
oscopicsilicovolcanoconiosis
scopicsilicovolcanoconiosis
copicsilicovolcanoconiosis
opicsilicovolcanoconiosis
picsilicovolcanoconiosis
icsilicovolcanoconiosis
Agradecimentos
Obrigado a dzaima , Leaky Nun , Sr. Xcoder por tudo, menos pela própria idéia desse desafio.