Nhiệm vụ của bạn là xác định bao nhiêu chuỗi palindrom hoàn hảo. Bảng màu điển hình của bạn (ví dụ 12321) là một bảng màu hoàn hảo; sự hoàn hảo của nó là 1.
Để xác định sự hoàn hảo của một chuỗi, bạn xem có bao nhiêu phần bạn có thể chia nó thành nơi mỗi phần là một bảng màu. Nếu có sự mơ hồ, chẳng hạn như với aaaa
, như bạn có thể chia nó thành [aa, aa]
hay [aaaa]
hay [a, aaa]
hay [aaa, a]
, tập ngắn nhất sẽ ghi đè lên, cho aaaa
một điểm số 1, đó là độ dài của tập ngắn nhất.
Do đó, bạn phải viết một chương trình hoặc hàm sẽ lấy một đầu vào không trống và đầu ra hoàn hảo đến mức nào (đó là độ dài của tập ngắn nhất mà bạn có thể chia nó thành nơi mỗi phần tử trong tập hợp là một bảng màu).
Ví dụ:
1111 -> 1 [1111]
abcb -> 2 [a, bcb]
abcbd -> 3 [a, bcb, d]
abcde -> 5 [a, b, c, d, e]
66a -> 2 [66, a]
abcba-> 1 [abcba]
x -> 1 [x]
ababacab -> 2 [aba, bacab]
bacababa -> 2 [bacab, aba]
26600 -> 3 [2, 66, 00] [my user id] [who has a more perfect user id?]
ababacabBACABABA -> 4 [aba, bacab, BACAB, ABA]
Lưu ý rằng trong các ví dụ, mọi thứ trong ngoặc vuông không nên là một phần của đầu ra.
ababacab
và ngược lại của nó bacababa
, dường như là trường hợp thử nghiệm tốt.
ababacabBACABABA
cũng là một trường hợp thử nghiệm tốt (một số câu trả lời thất bại về nó).