Baba wrote: > def can_buy(n_nuggets): > for a in range (0,n_nuggets): > for b in range (0,n_nuggets): > for c in range (0,n_nuggets): > #print "trying for %d: %d %d %d" % (n_nuggets,a,b,c) > if 6*a+9*b+20*c==n_nuggets: > return [a,b,c] > return [] > > for n_nuggets in range(50): > result1 = can_buy(n_nuggets) > result2 = can_buy(n_nuggets+1) > result3 = can_buy(n_nuggets+2) > result4 = can_buy(n_nuggets+3) > result5 = can_buy(n_nuggets+4) > result6 = can_buy(n_nuggets+5) > if result1!=[] and result2!=[] and result3!=[] and result4!=[] and > result5!=[] and result6!=[]: > if (n_nuggets+5)-n_nuggets==5: > print n_nuggets-1 > break > > i suppose this can be tweaked to make it shorter? For instance i > wonder if i can do the same with less variable to be defined?
That can_buy function is a computational heavyweight -- very repetitive when called inside a loop. It could be cheaper to compute a list of quantities that can be purchased, then check to see what's in the list -- or the set, if you optimize a bit more. Mel. -- http://mail.python.org/mailman/listinfo/python-list