Advertisement
pacho_the_python

Sudoku Solver

May 26th, 2023
1,014
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.94 KB | None | 0 0
  1. def find_empty_cell(board):
  2.     for board_row in range(9):
  3.         for board_cow in range(9):
  4.             if board[board_row][board_cow] == '':
  5.                 return board_row, board_cow
  6.  
  7.     return None, None
  8.  
  9.  
  10. def is_valid(board, prediction, row, col):
  11.     row_vals = board[row]
  12.     if prediction in row_vals:
  13.         return False
  14.  
  15.     col_vals = [board[i][col] for i in range(9)]
  16.     if prediction in col_vals:
  17.         return False
  18.  
  19.     row_start = (row // 3) * 3
  20.     col_start = (col // 3) * 3
  21.  
  22.     for r in range(row_start, row_start + 3):
  23.         for c in range(col_start, col_start + 3):
  24.             if board[r][c] == prediction:
  25.                 return False
  26.  
  27.     return True
  28.  
  29.  
  30. def solver(board):
  31.     row, col = find_empty_cell(board)
  32.  
  33.     if row is None:
  34.         return True
  35.  
  36.     for guess in range(1, 10):
  37.         if is_valid(board, guess, row, col):
  38.             board[row][col] = guess
  39.             if solver(board):
  40.                 return True
  41.         board[row][col] = ''
  42.  
  43.     return False
  44.  
  45.  
  46. matrix = [
  47.     ['6', '3', '', '', '', '', '', '8', '1'],
  48.     ['', '2', '', '', '', '3', '', '', ''],
  49.     ['', '', '', '', '1', '7', '4', '3', ''],
  50.  
  51.     ['', '9', '6', '4', '', '', '5', '7', ''],
  52.     ['', '', '', '7', '6', '2', '', '', ''],
  53.     ['', '8', '', '', '', '', '6', '', ''],
  54.  
  55.     ['', '6', '', '', '2', '', '', '', ''],
  56.     ['3', '', '9', '', '', '', '', '6', ''],
  57.     ['', '', '', '', '', '', '', '', '9']
  58. ]
  59. print(solver(matrix))
  60. for j in matrix:
  61.     print(', '.join(map(str, j)))
  62.  
  63.  
  64. # matrix = [
  65. #     ['', '', '', '', '', '', '', '', ''],
  66. #     ['', '', '', '', '', '', '', '', ''],
  67. #     ['', '', '', '', '', '', '', '', ''],
  68. #
  69. #     ['', '', '', '', '', '', '', '', ''],
  70. #     ['', '', '', '', '', '', '', '', ''],
  71. #     ['', '', '', '', '', '', '', '', ''],
  72. #
  73. #     ['', '', '', '', '', '', '', '', ''],
  74. #     ['', '', '', '', '', '', '', '', ''],
  75. #     ['', '', '', '', '', '', '', '', '']
  76. # ]
  77.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement