označme pc počet cifier čísla n a cs ciferný
súčet, potom
while-cyklus prejde (pc-1) krát a teda trvá (pc-1)*2
milisekúnd
repeat cyklus prejde (pc+cs-1) krát (a teda podmienka
v if trvá (pc+cs-1) ms), pričom
then-vetva cs-krát, teda cs*8 milisekúnd
else-vetva (pc-1) krát, teda (pc-1)*2 milisekúnd
keď to spočítame dostaneme vzorec: 5*pc+9*cs-5
pre 123 je to 64 ms
najmenšie číslo s 503 ms musí mať cifry usporiadané
vzostupne, lebo čísla, ktoré sa líšia len v permutácií
cifier, dávajú rovnaký čas
preto treba riešiť rovnicu 5pc+9cs=508
najmenšie pc je 8 a cs je 52 teda 10699999
skoro dobré výsledky, napr:
pre 899999 – 502 ms
pre 1699999 – 498 ms
pre 1799999 – 507 ms
dá sa to na 7 stlačení (treba začať konštruovať 5
z výsledku, pričom často sú vynútené ťahy).
Úloha má viacej riešení. Napr. [*3], [*3], [÷2],
[÷2], [*3], [÷2], [÷2]
najlepšie konštruovať strom všetkých riešení, pretože
niektoré sa môžu opakovať: