Este es un espejo: |
. ¡Acabo de descubrir que puedes pegar un espejo en el medio de una cuerda si la cuerda se puede reflejar en sí misma! Por ejemplo, la cadena abccba
. Si lo corta por la mitad, las dos mitades son imágenes especulares entre sí:
abc <--> cba
Entonces, podemos pegar un espejo en el medio de la cadena, y nuestra nueva cadena es abc|cba
. A veces, solo parte de la cadena se puede reflejar en sí misma. Por ejemplo, la cadena "espejo". Las dos r se reflejan, pero el resto de la cadena no. Está bien, simplemente eliminaremos las partes de la cadena que no se reflejan entre sí, y obtenemos la siguiente cadena:
r|r
Algunas cadenas pueden reflejarse en múltiples lugares. Por ejemplo, "Hola mundo, xyzzyx". Me gusta tener un montón de texto reflejado en mi espejo, por lo que debes encontrar el mejor lugar para poner mi espejo. En este caso, debe generar la cadena reflejada más larga y, al igual que en nuestro último ejemplo, eliminar todo lo demás. Esta cadena se convierte en:
xyz|zyx
Algunas cadenas mirar como que se pueden reflejar, pero en realidad no pueden. Si una cadena no se puede reflejar en ningún lado, no debe generar nada.
El reto:
Dada una cadena que contiene solo ascii imprimible, encuentra el mejor lugar para poner mi espejo. En otras palabras,
Encuentre la subcadena palindrómica de longitud par más grande, luego envíela con un carácter de tubería '|' en el medio
La entrada tendrá 1-50 caracteres de longitud.
Puede suponer que la entrada no contendrá espejos |
o nuevas líneas. Más allá de eso, todos los personajes imprimibles-ascii son juegos justos. Si la subcadena reflejada más larga está vinculada entre dos subcadenas, puede elegir cuál generar. Por ejemplo, para la cadena "abba ollo", debe generar "ab | ba" u "ol | lo", pero no importa cuál genere. Las cadenas distinguen entre mayúsculas y minúsculas, por ejemplo, "ABba" no debería generar "AB | ba", debería generar la cadena vacía.
Muestra IO:
"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 costumbre, este es el código de golf, por lo que se aplican las lagunas estándar, ¡y gana la respuesta más corta en bytes!