Palavras elásticas

Neste desafio, você deve pensar nas palavras como se fossem elásticos. O que acontece quando você estica um elástico aplicando uma força de tração constante em ambas as extremidades? Cada parte (ou letra, neste caso) do elástico se expandirá, com a expansão mínima nas extremidades e a máxima no centro.

Se a palavra tiver um comprimento ímpar, o caractere central efetivo da palavra será o pivô que divide a palavra em duas metades.

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

Se a palavra tiver um comprimento par, você considerará duas partes de mesmo comprimento, com o último caractere da metade esquerda e o primeiro caractere da metade direita sendo o centro.

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

Você representará a expansão de uma letra repetindo-a tantas vezes quanto sua posição numérica (ou seja, contando os índices de/até 1, e não a partir de 0 como de costume) em sua metade, com uma ordem crescente na metade esquerda e uma ordem decrescente na metade direita.

Word = "ANNA" 

Left = "AN"
Right = "NA"

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

Word = Left + Right = "ANNNNA"

Se a palavra tiver um comprimento ímpar, o pivô (o caractere central) será o pico (ou seja, o maior valor) que delimita as duas metades da palavra.

Word = "KAYAK"

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

Word = Left + Pivot + Right = "KAAYYYAAK"

Dada uma word, implemente uma função que retorne a versão elasticizada da palavra como uma string.

Exemplos

elasticize("ANNA") ➞ "ANNNNA"

elasticize("KAYAK") ➞ "KAAYYYAAK"

elasticize("X") ➞ "X"

Notas

  • Para palavras com menos de três caracteres, a função deve retornar a mesma palavra (não é possível aplicar tração).
  • Lembre-se: na parte esquerda, os caracteres são contados de 1 até o fim e, em ordem reversa até chegar a 1, na parte direita.