Vidimo, da je drugi algoritem veliko lažje prilagoditi večjemu problemu. Še več: drugi algoritem zlahka prilagodimo tako, da bo deloval za splošen problem iskanja najmanjšega števila v neprazni tabeli:
Prvega algoritma ne bi mogli tako posplošiti, saj bi potrebovali poljubno globoko vgnezdene pogojne stavke. Če bi ga želeli prilagoditi za delovanje v tabeli števil, bi nujno morali uvesti dodatne spremenljivke, s čimer pa bi seveda dobili precej drugačen algoritem. Naš drugi algoritem za problem MIN3 je torej nedvomno prilagodljivejši od prvega.
Algoritem za podani problem je pravilen, ko za vsak konkreten vhod, ki ustreza podanim omejitvam, ustvari izhod, ki je skladen z definicijo problema. Če je množica veljavnih vhodov končna, potem lahko pravilnost algoritma preverimo tako, da za vsak veljaven vhod izvršimo algoritem in primerjamo njegov izhod s pričakovanim.
Recimo, da vhod v problem množenja celih števil a in b omejimo z dodatnima zahtevama 1 ≤ a ≤ 3 in 1 ≤ b ≤ 3. Zapiši vse veljavne vhode za ta problem. Vsak vhod je seveda par celih števil a in b.
Poišči (ali ponovno napiši) svojo pythonovo funkcijo, ki problem množenja rešuje s seštevanjem. Napiši in preizkusi program, ki rezultate tvoje funkcije preveri za vse pare celih števil a in b z lastnostma 1 ≤ a ≤ 10 in 1 ≤ b ≤ 10. Rezultate svoje funkcije primerjaj z rezultati pythonovega operatorja *
.
Iščemo najmanjše med N celimi števili, od katerih je vsako med 1 in vključno K. Števili N in K sta fiksni in znani vnaprej (npr. N = 5 in K = 10). Koliko veljavnih vhodov (N-teric števil) imamo pri tem problemu?