# mooreslaw.frink

``` /* 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    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) ln[r ln/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] + "."] } ```