diff --git a/sudoku.py b/sudoku.py new file mode 100644 index 000000000..a224a75e9 --- /dev/null +++ b/sudoku.py @@ -0,0 +1,37 @@ +def is_valid(board, row, col, num): + for i in range(9): + if board[row][i] == num or board[i][col] == num: + return False + if board[3*(row//3)+i//3][3*(col//3)+i%3] == num: + return False + return True + +def solve(board): + for row in range(9): + for col in range(9): + if board[row][col] == 0: + for num in range(1, 10): + if is_valid(board, row, col, num): + board[row][col] = num + if solve(board): + return True + board[row][col] = 0 + return False + return True + +# Example Sudoku board (0 = empty) +sudoku = [ + [5,3,0,0,7,0,0,0,0], + [6,0,0,1,9,5,0,0,0], + [0,9,8,0,0,0,0,6,0], + [8,0,0,0,6,0,0,0,3], + [4,0,0,8,0,3,0,0,1], + [7,0,0,0,2,0,0,0,6], + [0,6,0,0,0,0,2,8,0], + [0,0,0,4,1,9,0,0,5], + [0,0,0,0,8,0,0,7,9] +] + +solve(sudoku) +for row in sudoku: + print(row)