Este é um espelho: |
. Acabei de descobrir que você pode colar um espelho no meio de uma string se a string puder ser espelhada em si mesma! Por exemplo, a sequência abccba
. Se você cortá-lo ao meio, as duas metades são imagens espelhadas uma da outra:
abc <--> cba
Então, podemos colocar um espelho no meio da string, e nossa nova string é abc|cba
. Às vezes, apenas parte da cadeia pode ser espelhada em si mesma. Por exemplo, a cadeia "espelho". Os dois r's são espelhados, mas o resto da string não é. Tudo bem, apenas removeremos as partes da sequência que não se espelham e obteremos a seguinte sequência:
r|r
Algumas seqüências de caracteres podem ser espelhadas em vários lugares. Por exemplo, "Olá, mundo, xyzzyx". Eu gosto de ter muito texto refletido no meu espelho, então você precisa encontrar o melhor lugar para colocar o meu espelho. Nesse caso, você deve gerar a string espelhada mais longa e, como no nosso último exemplo, remover todo o resto. Essa sequência se torna:
xyz|zyx
Algumas seqüências parecem poder ser espelhadas, mas na verdade não podem. Se uma sequência não puder ser espelhada em nenhum lugar, você não deverá produzir nada.
O desafio:
Dada uma string contendo apenas ascii imprimíveis, encontre o melhor lugar para colocar meu espelho. Em outras palavras,
Encontre a maior substring palindrômica de tamanho uniforme e, em seguida, imprima-a com um caractere de pipe '|' no meio disso.
A entrada terá de 1 a 50 caracteres.
Você pode assumir que a entrada não conterá espelhos |
ou novas linhas. Além disso, todos os personagens imprimíveis-ascii são um jogo justo. Se a subseqüência espelhada mais longa estiver ligada entre duas subseqüências, você poderá escolher qual delas produzirá. Por exemplo, para a cadeia "abba ollo", você deve gerar "ab | ba" ou "ol | lo", mas não importa qual deles você produz. As strings diferenciam maiúsculas de minúsculas, por exemplo, "ABba" não deve gerar "AB | ba", deve gerar a string vazia.
IO de amostra:
"Hello World" --> "l|l"
"Programming Puzzles and Code-Golf" --> Either "m|m" or "z|z"
"abcba" --> ""
"Hulluh" --> "ul|lu"
"abcdefggfedcba" --> "abcdefg|gfedcba"
"abcdefggfabc" --> "fg|gf"
"AbbA" --> "Ab|bA"
"This input is a lot like the last one, but with more characters that don't change the output. AbbA" --> "Ab|bA"
Como de costume, isso é código-golfe, então as brechas padrão se aplicam e a resposta mais curta em bytes vence!