Scrivi un programma o una funzione che accetta una stringa a riga singola non vuota. Si può presumere che contenga solo ASCII stampabile escluso lo spazio.
Stampa o restituisci una forma a losanghe di arte ASCII simile a un limone o lime fatto dai prefissi della stringa.
Supponiamo che la stringa di input sia lunga n lettere. Quindi, tale forma è composta da 2n - 1 colonne di arte ASCII cucite insieme, ciascuna composta da 2n - 1 linee. Contando da 1, la colonna k -esima è larga f (k) = min (k, 2n - k) e contiene f (k) copie dei primi caratteri f (k) dell'input, centrati verticalmente, con un singolo spazio linee che separano le copie.
Ad esempio, se l'input è Lemon
, l'output dovrebbe essere:
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
Se l'ingresso è lime
l'output dovrebbe essere:
lime
lim lim
li lime li
l lim lim l
li lime li
lim lim
lime
E lo stesso modello è seguito per altri input:
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
Le righe nell'output possono avere spazi finali e potrebbe esserci una riga finale finale opzionale.
Vince il codice più breve in byte.