Algoritmul, pas cu pas
Cele trei cerințe sunt complet independente — valoarea lui îți spune ce să numeri. Ținem fiecare număr ca șir de cifre (un text), ca să putem compara ușor cifra de pe poziția din stânga cu cea din dreapta.
Cerința 1 — e deja palindrom?
Compari prima cifră cu ultima, a doua cu penultima, și așa mai departe spre mijloc. Dacă toate perechile coincid, numărul e palindrom.
- : , , mijlocul — palindrom.
- : prima pereche , dar a doua — nu e palindrom.
Cerințele 2 și 3 — câte inserări îmi trebuie?
Ideea-cheie: pornesc cu doi indici, unul în stânga () și unul în dreapta (), și îi apropii de mijloc.
- Dacă cifrele de la cei doi indici coincid, perechea e bună: mut la dreapta și la stânga.
- Dacă diferă, sunt obligat să inserez o cifră ca să creez perechea lipsă. Am exact două variante:
- pun în stânga o copie a cifrei de la (atunci se mută spre stânga);
- pun în dreapta o copie a cifrei de la (atunci se mută spre dreapta). Fiecare inserare costă din buget.
- Singura piedică: nu pot pune cifra chiar la începutul numărului. Deci varianta „inserez în stânga" este interzisă când indicele este încă la poziția și cifra de copiat ar fi .