Il tuo compito è determinare quanta parte di un palindromo perfetto è una stringa. Il tuo tipico palindromo (ad es. 12321) è un palindromo perfetto; la sua perfezione è 1.
Per determinare la perfezione di una stringa, vedi quante sezioni puoi dividerla in cui ogni sezione è un palindromo. Se ci sono ambiguità, come con aaaa
, come puoi dividerlo in [aa, aa]
o [aaaa]
o [a, aaa]
o [aaa, a]
, il set più corto avrà la precedenza, dando aaaa
un punteggio di 1, che è la lunghezza del set più breve.
Pertanto, è necessario scrivere un programma o una funzione che prenda un input non vuoto e produca quanto è perfetto (qual è la lunghezza dell'insieme più corto in cui è possibile dividerlo in cui ogni elemento dell'insieme è un palindromo).
Esempi:
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]
Si noti che negli esempi qualsiasi cosa tra parentesi quadre non dovrebbe far parte dell'output.
ababacab
e il suo rovescio, bacababa
sembrano essere buoni casi di test.
ababacabBACABABA
è anche un buon caso di test (alcune risposte falliscono).