Exemplo n.º 1
0
        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;
        }
Exemplo n.º 2
0
        public ResultFunction GetResultFunction()
        {
            switch (Selection)
            {
            case SearchDemos.EightPuzzle:
                return(EightPuzzleFunctionFactory.getResultFunction());

            case SearchDemos.NQueen:
                return(NQueensFunctionFactory.getResultFunction());

            default:
                break;
            }
            return(null);
        }
Exemplo n.º 3
0
        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);
        }