パリンドロームは楽しいですが、他の弦のいくつかは取り残されているように感じ始めています。これらの文字列をパリンドロームのチャンク配列に分割することで、これらの文字列をチャンキーな回文に変えることができます。
たとえば、文字列は、"abcabca"
我々は文字で、それ文字を読めば回文ではありませんが、我々はそれ作るの3種類の方法持って分厚い回文を:
["abcabca"]
["a" "bcabc" "a"]
["a" "bc" "a" "bc" "a"]
ご覧のとおり、分厚い回文性は非常に包括的な概念です。すべての文字列は、少なくとも1つの方法で分厚い回文に変換できます。
仕事
入力として文字列を受け取り、その回文的なchunkiness、つまり回文配列であるパーティションの数を返すプログラムまたは関数を作成します。
テストケース
OUTPUT | INPUT
--------+---------------------------------------------
1 | ""
1 | "a"
1 | "ab"
2 | "aa"
2 | "aaa"
3 | "abcabca"
4 | "abababab"
28 | "abcabcaabababababcabca"
1 | "bbbbabababbbbababbbaaaaa"
20 | "ababbaaaabababbbaaabbbaa"
5 | "baaabaabababaababaaabbaab"
62 | "bbaaababbabbabbbabaabaabb"
2 | "a man a plan a canal panama"
25 | "ama nap lan aca nal pan ama"
93 | "SATOR AREPO TENET OPERA ROTAS"
976 | "abcabcaabcabcaabcabcaabcabcaabcabcaabcabca"
28657 | "ababababababababababaababababababababababa"
2097152 | "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
追加のルール
入力は42文字以下の印刷可能なASCII文字で構成され、オプションで言語の文字列区切り文字で囲まれたり、その後に改行が続くと仮定することができます。
有効な入力文字列ごとに、私のマシン(Intel Core i7-3770、16 GiB RAM、Fedora 21)で1分以内にコードが終了する必要があります。
適切なアルゴリズムを使用すると、この時間制限に簡単に準拠できるはずです。ただし、ほとんどの場合、入力文字列のすべてのパーティションを反復処理することはできません。
出力をSTDOUTに出力することを選択した場合、単一の改行が続く場合があります。
標準のコードゴルフ規則が適用されます。