Palindrom memang menyenangkan, tetapi beberapa senar lainnya mulai merasa ditinggalkan. Kita dapat mengubah string-string itu menjadi palindrom tebal dengan memecahnya menjadi susunan palindromik.
Misalnya, string "abcabca"
bukan palindrome jika kita membacanya karakter demi karakter, tetapi kita memiliki tiga cara berbeda untuk menjadikannya palindrom tebal :
["abcabca"]
["a" "bcabc" "a"]
["a" "bc" "a" "bc" "a"]
Seperti yang Anda lihat, palindromicness tebal adalah konsep yang sangat inklusif; setiap string dapat diubah menjadi palindrom tebal setidaknya dalam satu cara.
Tugas
Tulis program atau fungsi yang menerima string sebagai input dan mengembalikan chunkiness palindromiknya , yaitu jumlah partisi yang merupakan array palindromik.
Uji kasus
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"
Aturan tambahan
Anda dapat berasumsi bahwa input terdiri dari 42 atau kurang karakter ASCII yang dapat dicetak, secara opsional dikelilingi oleh pembatas string bahasa Anda dan / atau diikuti oleh baris baru.
Untuk setiap string input yang valid, kode Anda harus selesai dalam waktu kurang dari satu menit di mesin saya (Intel Core i7-3770, 16 GiB RAM, Fedora 21).
Dengan algoritma yang memadai, seharusnya mudah untuk mematuhi batas waktu ini. Namun, Anda kemungkinan besar tidak akan dapat mengulangi semua partisi dari string input.
Jika Anda memilih untuk mencetak output ke STDOUT, mungkin diikuti oleh satu baris baru.
Aturan standar kode-golf berlaku.