public void ShuffleEigthPuzzleInitialState(AriciePropertyEditorControl ape) { var eightPuzzleBoard = new EightPuzzleBoard(EightPuzzleInitialState.ToArray()); var actionsFunction = EightPuzzleFunctionFactory.getActionsFunction(); var resultFunction = EightPuzzleFunctionFactory.getResultFunction(); var previousBoards = new HashSet <EightPuzzleBoard>(); for (int i = 0; i < EightPuzzleShuffleMoves; i++) { Object[] successors = actionsFunction.actions(eightPuzzleBoard).toArray(); EightPuzzleBoard nextState; do { var choosenSuccessorIdx = CryptoHelper.Random.Next(successors.Length); var objAction = (aima.core.agent.Action)successors[choosenSuccessorIdx]; nextState = (EightPuzzleBoard)resultFunction.result(eightPuzzleBoard, objAction); } while (previousBoards.Contains(nextState)); previousBoards.Add(eightPuzzleBoard); eightPuzzleBoard = (EightPuzzleBoard)nextState; } EightPuzzleInitialState = new List <int>(eightPuzzleBoard.getState()); ape.ItemChanged = true; }
public ResultFunction GetResultFunction() { switch (Selection) { case SearchDemos.EightPuzzle: return(EightPuzzleFunctionFactory.getResultFunction()); case SearchDemos.NQueen: return(NQueensFunctionFactory.getResultFunction()); default: break; } return(null); }
public ActionsFunction GetActionsFunction() { switch (Selection) { case SearchDemos.EightPuzzle: return(EightPuzzleFunctionFactory.getActionsFunction()); case SearchDemos.NQueen: switch (NQueensActions) { case NQueensActions.CompleteState: return(NQueensFunctionFactory.getIActionsFunction()); case NQueensActions.Incremental: return(NQueensFunctionFactory.getIActionsFunction()); } break; default: return(null); } return(null); }