Introdução
Um fechamento palíndrico de uma sequência de entrada é o palíndromo mais curto que pode ser construído a partir da sequência de entrada em que o palíndromo final começa com a sequência de entrada.
Para esse desafio, consideraremos um fechamento palindrômico bidirecional, de modo que
- O fechamento palíndrico esquerdo de uma sequência de entrada é o palíndromo mais curto possível que começa com a sequência de entrada.
- O fechamento palíndrico direito de uma sequência de entrada é o palíndromo mais curto possível que termina com a sequência de entrada.
- O fechamento palindrômico bidirecional de uma sequência de entrada é o mais curto entre o fechamento palindrômico esquerdo ou direito da sequência de entrada.
Tarefa
Sua tarefa é simples. Dada uma sequência (consistindo apenas em ASCII imprimível, novas linhas e espaços em branco), produza o fechamento palindrômico bidirecional dessa sequência. Em caso de empate, o fechamento palindrômico esquerdo ou direito é uma saída válida.
Você pode escrever um programa ou função, recebendo entrada via STDIN (ou alternativa mais próxima), argumento de linha de comando ou argumento de função e imprimindo o resultado em STDOUT (ou alternativa mais próxima) ou retornando-o como uma sequência.
Você pode assumir que a entrada nunca será uma sequência vazia.
Poucos exemplos:
<Input> -> <Output>
"abcdef" -> "abcdefedcba" (or "fedcbabcdef")
"abcba" -> "abcba"
"abcb" -> "abcba"
"cbca" -> "acbca"
O crédito da ideia inicial vai para o VisualMelon, idéia final com a ajuda de Martin e Zgarb
Os termos fechamento palindrômico, fechamento palindrômico esquerdo e fechamento palindrômico direito foram usados pela primeira vez e definidos por este artigo .