Palindromlar eğlencelidir, ancak diğer dizelerden bazıları dışlanmış hissetmeye başlar. Bu dizeleri , palindromik parça dizilerine bölerek tıknaz palindromlara dönüştürebiliriz.
Örneğin, "abcabca"
karakter karakter karakter okursak dize bir palindrom değildir, ancak tıknaz bir palindrom yapmak için üç farklı yolumuz vardır:
["abcabca"]
["a" "bcabc" "a"]
["a" "bc" "a" "bc" "a"]
Gördüğünüz gibi, tıknaz palindromiklik çok kapsayıcı bir kavramdır; her dize en az bir şekilde tıknaz bir palindrom haline getirilebilir.
Görev
Bir dizeyi girdi olarak alan ve palindromik yığınlığını , yani palindromik diziler olan bölümlerinin sayısını döndüren bir program veya işlev yazın .
Test senaryoları
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"
Ek kurallar
Girişin, isteğe bağlı olarak dilinizin dize sınırlayıcılarıyla çevrili ve / veya ardından yeni satır içeren 42 veya daha az yazdırılabilir ASCII karakterden oluşacağını varsayabilirsiniz.
Her geçerli giriş dizesi için, kodun makinemde bir dakikadan daha kısa sürede bitmesi gerekir (Intel Core i7-3770, 16 GiB RAM, Fedora 21).
Yeterli bir algoritma ile, bu zaman sınırına uymak kolay olmalıdır. Ancak, büyük olasılıkla giriş dizesinin tüm bölümlerini yineleyemezsiniz.
Çıkışı STDOUT'a yazdırmayı seçerseniz, bunu tek bir satırsonu izleyebilir.
Standart kod golf kuralları geçerlidir.