← Back

Program 7: Solve the 4 – Queens Problem as a CSP backtracking problem.

Simple Python Code
def is_safe(board, row, col, n):
    """Check if queen can be placed at board[row][col]"""
    for i in range(col):
        if board[row][i] == 1:
            return False
    
    for i, j in zip(range(row, -1, -1), range(col, -1, -1)):
        if board[i][j] == 1:
            return False
    
    for i, j in zip(range(row, n), range(col, -1, -1)):
        if board[i][j] == 1:
            return False
    
    return True

def solve_n_queens(board, col, n):
    """Backtracking"""
    if col >= n:
        return True
    
    for i in range(n):
        if is_safe(board, i, col, n):
            board[i][col] = 1
            
            if solve_n_queens(board, col + 1, n):
                return True
            
            board[i][col] = 0
    
    return False

print("4-Queens Problem:")
n = 4
board = [[0] * n for _ in range(n)]
if solve_n_queens(board, 0, n):
    for row in board:
        print(f"  {row}")
print()
Advanced Python Code
def is_safe(board, row, col, n):
    """Check if queen can be placed at board[row][col]"""
    for i in range(col):
        if board[row][i] == 1:
            return False
    
    for i, j in zip(range(row, -1, -1), range(col, -1, -1)):
        if board[i][j] == 1:
            return False
    
    for i, j in zip(range(row, n), range(col, -1, -1)):
        if board[i][j] == 1:
            return False
    
    return True

def solve_n_queens(board, col, n):
    """Backtracking"""
    if col >= n:
        return True
    
    for i in range(n):
        if is_safe(board, i, col, n):
            board[i][col] = 1
            
            if solve_n_queens(board, col + 1, n):
                return True
            
            board[i][col] = 0
    
    return False

print("4-Queens Problem:")
n = 4
board = [[0] * n for _ in range(n)]
if solve_n_queens(board, 0, n):
    for row in board:
        print(f"  {row}")
print()
Infographics