Advertisement
Guest User

Untitled

a guest
Feb 28th, 2020
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.72 KB | None | 0 0
  1. board = [
  2. [0, 0, 0, 6, 0, 0, 1, 0, 7],
  3. [6, 8, 0, 9, 5, 1, 3, 0, 0],
  4. [0, 0, 3, 0, 0, 2, 5, 0, 8],
  5. [0, 4, 0, 8, 1, 0, 0, 2, 0],
  6. [0, 0, 0, 0, 0, 0, 8, 5, 0],
  7. [0, 9, 0, 0, 6, 5, 0, 7, 3],
  8. [4, 0, 9, 0, 0, 3, 0, 8, 5],
  9. [1, 6, 2, 0, 0, 9, 0, 3, 0],
  10. [5, 0, 0, 7, 0, 6, 0, 0, 0]
  11. ]
  12.  
  13.  
  14. def print_board(b):
  15.     boardstr = ""
  16.     for i in range(9):
  17.         if i == 3 or i == 6:
  18.             boardstr += "---------------------\n"
  19.         for j in range(9):
  20.             boardstr += str(b[i][j]) + " "
  21.             if j == 8:
  22.                 boardstr += "\n"
  23.             if j == 2 or j == 5:
  24.                 boardstr += "| "
  25.     print(boardstr)
  26.  
  27. def solve_board(b):
  28.     def is_valid_number(b, num, x, y):
  29.         for i in range(9):
  30.             if b[i][y] == num:
  31.                 return False
  32.         for j in range(9):
  33.             if b[x][j] == num:
  34.                 return False
  35.         for i in range(3):
  36.             for j in range(3):
  37.                 if b[(x // 3) * 3 + i][(y // 3) * 3 + j] == num:
  38.                     return False
  39.         return True
  40.  
  41.     def next_valid_position(b):
  42.         for i in range(9):
  43.             for j in range(9):
  44.                 if b[i][j] == 0:
  45.                     return (i, j)
  46.         return True
  47.  
  48.     def recursive_solve(b):
  49.         if next_valid_position(b) == True:
  50.             print("Board solved!\n")
  51.             print_board(board)
  52.             return True
  53.        
  54.         x, y = next_valid_position(b)
  55.        
  56.         for i in range(1, 10):
  57.             if is_valid_number(b, i, x, y):
  58.                 board[x][y] = i
  59.                 recursive_solve(board)
  60.         board[x][y] = 0
  61.         return False
  62.    
  63.     recursive_solve(b)
  64.      
  65. print_board(board)
  66. solve_board(board)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement