Это зеркало |
. Я только что узнал, что вы можете прикрепить зеркало в середине строки, если строка может быть отражена на себя! Например, строка abccba
. Если разрезать его пополам, две половинки являются зеркальным отображением друг друга:
abc <--> cba
Таким образом, мы можем вставить зеркало в середине строки, и наша новая строка будет abc|cba
. Иногда, только часть строки может быть отражена на себе. Например, строка «зеркало». Два r отражены, но остальная часть строки - нет. Это нормально, мы просто удалим части строки, которые не отражают друг друга, и получим следующую строку:
r|r
Некоторые строки могут быть отражены в нескольких местах. Например, «Hello World, xyzzyx». Мне нравится, когда в моем зеркале отражается много текста, поэтому вам нужно найти лучшее место, чтобы поставить мое зеркало. В этом случае вы должны вывести более длинную зеркальную строку и, как и в нашем последнем примере, удалить все остальное. Эта строка становится:
xyz|zyx
Некоторые строки выглядят так, как будто они могут быть отражены, но на самом деле не могут. Если строка нигде не отражается, вы ничего не должны выводить.
Соревнование:
Учитывая строку, содержащую только printable-ascii, найдите лучшее место для размещения моего зеркала. Другими словами,
Найдите наибольшую палиндромную подстроку четной длины, затем выведите ее с символом трубы '|' в середине этого.
Длина ввода будет 1-50 символов.
Вы можете предположить, что ввод не будет содержать зеркал |
или новых строк. Кроме того, все печатные символы ascii являются честной игрой. Если самая длинная зеркальная подстрока связана между двумя подстроками, вы можете выбрать, какую из них вывести. Например, для строки «abba ollo» вы должны вывести «ab | ba» или «ol | lo», но не имеет значения, какую вы выводите. Строки чувствительны к регистру, например, «ABba» не должен выводить «AB | ba», он должен выводить пустую строку.
Образец ввода-вывода:
"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"
Как обычно, это код-гольф, поэтому применяются стандартные лазейки, и выигрывает самый короткий ответ в байтах!