fork download
  1. number=[1,2,3,4,5,6,7,8,9]
  2. def check(i,j,lol):
  3. number=[1,2,3,4,5,6,7,8,9]
  4. opt=set(number)
  5. for k in range(9):
  6. opt.discard(lol[i][k])
  7. opt.discard(lol[k][j])
  8. a=i//3
  9. b=j//3
  10. for q in range(3):
  11. for w in range(3):
  12. opt.discard(lol[a*3+q][b*3+w])
  13. res=list(opt)
  14. #table[(i,j)]=opt
  15. return sorted(res)
  16. def done(lol):
  17. for i in range(9):
  18. for j in range(9):
  19. if lol[i][j] not in number:
  20. return (i,j)
  21. return True
  22.  
  23.  
  24. def sudoku(lol):
  25.  
  26. if done(lol) == True:
  27. return True
  28. else:
  29. i,j=done(lol)
  30.  
  31. for num in number:
  32. if num in check(i,j,lol) :
  33. lol[i][j]=num
  34.  
  35. if sudoku(lol)==True:
  36. return True
  37.  
  38. lol[i][j]=0
  39. return False
  40.  
  41.  
  42.  
  43.  
  44.  
  45. def complete_sudoku(lol):
  46.  
  47. sudoku(lol)
  48. return ( lol)
  49. #print(sudoku(lol))
  50.  
  51.  
  52. input1 = [
  53. [5, 3, 0, 0, 7, 0, 0, 0, 0],
  54. [6, 0, 0, 1, 9, 5, 0, 0, 0],
  55. [0, 9, 8, 0, 0, 0, 0, 6, 0],
  56. [8, 0, 0, 0, 6, 0, 0, 0, 3],
  57. [4, 0, 0, 8, 0, 3, 0, 0, 1],
  58. [7, 0, 0, 0, 2, 0, 0, 0, 6],
  59. [0, 6, 0, 0, 0, 0, 2, 8, 0],
  60. [0, 0, 0, 4, 1, 9, 0, 0, 5],
  61. [0, 0, 0, 0, 8, 0, 0, 7, 9]]
  62.  
  63.  
  64. c=complete_sudoku(input1)
  65. print(c)
  66.  
Success #stdin #stdout 0.22s 9188KB
stdin
Standard input is empty
stdout
[[5, 3, 4, 6, 7, 8, 9, 1, 2], [6, 7, 2, 1, 9, 5, 3, 4, 8], [1, 9, 8, 3, 4, 2, 5, 6, 7], [8, 5, 9, 7, 6, 1, 4, 2, 3], [4, 2, 6, 8, 5, 3, 7, 9, 1], [7, 1, 3, 9, 2, 4, 8, 5, 6], [9, 6, 1, 5, 3, 7, 2, 8, 4], [2, 8, 7, 4, 1, 9, 6, 3, 5], [3, 4, 5, 2, 8, 6, 1, 7, 9]]