Untitled

 avatar
unknown
plain_text
2 months ago
1.0 kB
2
Indexable
def is_valid_move(row, column, number, grid):
    """Check if placing a number at grid[row][col] is valid. checks for both row and column"""
    for i in range(9):
        if grid[row][i] == number or grid[i][column] == number:
            return False

    # Check 3x3 subgrid
    r, c = (row // 3) * 3, (column // 3) * 3
    for i in range(3):
        for j in range(3):
            if grid[r + i][c + j] == number:
                return False
    return True

def solve_sudoku(grid):
    """Recursive backtracking function to solve the Sudoku grid."""
    for row in range(9):
        for column in range(9):
            if grid[row][column] == 0:
                for number in range(1, 10):
                    if is_valid_move(row, column, number, grid):
                        grid[row][column] = number
                        if solve_sudoku(grid):
                            return True
                        grid[row][column] = 0  # Backtrack
                return False
    return True
Leave a Comment