/* Calculate Moore's law and the benefit of waiting to start a long-running calculation because you assume computers are going to get faster. If you have a "doubling time" d (the value that has been found empirically is that the speed of computing devices has roughly doubled every 18 months), you can put off starting the problem until the projected time to solve it is less than: d/ln[2] For a doubling time d of 18 months, this works out to about 26 months. If a problem's going to take longer to solve than that, and you've got your algorithm optimized, you might as well just sit back and have a beer. */ // Doubling time d = 18 months t[r, d] := (d/ln[2]) ln[r ln[2]/d] r = eval[input["Enter time to solve problem (e.g. \"5 years\"): "]] t = t[r,d] factor = 2^(t/d) tt = r/factor println["Time to complete: " + format[r,"months",5]] println["You should begin solving the problem in " + format[t, "months", 5] + "."] if t<0 days println["Since this is negative, you should begin now."] else { println["Computers will be " + format[factor, 1, 6] + " times faster then."] println["The problem will then take " + format[tt, "months", 5] + " to solve."] println["The problem will be completed " + format[t+tt, "months", 5] + " from now."] println["This is a savings of " + format[r-(t+tt), "months", 5] + "."] }