Advertisement
bwukki

Sudoku Solver (done with blake)

Sep 19th, 2018
170
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.70 KB | None | 0 0
  1. #sudoku solver, note this lacks the proper printout and check if solved conditions of later versions, bug me and I'll upload that
  2.  
  3. grid = [[{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9}],[{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9}],[{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9}],[{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9}],[{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9}],[{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9}],[{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9}],[{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9}],[{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9},{1,2,3,4,5,6,7,8,9}]]
  4.  
  5. for i in range(0,9):
  6.     for j in range(0,9):
  7.         ans = int(input("Number inside location [{0}],[{1}]?".format(i+1,j+1)))
  8.         if ans != 0:
  9.             grid[i][j] = {ans}
  10.  
  11. def reduceRow(grid,row):
  12.     rowSet = set()
  13.     for i in range(0,9):
  14.         if len(grid[row][i]) == 1:
  15.             rowSet = rowSet|grid[row][i]
  16.     for i in range(0,9):
  17.         if len(grid[row][i]) != 1:
  18.             grid[row][i] = grid[row][i]-rowSet
  19.     return grid
  20.  
  21. def reduceGridRows(grid):
  22.     for i in range(0,9):
  23.         reduceRow(grid,i)
  24.  
  25. def reduceColumn(grid,column):
  26.     rowSet = set()
  27.     for i in range(0,9):
  28.         if len(grid[i][column]) == 1:
  29.             rowSet = rowSet|grid[i][column]
  30.     for i in range(0,9):
  31.         if len(grid[i][column]) != 1:
  32.             grid[i][column] = grid[i][column]-rowSet
  33.     return grid
  34.  
  35. def reduceGridColumn(grid):
  36.     for i in range(0,9):
  37.         reduceColumn(grid,i)
  38.  
  39. def reduceBox(grid,x,y):
  40.     rowSet = set()
  41.     for i in range(0,3):
  42.         if len(grid[x][y+i]) == 1:
  43.             rowSet = rowSet|grid[x][y+i]
  44.     for i in range(0,3):
  45.         if len(grid[x+1][y+i]) == 1:
  46.             rowSet = rowSet|grid[x+1][y+i]
  47.     for i in range(0,3):
  48.         if len(grid[x+2][y+i]) == 1:
  49.             rowSet = rowSet|grid[x+2][y+i]
  50.  
  51.     for i in range(0,3):
  52.         if len(grid[x][y+i]) != 1:
  53.             grid[x][y+i] = grid[x][y+i] - rowSet
  54.     for i in range(0,3):
  55.         if len(grid[x+1][y+i]) != 1:
  56.             grid[x + 1][y + i] = grid[x+1][y+i] - rowSet
  57.     for i in range(0,3):
  58.         if len(grid[x+2][y+i]) != 1:
  59.             grid[x + 2][y + i] = grid[x+2][y+i] - rowSet
  60.  
  61. def reduceGridBox(grid):
  62.     for i in [0,3,6]:
  63.         for j in [0,3,6]:
  64.             reduceBox(grid,i,j)
  65.  
  66. def reduce(grid):
  67.     reduceGridColumn(grid)
  68.     reduceGridRows(grid)
  69.     reduceGridBox(grid)
  70.  
  71. reduce(grid)
  72.  
  73. for i in range(0,100):
  74.     reduce(grid)
  75.  
  76.  
  77. for i in range(0,9):
  78.     for j in range(0,9):
  79.         print(grid[i][j])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement