Don't wanna be here? Send us removal request.
Text
N- Queen Problem
class QueenChessBoard: def __init__(self,size): self.size=size self.columns=[]
def place_in_next_row(self,column): self.columns.append(column)
def remove_in_current_row(self): return self.columns.pop()
def is_this_column_safe_in_next_row(self,column): row=len(self.columns)
for q in self.columns: if column == q: return False
for qr,qc in enumerate(self.columns): if qc-qr == column-row: return False
for qr,qc in enumerate(self.columns): if ((self.size-qc)-qr)==((self.size-column)-row): return False
return True
#Display the chessboard def display(self): for row in range(self.size): for column in range(self.size): if column == self.columns[row]: print('Q',end=' ') else: print('.',end=' ') print()
def solve_queen(size): board = QueenChessBoard(size) no_of_solutions=0 row=0 column=0
while True: while column<size: if board.is_this_column_safe_in_next_row(column): board.place_in_next_row(column) row=row+1 column=0 break else: column=column+1
if(column==size or row==size): if row==size: board.display() print() no_of_solutions+=1
board.remove_in_current_row() row=row-1 try: prev_column=board.remove_in_current_row()
except IndexError: break
row=row-1 column=1+prev_column
print("Number of Solutions: ",no_of_solutions)
n=int(input("Enter n: ")) solve_queen(n)
#ai#tech#technology#itfield#machine learning#bscit#it#programming#artificial intelligence#code#python#computer
1 note
·
View note