De ce contează?
Pleci într-o excursie de zece zile și ții un jurnal. Dacă scrii fiecare respirație, fiecare pas, fiecare gând — la final ai un teanc de caiete prin care nu mai poți căuta nimic. Dacă nu scrii nimic, te întorci acasă și nu-ți amintești nici măcar unde ai dormit. Un jurnal bun notează exact atât cât îți va trebui mai târziu: unde ești acum și răspunsul la întrebarea pe care ți-o vei pune la final. Simularea unui algoritm este același jurnal — iar întrebarea cheie e: ce notez și ce las să treacă?
Ideea-cheie
Într-o simulare execuți pas cu pas ce se întâmplă în problemă: un robot care merge, un contor care crește, un sistem care își schimbă starea. La fiecare pas ai o tentație în două direcții opuse, și amândouă sunt greșeli:
- Reții prea puțin — la pasul următor nu mai știi de unde să continui, sau la final nu poți răspunde la întrebare. Simularea s-a rupt.
- Reții prea mult — ții minte tot ce s-a întâmplat vreodată (toată istoria). Memoria și timpul se umflă degeaba: pentru un milion de pași ai un milion de lucruri stocate, când poate aveai nevoie de două.
Reflexul corect stă la mijloc și este surprinzător de simplu: păstrezi exact starea de care ai nevoie ca să faci pasul următor, plus ce te întreabă enunțul. Nimic mai mult.
Întrebarea problemei nu vine la final — ea îți spune de la început ce minim ești obligat să cari mai departe. „Care e maximul atins vreodată?" îți cere să ții un maxim. „De câte ori s-a întâmplat X?" îți cere un contor. Citește întrebarea PRIMA, înainte să scrii o linie de simulare: ea îți desenează lista de lucruri pe care nu ai voie să le uiți.