Contexte
Célébration de la publication de Dyalog APL 16.0 , où la solution à ce problème est {⊢⌺(≢⍵)⊢⍵}
Explication
Tâche
Avec une chaîne ASCII imprimable de longueur impaire n , créez un carré n × n avec la chaîne centrée horizontalement, dupliquée pour être centrée verticalement et avec des acrostiches de la même chaîne dans chaque ligne et colonne. Notez que toutes les chaînes sauf les chaînes centrées seront coupées pour conserver la taille du carré n × n .
L'explication de votre code sera très appréciée.
Règles
- Vous pouvez avoir des espaces et des nouvelles lignes à la fin (cela inclut le triangle inférieur droit)
- Vous pouvez retourner une liste de chaînes
Exemple utilisant la chaîne ABXCD
:
n est 5. On commence par dessiner les deux chaînes centrées, l'une horizontale et l'autre verticale:
┌─────┐ │ A │ │ B │ │ABXCD│ │ C │ │ D │ └─────┘
(5 × 5 cadre de sélection ajouté pour plus de clarté)
Ensuite, nous plaçons tous les acrostiches possibles, horizontalement et verticalement:
UNE UN B ┌─────┐ │ ABX│CD │ ABXC│D │ABXCD│ A│BXCD │ AB│XCD │ └─────┘ CD ré
Enfin, nous ne renvoyons que ce qui se trouve à l'intérieur du cadre de sélection:
ABX ABXC ABXCD BXCD XCD
Cas de 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
Remerciements
Merci à dzaima , Leaky Nun , à M. Xcoder pour tout sauf l’idée même de ce défi.