Questo è uno specchio: |
. Ho appena scoperto che puoi attaccare uno specchio nel mezzo di una stringa se la stringa può essere specchiata su se stessa! Ad esempio, la stringa abccba
. Se lo tagli a metà le due metà sono immagini speculari l'una dell'altra:
abc <--> cba
Quindi, possiamo attaccare uno specchio nel mezzo della stringa, e la nostra nuova stringa è abc|cba
. A volte, solo una parte della stringa può essere specchiata su se stessa. Ad esempio, la stringa "mirror". Le due r sono speculari, ma il resto della stringa no. Va bene, rimuoveremo solo le parti della stringa che non si rispecchiano a vicenda e otteniamo la seguente stringa:
r|r
Alcune stringhe potrebbero essere specchiate in più punti. Ad esempio, "Hello World, xyzzyx". Mi piace avere un sacco di testo riflesso nel mio specchio, quindi devi trovare il posto migliore per mettere il mio specchio. In questo caso, dovresti generare la stringa più lunga con mirroring e, proprio come il nostro ultimo esempio, rimuovere tutto il resto. Questa stringa diventa:
xyz|zyx
Alcune stringhe sembrano rispecchiarsi, ma in realtà non possono. Se una stringa non può essere specchiata da nessuna parte, non si dovrebbe produrre nulla.
La sfida:
Data una stringa contenente solo printable-ascii, trova il posto migliore dove inserire il mio mirror. In altre parole,
Trova la sottostringa palindromica di lunghezza pari più grande, quindi esegui l'output con un carattere di pipe "|" nel mezzo di esso.
L'input avrà una lunghezza di 1-50 caratteri.
Si può presumere che l'input non conterrà mirror |
o newline. Oltre a ciò, tutti i personaggi stampabili-ascii sono un gioco equo. Se la sottostringa specchiata più lunga è legata tra due sottostringhe, è possibile scegliere quale produrre. Ad esempio, per la stringa "abba ollo", devi generare "ab | ba" o "ol | lo", ma non importa quale di questi hai prodotto. Le stringhe fanno distinzione tra maiuscole e minuscole, ad es. "ABba" non dovrebbe generare "AB | ba", ma dovrebbe generare una stringa vuota.
IO di esempio:
"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"
Come al solito, si tratta di code-golf, quindi si applicano scappatoie standard e vince la risposta più breve in byte!