anthonyberet wrote: > I want to work on a sudoku brute-forcer, just for fun. >... > Thanks for the advice (to everyone in the thread). > I think I will go with nested lists. > However, I am running into a conceptual problem. > My approach will be firstly to remove all the impossible digits for a > square by searching the row and column for other occurances. > > However, I wondering how to approach the search of the nine regions of > the grid. I am thinking of producing another nested list, again 9x9 to > store the contents of each region, and to update this after each pass > through -and update of- the main grid (row and column). > > I am not sure how to most efficiently identify which region any given > square on the grid is actually in - any thoughts, for those that have > done this? - I don't want a massive list of IF conditionals if I can > avoid it.
Some 'UselessPython' : import math def SudokuOrder( length ): block_length = int(math.sqrt(length)) for block in range(length): row_offset = block_length * ( block // block_length ) col_offset = block_length * ( block % block_length ) for i in range( block_length ): for j in range( block_length ): yield i+row_offset, j+col_offset grid = list(SudokuOrder(9)) BLOCK1 = grid[:9] BLOCK2 = grid[9:18] BLOCK9 = grid[72:81] print print 'BLOCK1 ->', BLOCK1 print print 'BLOCK2 ->', BLOCK2 print print 'BLOCK9 ->', BLOCK9 BLOCK1 -> [(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)] BLOCK2 -> [(0, 3), (0, 4), (0, 5), (1, 3), (1, 4), (1, 5), (2, 3), (2, 4), (2, 5)] BLOCK9 -> [(6, 6), (6, 7), (6, 8), (7, 6), (7, 7), (7, 8), (8, 6), (8, 7), (8, 8)] Gerard -- http://mail.python.org/mailman/listinfo/python-list