sfondo
Festeggiamo il rilascio di Dyalog APL 16.0 , in cui la soluzione a questo problema è la {⊢⌺(≢⍵)⊢⍵}
spiegazione
Compito
Data una stringa ASCII stampabile di lunghezza dispari n , crea un quadrato n × n con la stringa centrata orizzontalmente, duplicata per essere centrata verticalmente e con acrostici della stessa stringa in ogni riga e colonna. Si noti che tutte le stringhe tranne quelle centrate verranno tagliate per mantenere la dimensione del quadrato n × n .
La spiegazione del tuo codice sarà molto apprezzata.
Regole
- Potresti avere spazi vuoti e newline finali (questo include il triangolo in basso a destra)
- È possibile restituire un elenco di stringhe
Esempio usando la stringa ABXCD
:
n è 5. Innanzitutto disegniamo le due stringhe centrate, una orizzontale e una verticale:
┌─────┐ │ A │ │ B │ │ABXCD│ │ C │ │ D │ └─────┘
(5 × 5 riquadro di selezione aggiunto per maggiore chiarezza)
Quindi posizioniamo tutti i possibili acrostici, in orizzontale e in verticale:
UN AB ┌─────┐ │ ABX│CD │ ABXC│D │ABXCD│ A│BXCD │ AB│XCD │ └─────┘ CD D
Infine, restituiamo solo ciò che è all'interno del riquadro di selezione:
ABX ABXC ABXCD BXCD XCD
Casi test
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
Ringraziamenti
Grazie a dzaima , Leaky Nun , Mr. Xcoder per tutto tranne l'idea stessa di questa sfida.