前書き
入力文字列のパリンドローム閉包は、入力文字列から構築できる最短のパリンドロームであり、最終的なパリンドロームは入力文字列で始まります。
この課題では、次のような双方向パリンドローム閉包を検討します。
- 入力文字列の左パリンドローム閉包は、入力文字列で始まる最短の回文です。
- 入力文字列の右回文閉鎖は、入力文字列で終わる最短の回文です。
- 入力文字列の双方向パリンドローム閉包は、入力文字列の左または右のパリンドローム閉包のいずれか短い方です。
仕事
あなたの仕事は簡単です。文字列(印刷可能なASCII、改行、空白のみで構成される)を指定すると、その文字列の双方向の回文クロージャが出力されます。同数の場合、左右の回文クロージャのいずれかが有効な出力です。
プログラムまたは関数を作成し、STDIN(または最も近い代替)、コマンドライン引数または関数引数を介して入力を取得し、結果をSTDOUT(または最も近い代替)に出力するか、文字列として返すことができます。
入力が空の文字列になることはないと想定できます。
いくつかの例:
<Input> -> <Output>
"abcdef" -> "abcdefedcba" (or "fedcbabcdef")
"abcba" -> "abcba"
"abcb" -> "abcba"
"cbca" -> "acbca"
最初のアイデアの功績はVisualMelonに、最後のアイデアはMartinとZgarbの助けを借りて