Napisz program lub funkcję, która pobiera niepusty łańcuch jednowierszowy. Możesz założyć, że zawiera on tylko ASCII do wydruku, z wyłączeniem spacji.
Wydrukuj lub zwróć kształt rombu ASCII podobny do cytryny lub limonki wykonanych z prefiksów sznurka.
Załóżmy, że ciąg wejściowy ma długość n liter. Następnie taki kształt składa się ze zszytych 2n - 1 kolumn sztuki ASCII, z których każda składa się z 2n - 1 linii. Licząc od 1, k-ta kolumna ma szerokość f (k) = min (k, 2n - k) i zawiera f (k) kopie pierwszych znaków f (k) znaków wejściowych, wyśrodkowanych pionowo, z pojedynczym pustym miejscem linie oddzielające kopie.
Na przykład, jeśli dane wejściowe to Lemon
, dane wyjściowe powinny być:
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
Jeśli wejście jest lime
wyjściem powinno być:
lime
lim lim
li lime li
l lim lim l
li lime li
lim lim
lime
Ten sam wzorzec obowiązuje dla innych danych wejściowych:
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
Linie na wyjściu mogą mieć końcowe spacje i może istnieć jedna opcjonalna nowa linia końcowa.
Najkrótszy kod w bajtach wygrywa.