Написать программу для решения судоку.
Решатель судокуЗадание: Написать программу для решения судоку, используя алгоритм "backtracking". def is_valid(board, row, col, num): for x in range(9): if board[row][x] == num or board[x][col] == num: return False startRow = row - row % 3 startCol = col - col % 3 for i in range(3): for j in range(3): if board[i + startRow][j + startCol] == num: return False return True def solve_sudoku(board): empty = find_empty_location(board) if not empty: return True row, col = empty for num in range(1, 10): if is_valid(board, row, col, num): board[row][col] = num if solve_sudoku(board): return True board[row][col] = 0 return False def find_empty_location(board): for i in range(9): for j in range(9): if board[i][j] == 0: return (i, j) return None sudoku_board = [ [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] ] if solve_sudoku(sudoku_board): for row in sudoku_board: print(row) else: print("No solution exists") Результат выполнения кодаВывод решения судоку будет зависеть от начального состояния доски, указанного в коде. Этот код демонстрирует использование алгоритма "backtracking" для решения головоломки судоку. | |
| |
Просмотров: 108 | |
Всего комментариев: 0 | |