Задний план
Празднование выпуска Dyalog APL 16.0 , где решением этой проблемы является {⊢⌺(≢⍵)⊢⍵}
Объяснение
задача
Если задана печатаемая строка ASCII нечетной длины n , сделайте квадрат размером n × n со строкой, центрированной по горизонтали, с дублированием для центрирования по вертикали и с акростикой той же строки в каждой строке и столбце. Обратите внимание, что все строки, кроме центрированных, будут обрезаны, чтобы сохранить размер квадрата n × n .
Объяснение вашего кода будет высоко ценится.
правила
- У вас могут быть пробелы и символы новой строки (включая нижний правый треугольник)
- Вы можете вернуть список строк
Пример использования строки ABXCD
:
n равно 5. Сначала мы рисуем две центрированные строки, одну горизонтальную и одну вертикальную:
┌─────┐ │ A │ │ B │ │ABXCD│ │ C │ │ D │ └─────┘
(Для ясности добавлена ограничительная рамка 5 × 5)
Затем мы размещаем всю возможную акростику по горизонтали и вертикали:
AB ┌─────┐ │ ABX│CD │ ABXC│D │ABXCD│ A│BXCD │ AB│XCD │ └─────┘ CD D
Наконец, мы возвращаем только то, что находится внутри ограничительной рамки:
ABX ABXC ABXCD BXCD XCD
Контрольные примеры
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
Подтверждения
Спасибо dzaima , Leaky Nun , Mr. Xcoder за все, кроме самой идеи этого вызова.