Palabras elásticas

En este desafío, debes pensar en las palabras como si fueran elásticos. ¿Qué sucede cuando estiras un elástico aplicando una fuerza de tracción constante en ambos extremos? Cada parte (o letra, en este caso) del elástico se expandirá, con la expansión mínima en los extremos y la máxima en el centro.

Si la palabra tiene una longitud impar, el carácter central efectivo de la palabra será el pivote que divide la palabra en dos mitades.

"ABC" -> Left = "A" | Center = "B" | Right = "C"

Si la palabra tiene una longitud par, considerarás dos partes de igual longitud, donde el último carácter de la mitad izquierda y el primer carácter de la mitad derecha serán el centro.

"ABCD" -> Left = "AB" | Right = "CD"

Representarás la expansión de una letra repitiéndola tantas veces como indique su posición numérica (es decir, contando los índices desde/hasta 1, y no desde 0 como es habitual) en su mitad, con un orden creciente en la mitad izquierda y un orden decreciente en la mitad derecha.

Word = "ANNA" 

Left = "AN"
Right = "NA"

Left = "A" * 1 + "N" * 2 = "ANN"
Right = "N" * 2 + "A" * 1 = "NNA"

Word = Left + Right = "ANNNNA"

Si la palabra tiene una longitud impar, el pivote (el carácter central) será el punto máximo (es decir, el valor más alto) que delimita las dos mitades de la palabra.

Word = "KAYAK"

Left = "K" * 1 + "A" * 2 = "KAA"
Pivot = "Y" * 3 = "YYY"
Right = "A" * 2 + "K" * 1 = "AAK"

Word = Left + Pivot + Right = "KAAYYYAAK"

Dada una word, implementa una función que devuelva la versión elasticizada de la palabra como una cadena.

Ejemplos

elasticize("ANNA") ➞ "ANNNNA"

elasticize("KAYAK") ➞ "KAAYYYAAK"

elasticize("X") ➞ "X"

Notas

  • Para palabras de menos de tres caracteres, la función debe devolver la misma palabra (no se puede aplicar tracción).
  • Recuerda que, en la parte izquierda, los caracteres se cuentan de 1 hasta el final y, en orden inverso hasta llegar a 1, en la parte derecha.