| 1. |
Write a Python program to solve a Sudoku puzzle. If possible use Raw Diagram to show the flow of your program. Remember, the program must be both speed and memory efficient. You are free to import any module. Also, explain the flow of control briefly. A sample Sudoku puzzle is attached. If convenient, attach the output with your answer. |
|
Answer» isValid(i, j, x, board): # CHECK row for col in range(9): if board[i][col] == x: return False
# check column for row in range(9): if board[row][j] == x: return False
# check block startrow = i - i % 3 startcol = j - j % 3
p = startrow while p <= startrow + 2: l = startcol while l <= startcol + 2: if board[p][l] == x: return False l += 1 p += 1
return True
def solveSudokuHelper(i, j, board): if i == 8 and j == 8: if board[i][j] != 0: for row in board: for ele in row: PRINT(ele, end=" ") print() else: for x in range(1, 10): if isValid(i, j, x, board) is True: board[i][j] = x for row in board: for ele in row: print(ele, end=" ") print() board[i][j] = 0 print() return
if j > 8: solveSudokuHelper(i + 1, 0, board) return
if board[i][j] == 0: for x in range(1, 10): if isValid(i, j, x, board) is True: board[i][j] = x solveSudokuHelper(i, j + 1, board) board[i][j] = 0 else: solveSudokuHelper(i, j + 1, board) return
def solveSudoku(board): solveSudokuHelper(0, 0, board)
board = [] for i in range(9): print("ENTER space separated ELEMENTS of row {}".format(i+1)) row = [int(x) for x in input().STRIP().split()] board.append(row) print() solveSudoku(board) |
|