@@ -13,46 +13,33 @@ class Solution:
1313 # Solve the Sudoku by modifying the input board in-place.
1414 # Do not return any value.
1515 def solveSudoku (self , board ):
16- for i in xrange (len (board )):
17- for j in xrange (len (board [0 ])):
18- if (board [i ][j ] == '.' ):
19- for k in xrange (9 ):
20- board [i ][j ] = chr (ord ('1' ) + k )
21- if self .isValid (board , i , j ) and self .solveSudoku (board ):
22- return True
23- board [i ][j ] = '.'
16+ def isValid (board , x , y ):
17+ for i in xrange (9 ):
18+ if i != x and board [i ][y ] == board [x ][y ]:
2419 return False
25- return True
26-
27- def isValid (self , board , x , y ):
28- for i in xrange (9 ):
29- if i != x and board [i ][y ] == board [x ][y ]:
30- return False
31-
32- for j in xrange (9 ):
33- if j != y and board [x ][j ] == board [x ][y ]:
34- return False
35-
36- i = 3 * (x / 3 )
37- while i < 3 * (x / 3 + 1 ):
38- j = 3 * (y / 3 )
39- while j < 3 * (y / 3 + 1 ):
40- if (i != x or j != y ) and board [i ][j ] == board [x ][y ]:
20+ for j in xrange (9 ):
21+ if j != y and board [x ][j ] == board [x ][y ]:
4122 return False
42- j += 1
43- i += 1
44-
45- return True
23+ i = 3 * (x / 3 )
24+ while i < 3 * (x / 3 + 1 ):
25+ j = 3 * (y / 3 )
26+ while j < 3 * (y / 3 + 1 ):
27+ if (i != x or j != y ) and board [i ][j ] == board [x ][y ]:
28+ return False
29+ j += 1
30+ i += 1
31+ return True
32+
33+ def solver (board ):
34+ for i in xrange (len (board )):
35+ for j in xrange (len (board [0 ])):
36+ if (board [i ][j ] == '.' ):
37+ for k in xrange (9 ):
38+ board [i ][j ] = chr (ord ('1' ) + k )
39+ if isValid (board , i , j ) and solver (board ):
40+ return True
41+ board [i ][j ] = '.'
42+ return False
43+ return True
4644
47-
48- if __name__ == "__main__" :
49- board = [['5' , '3' , '.' , '.' , '7' , '.' , '.' , '.' , '.' ],
50- ['6' , '.' , '.' , '1' , '9' , '5' , '.' , '.' , '.' ],
51- ['.' , '9' , '8' , '.' , '.' , '.' , '.' , '6' , '.' ],
52- ['8' , '.' , '.' , '.' , '6' , '.' , '.' , '.' , '3' ],
53- ['4' , '.' , '.' , '8' , '.' , '3' , '.' , '.' , '1' ],
54- ['7' , '.' , '.' , '.' , '2' , '.' , '.' , '.' , '6' ],
55- ['.' , '6' , '.' , '.' , '.' , '.' , '2' , '8' , '.' ],
56- ['.' , '.' , '.' , '4' , '1' , '9' , '.' , '.' , '5' ],
57- ['.' , '.' , '.' , '.' , '8' , '.' , '.' , '7' , '9' ]]
58- print Solution ().solveSudoku (board )
45+ solver (board )
0 commit comments