Dies ist ein Spiegel: |
. Ich habe gerade herausgefunden, dass man einen Spiegel in die Mitte eines Strings stecken kann, wenn der String auf sich selbst gespiegelt werden kann! Zum Beispiel die Zeichenfolge abccba
. Wenn Sie es in zwei Hälften schneiden, sind die beiden Hälften Spiegelbilder voneinander:
abc <--> cba
Wir können also einen Spiegel in die Mitte der Saite stecken, und unsere neue Saite ist abc|cba
. Manchmal kann nur ein Teil der Zeichenfolge auf sich selbst gespiegelt werden. Zum Beispiel die Zeichenfolge "mirror". Die beiden Rs werden gespiegelt, der Rest der Zeichenfolge jedoch nicht. Das ist in Ordnung, wir entfernen nur die Teile der Zeichenfolge, die sich nicht spiegeln, und wir erhalten die folgende Zeichenfolge:
r|r
Einige Zeichenfolgen können an mehreren Stellen gespiegelt werden. Zum Beispiel "Hallo Welt, xyzzyx". Ich mag es, wenn viel Text in meinem Spiegel reflektiert wird. Deshalb müssen Sie den besten Ort finden, an dem Sie meinen Spiegel platzieren können. In diesem Fall sollten Sie den längeren gespiegelten String ausgeben und wie in unserem letzten Beispiel alles andere entfernen. Diese Zeichenfolge wird:
xyz|zyx
Einige Zeichenfolgen sehen so aus, als könnten sie gespiegelt werden, können dies jedoch nicht. Wenn eine Zeichenfolge nirgendwo gespiegelt werden kann, sollten Sie nichts ausgeben.
Die Herausforderung:
Suchen Sie bei einer Zeichenfolge, die nur printable-ascii enthält, den besten Platz für meinen Spiegel. Mit anderen Worten,
Suchen Sie den größten geraden palindromischen Teilstring und geben Sie ihn mit einem Pipe-Zeichen '|' aus. mittendrin.
Die Eingabe wird 1-50 Zeichen lang sein.
Sie können davon ausgehen, dass die Eingabe keine |
Spiegelungen oder Zeilenumbrüche enthält. Darüber hinaus sind alle druckbaren ASCII-Charaktere Freiwild. Wenn die längste gespiegelte Teilzeichenfolge zwischen zwei Teilzeichenfolgen gebunden ist, können Sie auswählen, welche ausgegeben werden soll. Für die Zeichenfolge "abba ollo" müssen Sie beispielsweise "ab | ba" oder "ol | lo" ausgeben, aber es spielt keine Rolle, welche Sie ausgeben. Bei Strings wird zwischen Groß- und Kleinschreibung unterschieden, z. B. sollte "ABba" nicht "AB | ba" ausgeben, sondern den leeren String.
Beispiel 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"
Wie üblich ist dies Codegolf, daher gelten Standardlücken, und die kürzeste Antwort in Bytes gewinnt!