Palindromes là niềm vui, nhưng một số chuỗi khác đang bắt đầu cảm thấy bị bỏ rơi. Chúng ta có thể biến những chuỗi đó thành các palindromes chunky bằng cách chia chúng thành các mảng palindromic của khối.
Ví dụ: chuỗi "abcabca"
không phải là một palindrom nếu chúng ta đọc nó theo từng ký tự, nhưng chúng ta có ba cách khác nhau để biến nó thành một palindrom chunky :
["abcabca"]
["a" "bcabc" "a"]
["a" "bc" "a" "bc" "a"]
Như bạn có thể thấy, palindromic chunky là một khái niệm rất bao quát; mỗi chuỗi có thể được biến thành một palindrom chunky theo ít nhất một cách.
Bài tập
Viết một chương trình hoặc một hàm nhận một chuỗi làm đầu vào và trả về độ chụm của palindromic của nó , tức là số lượng phân vùng của nó là các mảng palindromic.
Các trường hợp thử nghiệm
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"
Quy tắc bổ sung
Bạn có thể giả định rằng đầu vào sẽ bao gồm 42 ký tự ASCII có thể in hoặc ít hơn, được bao quanh tùy ý bởi các dấu phân cách chuỗi ngôn ngữ của bạn và / hoặc theo sau là một dòng mới.
Đối với mỗi chuỗi đầu vào hợp lệ, mã của bạn phải hoàn thành sau chưa đầy một phút trên máy của tôi (Intel Core i7-3770, RAM 16 GiB, Fedora 21).
Với một thuật toán thích hợp, nó sẽ dễ dàng tuân thủ giới hạn thời gian này. Tuy nhiên, rất có thể bạn sẽ không thể lặp lại trên tất cả các phân vùng của chuỗi đầu vào.
Nếu bạn chọn in đầu ra thành STDOUT, nó có thể được theo sau bởi một dòng mới.
Luật golf tiêu chuẩn được áp dụng.