public bool isGoalState(Object state) { board = (NQueensBoard) state; return (allQueensPlaced() && allQueenPositionsHaveZeroAttacks(board .getQueenPositions())); }
private NQueensBoard placeQueenAt(int row, int column, NQueensBoard parentBoard) { NQueensBoard newBoard = new NQueensBoard(parentBoard.getSize()); ArrayList queenPositionsOnParentBoard = parentBoard.getQueenPositions(); queenPositionsOnParentBoard.Add(new XYLocation(row, column)); newBoard.setBoard(queenPositionsOnParentBoard); return newBoard; }
private NQueensBoard placeQueenAt(int row, int column, NQueensBoard parentBoard) { NQueensBoard newBoard = new NQueensBoard(parentBoard.getSize()); ArrayList queenPositionsOnParentBoard = parentBoard.getQueenPositions(); queenPositionsOnParentBoard.Add(new XYLocation(row, column)); newBoard.setBoard(queenPositionsOnParentBoard); return(newBoard); }
public ArrayList getSuccessors(Object state) { ArrayList successors = new ArrayList(); NQueensBoard board = (NQueensBoard)state; int numQueens = board.getNumberOfQueensOnBoard(); int boardSize = board.getSize(); for (int i = 0; i < boardSize; i++) { if (!(board.isSquareUnderAttack(new XYLocation(numQueens, i)))) { NQueensBoard child = placeQueenAt(numQueens, i, board); successors.Add(new Successor("placeQueenAt " + numQueens + " " + i, child)); } } return(successors); }
public override bool Equals(Object o) { if (this == o) { return(true); } if ((o == null) || (this.GetType() != o.GetType())) { return(false); } NQueensBoard aBoard = (NQueensBoard)o; bool retVal = true; ArrayList locs = getQueenPositions(); foreach (XYLocation loc in locs) { if (!(aBoard.queenExistsAt(loc))) { retVal = false; } } return(retVal); }
public int getHeuristicValue(Object state) { NQueensBoard board = (NQueensBoard)state; return(board.getSize() - board.getNumberOfQueensOnBoard()); }
public bool isGoalState(Object state) { board = (NQueensBoard)state; return(allQueensPlaced() && allQueenPositionsHaveZeroAttacks(board .getQueenPositions())); }