Added code for assignment B4, i.e. N-Queen problem.
This commit is contained in:
parent
5f6f81b739
commit
7ec46278a6
50
Codes/Assignment-B4.py
Normal file
50
Codes/Assignment-B4.py
Normal 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)
|
@ -15,6 +15,7 @@
|
|||||||
1. [Assignment-A1 (DFS | BFS)](Codes/Assignment-A1.py)
|
1. [Assignment-A1 (DFS | BFS)](Codes/Assignment-A1.py)
|
||||||
2. [Assignment-A2 (A star algorithm)]()
|
2. [Assignment-A2 (A star algorithm)]()
|
||||||
3. [Assignment-A3.I (Selection Sort)](Codes/Assignment-A3.I.py)
|
3. [Assignment-A3.I (Selection Sort)](Codes/Assignment-A3.I.py)
|
||||||
|
4. [Assignment-A4 (N-Queen Problem)](Codes/Assignment-A4.py)
|
||||||
|
|
||||||
### Practical
|
### Practical
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user