Added code for assignment B4, i.e. N-Queen problem.

This commit is contained in:
K 2025-03-27 22:25:51 +05:30
parent 5f6f81b739
commit 7ec46278a6
Signed by: notkshitij
GPG Key ID: C5B8BC7530F8F43F
2 changed files with 51 additions and 0 deletions

50
Codes/Assignment-B4.py Normal file
View File

@ -0,0 +1,50 @@
def placeQueens(i, cols, leftDiagonal, rightDiagonal, cur, board):
n = len(cols)
if i == n:
return True
for j in range(n):
if cols[j] or rightDiagonal[i + j] or leftDiagonal[i - j + n - 1]:
continue
cols[j] = 1
rightDiagonal[i + j] = 1
leftDiagonal[i - j + n - 1] = 1
cur.append(j)
if placeQueens(i + 1, cols, leftDiagonal, rightDiagonal, cur, board):
return True
cur.pop()
cols[j] = 0
rightDiagonal[i + j] = 0
leftDiagonal[i - j + n - 1] = 0
return False
def nQueen(n):
cols = [0] * n
leftDiagonal = [0] * (n * 2)
rightDiagonal = [0] * (n * 2)
cur = []
board = [['.' for _ in range(n)] for _ in range(n)]
if placeQueens(0, cols, leftDiagonal, rightDiagonal, cur, board):
for i in range(n):
board[i][cur[i]] = 'Q'
return board
else:
return None
def printBoard(board):
if board:
for row in board:
print(" ".join(row))
else:
print("No solution exists.")
if __name__ == "__main__":
n = int(input("Enter the number of queens:\t"))
board = nQueen(n)
printBoard(board)

View File

@ -15,6 +15,7 @@
1. [Assignment-A1 (DFS | BFS)](Codes/Assignment-A1.py)
2. [Assignment-A2 (A star algorithm)]()
3. [Assignment-A3.I (Selection Sort)](Codes/Assignment-A3.I.py)
4. [Assignment-A4 (N-Queen Problem)](Codes/Assignment-A4.py)
### Practical