fork(1) download
  1. N = 9
  2. def printing(arr):
  3. for i in range(N):
  4. for j in range(N):
  5. print(arr[i][j], end = " ")
  6. print()
  7. def isSafe(grid, row, col, num):
  8. for x in range(9):
  9. if grid[row][x] == num:
  10. return False
  11. for x in range(9):
  12. if grid[x][col] == num:
  13. return False
  14. startRow = row - row % 3
  15. startCol = col - col % 3
  16. for i in range(3):
  17. for j in range(3):
  18. if grid[i + startRow][j + startCol] == num:
  19. return False
  20. return True
  21. def solveSudoku(grid, row, col):
  22. if (row == N - 1 and col == N):
  23. return True
  24. if col == N:
  25. row += 1
  26. col = 0
  27. if grid[row][col] > 0:
  28. return solveSudoku(grid, row, col + 1)
  29. for num in range(1, N + 1, 1):
  30. if isSafe(grid, row, col, num):
  31. grid[row][col] = num
  32. if solveSudoku(grid, row, col + 1):
  33. return True
  34. grid[row][col] = 0
  35. return False
  36. grid = [[3, 0, 6, 5, 0, 8, 4, 0, 0],
  37. [5, 2, 0, 0, 0, 0, 0, 0, 0],
  38. [0, 8, 7, 0, 0, 0, 0, 3, 1],
  39. [0, 0, 3, 0, 1, 0, 0, 8, 0],
  40. [9, 0, 0, 8, 6, 3, 0, 0, 5],
  41. [0, 5, 0, 0, 9, 0, 6, 0, 0],
  42. [1, 3, 0, 0, 0, 0, 2, 5, 0],
  43. [0, 0, 0, 0, 0, 0, 0, 7, 4],
  44. [0, 0, 5, 2, 0, 6, 3, 0, 0]]
  45.  
  46. if (solveSudoku(grid, 0, 0)):
  47. printing(grid)
  48. else:
  49. print("no solution exists ")
Success #stdin #stdout 0.05s 9684KB
stdin
Standard input is empty
stdout
3 1 6 5 7 8 4 9 2 
5 2 9 1 3 4 7 6 8 
4 8 7 6 2 9 5 3 1 
2 6 3 4 1 5 9 8 7 
9 7 4 8 6 3 1 2 5 
8 5 1 7 9 2 6 4 3 
1 3 8 9 4 7 2 5 6 
6 9 2 3 5 1 8 7 4 
7 4 5 2 8 6 3 1 9