Les palindromes sont amusants, mais certaines des autres cordes commencent à se sentir exclues. Nous pouvons transformer ces cordes en palindromes volumineux en les divisant en tableaux palindromiques de morceaux.
Par exemple, la chaîne "abcabca"
n'est pas un palindrome si nous la lisons caractère par caractère, mais nous avons trois façons différentes d'en faire un palindrome volumineux :
["abcabca"]
["a" "bcabc" "a"]
["a" "bc" "a" "bc" "a"]
Comme vous pouvez le voir, la palindromicité chunky est un concept très inclusif; chaque chaîne peut être transformée en un palindrome trapu d'au moins une manière.
Tâche
Ecrivez un programme ou une fonction qui reçoit une chaîne en entrée et renvoie sa grosseur palindromique , c'est-à-dire le nombre de ses partitions qui sont des tableaux palindromiques.
Cas de test
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"
Règles supplémentaires
Vous pouvez supposer que l'entrée sera composée de 42 caractères ASCII imprimables ou moins, éventuellement entourés par des délimiteurs de chaîne de votre langue et / ou suivis d'une nouvelle ligne.
Pour chaque chaîne d'entrée valide, votre code doit se terminer en moins d'une minute sur ma machine (Intel Core i7-3770, 16 Go de RAM, Fedora 21).
Avec un algorithme adéquat, il devrait être facile de respecter ce délai. Cependant, vous ne pourrez probablement pas parcourir toutes les partitions de la chaîne d'entrée.
Si vous choisissez d'imprimer la sortie sur STDOUT, elle peut être suivie d'une seule nouvelle ligne.
Les règles de code-golf standard s'appliquent.