Skip to content

Instantly share code, notes, and snippets.

View cggonzal's full-sized avatar
😊

Carlos Gonzalez cggonzal

😊
View GitHub Profile
n = 8
NQ = NQueens(n)
while(not NQ.allQueensSafe()):
minAttacks = n + 1 # n + 1 is greater than any possibility of attacks so this is guaranteed to get minimized
pickedQueen = NQ.pickRandomQueen()
positions = NQ.availablePositions(pickedQueen)
minConflictPosition = (-1,-1)
for pos in positions: # iterate through all positions of pickedQueen and move to position of minimum conflict
NQ.moveQueen(pickedQueen,pos)
newNumberOfConflicts = NQ.specificQueenConflicts(pos)
if(newNumberOfConflicts < minAttacks ):
minConflictPosition = pos
minAttacks = newNumberOfConflicts
NQ.moveQueen(pos,pickedQueen) # move queen back
NQ.moveQueen(pickedQueen,minConflictPosition)# move queen to least conflict spot
# min conflicts solver for NQueens problems
from nqueens import *
n = 8
NQ = NQueens(n)
timer = 0
while(not NQ.allQueensSafe()):
minAttacks = n + 1 # n + 1 is greater than any possibility of attacks so this is guaranteed to get minimized
pickedQueen = NQ.pickRandomQueen()
positions = NQ.availablePositions(pickedQueen)
import random
class NQueens:
def __init__(self,n):
self.board, self.queenPositions = self.getNewBoard(n)
self.n = n
def getNewBoard(self,n):
# queens are represented as ones in 2d list of all zeros
# Since it's a 2d list, each element is a row of zeros except for the queen
board = []
print(NQ.printBoard())
def allQueensSafe(self): # returns true if problem is solved and all queens safe, false otherwise
for pos in self.queenPositions:
if(self.UnderAttack(pos)):
return False
return True
def UnderAttack(self,position):
if(self.attackViaDiagonal(position)):
return True
if(self.attackViaRow(position)):
return True
if(self.attackViaCol(position)):
return True
def attackViaCol(self,pos):
for queen in self.queenPositions:
if(pos[1] == queen[1] and queen != pos): # last inqueality checks to make sure you arent comparing the same queen
return True
return False
def attackViaRow(self,pos):
for queen in self.queenPositions:
if(pos[0] == queen[0] and queen != pos):
return True
import random
class NQueens:
def __init__(self,n):
self.board, self.queenPositions = self.getNewBoard(n)
self.n = n
def getNewBoard(self,n):
# queens are represented as ones in 2d list of all zeros
# Since it's a 2d list, each element is a row of zeros except for the queen
board = []