Palavras elásticas
Neste desafio, imagine que as palavras são elásticas. O que acontece quando você estica um elástico aplicando uma força de tração constante nas duas extremidades? Cada parte (ou letra, neste caso) se expandirá: a expansão será mínima nas extremidades e máxima no centro.
Se a palavra tiver um comprimento ímpar, o caractere central será o pivô que a divide em duas metades.
"ABC" -> Left = "A" | Center = "B" | Right = "C"Se a palavra tiver um comprimento par, considere duas metades de mesmo comprimento. O último caractere da metade esquerda e o primeiro da metade direita formarão o centro.
"ABCD" -> Left = "AB" | Right = "CD"Para representar a expansão de uma letra, repita-a tantas vezes quanto indicar sua posição numérica dentro da respectiva metade (ou seja, contando os índices de / até 1, e não a partir de 0 como de costume). As posições aumentam na metade esquerda e diminuem 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 ponto máximo, ou seja, o maior valor que separa 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 esticada 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, pois não é possível aplicar tração.
- Lembre-se: na metade esquerda, as posições dos caracteres aumentam a partir de 1; na metade direita, elas diminuem novamente até 1.