Wprowadzenie
Zamknięcie palindromiczne ciągu wejściowego jest najkrótszym palindromem, który można zbudować z ciągu wejściowego, w którym końcowy palindrom rozpoczyna się od ciągu wejściowego.
W przypadku tego wyzwania rozważymy dwukierunkowe zamknięcie palindromiczne, takie jak
- Lewe palindromiczne zamknięcie ciągu wejściowego jest najkrótszym możliwym palindromem, który zaczyna się od ciągu wejściowego.
- Prawe palindromiczne zamknięcie ciągu wejściowego jest najkrótszym możliwym palindromem, który kończy się na ciągu wejściowym.
- Dwukierunkowe zamknięcie palindromiczne ciągu wejściowego jest krótsze z lewego lub prawego zamknięcia palindromowego ciągu wejściowego.
Zadanie
Twoje zadanie jest proste. Biorąc pod uwagę ciąg znaków (składający się tylko z drukowalnego ASCII, nowych wierszy i białych znaków), należy wygenerować dwukierunkowe palindromiczne zamknięcie tego ciągu. W przypadku remisu jedno lub drugie lewe lub prawe zamknięcie palindromiczne jest prawidłowym wyjściem.
Możesz napisać program lub funkcję, pobierając dane wejściowe przez STDIN (lub najbliższą alternatywę), argument wiersza poleceń lub argument funkcji i albo drukując wynik do STDOUT (lub najbliższej alternatywy), albo zwracając go jako ciąg znaków.
Możesz założyć, że wejście nigdy nie będzie pustym ciągiem.
Kilka przykładów:
<Input> -> <Output>
"abcdef" -> "abcdefedcba" (or "fedcbabcdef")
"abcba" -> "abcba"
"abcb" -> "abcba"
"cbca" -> "acbca"
Pierwotny pomysł na pomysł trafia do VisualMelon, ostatni pomysł z pomocą Martina i Zgarba
Terminy zamknięcie palindromowe, zamknięcie lewopalindromowe i zamknięcie prawopalindromowe zostały po raz pierwszy użyte i zdefiniowane w tym artykule .