> > <snip> >
> Your python code as is clocked about 72 seconds on my notebook. The > following came in at about 4.6 seconds (just has a small trick of reusing > earlier results) > > import time > start =time.time() > longest = None > longest_elements = 0 > solved = {} > for val in xrange(1,1000000) : > counter = 1 > number = val > while number != 1 : > number = number / 2 if number % 2 == 0 else 3 * number + 1 > if number in solved : > counter = counter + solved[number] > break > else : > counter = counter + 1 > if counter > longest_elements : > longest_elements = counter > longest = val > solved[val] = counter > end = time.time() > print "Time:", end - start > print longest, ':', longest_elements > > Dhananjay > > If you are still looking forward to squeeze around 200ms more, try bit ops - Original code by Dhananjay averages to 4.25823163986s on my machine While if you change - number = number / 2 if number % 2 == 0 else 3 * number + 1 into number = 3*number+1 if number&1 else number >> 1 it averages 4.058642069496667s on my machine. Abhishek _______________________________________________ BangPypers mailing list BangPypers@python.org http://mail.python.org/mailman/listinfo/bangpypers