Escriba un programa o función que tome una cadena de una sola línea no vacía. Puede suponer que solo contiene ASCII imprimible, excluyendo el espacio.
Imprima o devuelva una forma de rombo ASCII similar a un limón o lima hecha de los prefijos de la cuerda.
Supongamos que la cadena de entrada tiene n letras de largo. Luego, dicha forma consta de 2n - 1 columnas de arte ASCII unidas, cada una de las cuales consta de 2n - 1 líneas. Contando desde 1, la columna k -ésima tiene f (k) = min (k, 2n - k) caracteres de ancho, y contiene copias f (k) de los primeros caracteres f (k) de entrada, centrados verticalmente, con un solo espacio en blanco líneas que separan las copias.
Por ejemplo, si la entrada es Lemon
, la salida debería ser:
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
Si la entrada es lime
la salida debe ser:
lime
lim lim
li lime li
l lim lim l
li lime li
lim lim
lime
Y se sigue el mismo patrón para otras entradas:
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
Las líneas en la salida pueden tener espacios finales y puede haber una nueva línea final opcional.
El código más corto en bytes gana.