public Object result(Object s, Action a)
 {
     if (a is QueenAction)
     {
         QueenAction  qa       = (QueenAction)a;
         NQueensBoard board    = (NQueensBoard)s;
         NQueensBoard newBoard = new NQueensBoard(board.getSize());
         newBoard.setBoard(board.getQueenPositions());
         if (qa.getName() == QueenAction.PLACE_QUEEN)
         {
             newBoard.AddQueenAt(qa.getLocation());
         }
         else if (qa.getName() == QueenAction.REMOVE_QUEEN)
         {
             newBoard.removeQueenFrom(qa.getLocation());
         }
         else if (qa.getName() == QueenAction.MOVE_QUEEN)
         {
             newBoard.moveQueenTo(qa.getLocation());
         }
         s = newBoard;
     }
     // if action is not understood or is a NoOp
     // the result will be the current state.
     return(s);
 }
        // END - Interface GoalTest
        //

        public NQueensBoard getBoardForIndividual(String individual)
        {
            int          boardSize = individual.length();
            NQueensBoard board     = new NQueensBoard(boardSize);

            for (int i = 0; i < boardSize; i++)
            {
                int pos = Character
                          .digit(individual.charAt(i), individual.length());
                board.AddQueenAt(new XYLocation(i, pos));
            }

            return(board);
        }
        // END - Interface GoalTest
        //

        public NQueensBoard getBoardForIndividual(String individual)
        {
            int boardSize = individual.length();
            NQueensBoard board = new NQueensBoard(boardSize);
            for (int i = 0; i < boardSize; i++)
            {
                int pos = Character
                        .digit(individual.charAt(i), individual.length());
                board.AddQueenAt(new XYLocation(i, pos));
            }

            return board;
        }
 public Object result(Object s, Action a)
 {
     if (a is QueenAction)
     {
         QueenAction qa = (QueenAction)a;
         NQueensBoard board = (NQueensBoard)s;
         NQueensBoard newBoard = new NQueensBoard(board.getSize());
         newBoard.setBoard(board.getQueenPositions());
         if (qa.getName() == QueenAction.PLACE_QUEEN)
             newBoard.AddQueenAt(qa.getLocation());
         else if (qa.getName() == QueenAction.REMOVE_QUEEN)
             newBoard.removeQueenFrom(qa.getLocation());
         else if (qa.getName() == QueenAction.MOVE_QUEEN)
             newBoard.moveQueenTo(qa.getLocation());
         s = newBoard;
     }
     // if action is not understood or is a NoOp
     // the result will be the current state.
     return s;
 }