Advertisement
Guest User

Sudoku

a guest
Oct 14th, 2019
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.38 KB | None | 0 0
  1. def solveSudoku(self, board):
  2. # Check if digit can be placed at position (i,j)
  3. def is_valid(digit, i, j):
  4. # check row
  5. for y in range(len(board)):
  6. if board[i][y] == str(digit):
  7. return False
  8. # check column
  9. for x in range(len(board)):
  10. if board[x][j] == str(digit):
  11. return False
  12. # check square
  13. square_x, square_y = i/3, j/3
  14. for x in range(square_x*3, square_x*3+3):
  15. for y in range(square_y*3, square_y*3+3):
  16. if board[x][y] == str(digit):
  17. return False
  18. return True
  19.  
  20. # Find a valid digit for position (i, j), if possible, and recurse / backtrack
  21. def search(i, j):
  22. if i == len(board):
  23. return True
  24. elif j == len(board):
  25. return search(i+1, 0)
  26. if board[i][j] == ".":
  27. for digit in range(1, 10):
  28. if is_valid(digit, i, j):
  29. board[i][j] = str(digit)
  30. if search(i, j+1):
  31. return True
  32. board[i][j] = "."
  33. return False
  34. else:
  35. return search(i, j+1)
  36.  
  37. search(0,0)
  38. return board
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement