Напишите программу или функцию, которая принимает непустую однострочную строку. Вы можете предположить, что он содержит только печатные ASCII исключая пробел.
Напечатайте или верните ASCII художественную ромбовидную форму, похожую на лимон или лайм, сделанные из префиксов строки.
Предположим, что длина входной строки составляет n букв. Затем такая форма состоит из 2n - 1 столбцов искусства ASCII, сшитых вместе, каждая из которых состоит из 2n - 1 линий. Считая от 1, k-й столбец имеет ширину f (k) = min (k, 2n - k) символов и содержит f (k) копии первых f (k) символов ввода, по центру по вертикали с одним пробелом линии, разделяющие копии.
Например, если на входе Lemon
, выход должен быть:
Lemon
Lemo Lemo
Lem Lemon Lem
Le Lemo Lemo Le
L Lem Lemon Lem L
Le Lemo Lemo Le
Lem Lemon Lem
Lemo Lemo
Lemon
Если на входе lime
вывод, должен быть:
lime
lim lim
li lime li
l lim lim l
li lime li
lim lim
lime
И тот же шаблон применяется для других входов:
a
a
Be
Be
B B
Be
/\
/\
/ /
/\
cat
cat
ca ca
c cat c
ca ca
cat
|||
|||
|| ||
| ||| |
|| ||
|||
.__.
.__.
.__ .__
._ .__. ._
. .__ .__ .
._ .__. ._
.__ .__
.__.
$tring
$tring
$trin $trin
$tri $tring $tri
$tr $trin $trin $tr
$t $tri $tring $tri $t
$ $tr $trin $trin $tr $
$t $tri $tring $tri $t
$tr $trin $trin $tr
$tri $tring $tri
$trin $trin
$tring
У строк в выходных данных могут быть завершающие пробелы, и может быть одна дополнительная конечная новая строка.
Самый короткий код в байтах побеждает.