On Fri, 05 Jul 2013 10:38:35 +0100, Fábio Santos wrote: > [Skipping to bottleneck] > >> def find_good_cell() : > > In this function you are accessing global variables a lot of times. Since > accessing globals takes much more time than accessing locals, I advise you > to assign them to local names, and use them.
I've tried to use local "references" like G= Grid and using G instead of Grid below and similarly for Row_Digits, Col_Digits and Sqr_Digits but it had no noticeable effect. > >> Best= None >> minPoss= 10 >> for r in range(9) : >> for c in range(9) : >> if Grid[r,c] > 0 : continue >> Sq_No= (r//3)*3+c//3 >> Possibilities= 0 >> for d in range(1,10) : > > On this condition (below) you can try to check which condition is True more > often and put that condition first in order to take advantage of short > circuiting and minimize array access. Unfortunately, that's unpredictable. > >> if Row_Digits[r,d] or Col_Digits[c,d] or Sqr_Digits[Sq_No,d] : > continue Many thanks, Helmut -- http://mail.python.org/mailman/listinfo/python-list