Skip to content

Commit 0ff86d2

Browse files
committed
Update sudoku-solver.py
1 parent a53372a commit 0ff86d2

File tree

1 file changed

+27
-40
lines changed

1 file changed

+27
-40
lines changed

Python/sudoku-solver.py

Lines changed: 27 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)