tło
Świętujemy wydanie Dyalog APL 16.0 , w którym rozwiązaniem tego problemu jest {⊢⌺(≢⍵)⊢⍵}
wyjaśnienie
Zadanie
Biorąc pod uwagę drukowalny ciąg ASCII o nieparzystej długości n , utwórz kwadrat n × n ze sznurkiem wyśrodkowanym poziomo, zduplikowanym, aby wyśrodkować go w pionie, oraz z akrostykami tego samego ciągu w każdym rzędzie i kolumnie. Zauważ, że wszystkie oprócz wyśrodkowanych łańcuchów zostaną odcięte, aby zachować rozmiar kwadratu n × n .
Wyjaśnienie twojego kodu będzie mile widziane.
Zasady
- Możesz mieć końcowe białe znaki i znaki nowej linii (dotyczy to również trójkąta w prawym dolnym rogu)
- Możesz zwrócić listę ciągów znaków
Przykład przy użyciu ciągu ABXCD
:
n wynosi 5. Najpierw narysujemy dwa wyśrodkowane ciągi, jeden poziomy i jeden pionowy:
┌─────┐ │ A │ │ B │ │ABXCD│ │ C │ │ D │ └─────┘
(Dodano ramkę ograniczającą 5 × 5 dla przejrzystości)
Następnie umieszczamy wszystkie możliwe akrostyki, poziomo i pionowo:
ZA AB ┌─────┐ │ ABX│CD │ ABXC│D │ABXCD│ A│BXCD │ AB│XCD │ └─────┘ Płyta CD re
Na koniec zwracamy tylko to, co znajduje się w obwiedni:
ABX ABXC ABXCD BXCD XCD
Przypadki testowe
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
Podziękowanie
Dzięki dzaima , Leaky Nun , Mr. Xcoder za wszystko oprócz samej idei tego wyzwania.