To jest lustro: |
. Właśnie dowiedziałem się, że możesz przykleić lustro na środku sznurka, jeśli sznur może być dublowany! Na przykład ciąg abccba
. Jeśli przecinasz go na pół, dwie połówki to wzajemne odbicie lustrzane:
abc <--> cba
Możemy więc przykleić lustro na środku sznurka, a naszym nowym sznurkiem jest abc|cba
. Czasami tylko część ciągu może być dublowana na sobie. Na przykład ciąg „mirror”. Dwa r są dublowane, ale reszta ciągu nie jest. Zgadza się, po prostu usuniemy części ciągu, które się nie odbijają, i otrzymamy następujący ciąg:
r|r
Niektóre ciągi mogą być dublowane w wielu miejscach. Na przykład „Hello World, xyzzyx”. Lubię mieć dużo tekstu odbijanego w moim lustrze, więc musisz znaleźć najlepsze miejsce na umieszczenie mojego lustra. W takim przypadku powinieneś wypisać dłuższy dublowany ciąg i, podobnie jak w naszym ostatnim przykładzie, usunąć wszystko inne. Ten ciąg staje się:
xyz|zyx
Niektóre ciągi wyglądają tak, jakby mogły być dublowane, ale w rzeczywistości nie mogą. Jeśli ciąg nie może być nigdzie dublowany, nie powinieneś nic wyświetlać.
Wyzwanie:
Biorąc pod uwagę ciąg zawierający tylko ascii do wydrukowania, znajdź najlepsze miejsce na umieszczenie mojego lustra. Innymi słowy,
Znajdź największy podciąg palindromowy o równej długości, a następnie wyślij go za pomocą znaku potoku „|” w środku tego.
Dane wejściowe będą miały długość 1-50 znaków.
Możesz założyć, że dane wejściowe nie będą zawierać kopii lustrzanych |
ani nowych linii. Poza tym wszystkie postacie ascii do wydrukowania są uczciwą grą. Jeśli najdłuższy dublowany podciąg jest powiązany między dwoma podciągami, możesz wybrać, który ma zostać wydrukowany. Na przykład dla ciągu „abba ollo” musisz wypisać „ab | ba” lub „ol | lo”, ale nie ma znaczenia, który z nich wypisujesz. W łańcuchach rozróżniana jest wielkość liter, np. „ABba” nie powinna wypisywać „AB | ba”, powinna wypisywać pusty ciąg.
Próbka 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"
Jak zwykle jest to gra w golfa, więc obowiązują standardowe luki i wygrywa najkrótsza odpowiedź w bajtach!