이것은 거울 |
입니다. 문자열 자체를 미러링 할 수 있다면 문자열 중간에 거울을 붙일 수 있다는 것을 알았습니다! 예를 들어, string abccba
입니다. 반으로 자르면 두 개의 반쪽이 서로의 거울 이미지입니다.
abc <--> cba
따라서 문자열 중간에 거울을 붙일 수 있으며 새 문자열은 abc|cba
입니다. 때로는 문자열의 일부만 자체적으로 미러링 될 수 있습니다. 예를 들어 문자열 "미러"입니다. 두 r은 미러링되지만 나머지 문자열은 미러링되지 않습니다. 괜찮습니다. 우리는 서로 미러링되지 않는 문자열 부분을 제거하고 다음 문자열을 얻습니다.
r|r
일부 문자열은 여러 곳에 미러링 될 수 있습니다. 예를 들어 "Hello World, xyzzyx"입니다. 거울에 많은 텍스트가 반영되는 것을 좋아하므로 거울을 놓을 가장 좋은 장소를 찾아야합니다. 이 경우 더 긴 미러 된 문자열을 출력하고 마지막 예와 같이 다른 모든 것을 제거해야합니다. 이 문자열은 다음과 같습니다.
xyz|zyx
일부 문자열 은 미러링 할 수있는 것처럼 보이지만 실제로는 그렇지 않습니다. 문자열을 어디에서나 미러링 할 수 없으면 아무것도 출력하지 않아야합니다.
도전 과제 :
인쇄 가능한 ASCII 만 포함 된 문자열이 주어지면 내 거울을 놓을 가장 좋은 곳을 찾으십시오. 다른 말로,
가장 큰 짝수 길이의 회문 하위 문자열을 찾은 다음 파이프 문자 '|'로 출력하십시오. 그 중간에.
입력 길이는 1 ~ 50 자입니다.
입력에 미러 |
또는 줄 바꾸기가 포함되지 않는다고 가정 할 수 있습니다 . 그 외에도 모든 인쇄 가능한 ASCII 캐릭터는 공정한 게임입니다. 가장 긴 미러 된 하위 문자열이 두 개의 하위 문자열로 묶인 경우 출력 할 문자열을 선택할 수 있습니다. 예를 들어, 문자열 "abba ollo"의 경우 "ab | ba"또는 "ol | lo"를 출력해야하지만 어떤 것이 출력되는지는 중요하지 않습니다. 문자열은해야 대소 문자를 구분, 예를 들어, "아바"입니다 하지 출력 "AB | 바"가 출력 빈 문자열해야한다.
샘플 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"
평소와 같이 이것은 코드 골프이므로 표준 허점이 적용되며 바이트 단위의 최단 답변이 이깁니다!