Paul McGuire: > This little framework takes about 4.5 seconds, but with > psyco, cuts down to about 1.3 seconds. > > st = time.time() > result = [] > for p in permutations(range(1,10)): > aresult = func(p) > if aresult is not None and aresult not in result: > result.append(aresult) > > et=time.time() > print 'time elapsed: %.4f s' % (et-st) > for [[a0, a1, a2], [b0, b1, b2], [c0, c1, c2]] in result: > print ' %0d %0d %0d %0d' % (a0, b0, c0, d0) > print '--- + --- + --- = ---' > print ' %0d%0d %0d%0d %0d%0d %0d' %(a1, a2, b1, b2, c1,c2, d1) > print
If you want to more speed, put long loops always inside functions, not inside the main body: def main(): st = clock() result = [] for p in permutations(range(1, 10)): aresult = func(p) if aresult is not None and aresult not in result: result.append(aresult) et = clock() print 'time elapsed: %.4f s' % (et-st) for [[a0, a1, a2], [b0, b1, b2], [c0, c1, c2]] in result: print ' %0d %0d %0d %0d' % (a0, b0, c0, d0) print '--- + --- + --- = ---' print ' %0d%0d %0d%0d %0d%0d %0d' %(a1, a2, b1, b2, c1,c2, d1) print main() If you have a bit of time you can test the speed of this code on your computer. Bye, bearophile -- http://mail.python.org/mailman/listinfo/python-list