Ceci est un miroir: |
. Je viens de découvrir que vous pouvez coller un miroir au milieu d'une chaîne si la chaîne peut être mise en miroir sur elle-même! Par exemple, la chaîne abccba
. Si vous le coupez en deux, les deux moitiés sont des images miroir l'une de l'autre:
abc <--> cba
Donc, nous pouvons coller un miroir au milieu de la chaîne, et notre nouvelle chaîne est abc|cba
. Parfois, seule une partie de la chaîne peut être mise en miroir sur elle-même. Par exemple, la chaîne "miroir". Les deux r sont en miroir, mais pas le reste de la chaîne. C'est OK, nous allons simplement supprimer les parties de la chaîne qui ne se reflètent pas et nous obtenons la chaîne suivante:
r|r
Certaines chaînes peuvent être mises en miroir à plusieurs endroits. Par exemple, "Bonjour tout le monde, xyzzyx". J'aime que beaucoup de texte se reflète dans mon miroir, vous devez donc trouver le meilleur endroit pour placer mon miroir. Dans ce cas, vous devez sortir la chaîne en miroir plus longue et, comme dans notre dernier exemple, supprimer tout le reste. Cette chaîne devient:
xyz|zyx
Certaines chaînes semblent pouvoir être mises en miroir, mais ne le peuvent pas. Si une chaîne ne peut être mise en miroir nulle part, vous ne devez rien produire.
Le défi:
Étant donné une chaîne contenant uniquement ascii imprimable, trouvez le meilleur endroit pour mettre mon miroir. En d'autres termes,
Trouvez la plus grande sous-chaîne palindromique de longueur paire, puis affichez-la avec un caractère de tuyau '|' au milieu.
L'entrée comprendra de 1 à 50 caractères.
Vous pouvez supposer que l'entrée ne contiendra pas de miroirs |
ou de nouvelles lignes. Au-delà de cela, tous les caractères ascii imprimables sont du jeu équitable. Si la sous-chaîne en miroir la plus longue est liée entre deux sous-chaînes, vous pouvez choisir celle à afficher. Par exemple, pour la chaîne "abba ollo", vous devez sortir "ab | ba" ou "ol | lo", mais peu importe celle que vous sortez. Les chaînes sont sensibles à la casse, par exemple "ABba" ne doit pas sortir "AB | ba", il doit sortir la chaîne vide.
Exemple d'E / S:
"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"
Comme d'habitude, il s'agit de code-golf, donc les failles standard s'appliquent et la réponse la plus courte en octets l'emporte!