コード例 #1
0
        public ActionStateInterface doAction(string pAction)
        {
            ChickenCrossingPuzzle state = (ChickenCrossingPuzzle)this.Clone();

            switch (pAction)
            {
            case ChickenCrossingPuzzleActions.GOALONE:
                state.FarmerState = ChickenCrossingPuzzleStates.RIGHT;
                break;

            case ChickenCrossingPuzzleActions.GOWITHFOX:
                state.FarmerState = ChickenCrossingPuzzleStates.RIGHT;
                state.FoxState    = ChickenCrossingPuzzleStates.RIGHT;
                break;

            case ChickenCrossingPuzzleActions.GOWITHCHICKEN:
                state.FarmerState  = ChickenCrossingPuzzleStates.RIGHT;
                state.ChickenState = ChickenCrossingPuzzleStates.RIGHT;
                break;

            case ChickenCrossingPuzzleActions.GOWITHCORN:
                state.FarmerState = ChickenCrossingPuzzleStates.RIGHT;
                state.CornState   = ChickenCrossingPuzzleStates.RIGHT;
                break;

            case ChickenCrossingPuzzleActions.COMEBACKALONE:
                state.FarmerState = ChickenCrossingPuzzleStates.LEFT;
                break;

            case ChickenCrossingPuzzleActions.COMEBACKWITHFOX:
                state.FarmerState = ChickenCrossingPuzzleStates.LEFT;
                state.FoxState    = ChickenCrossingPuzzleStates.LEFT;
                break;

            case ChickenCrossingPuzzleActions.COMEBACKWITHCHICKEN:
                state.FarmerState  = ChickenCrossingPuzzleStates.LEFT;
                state.ChickenState = ChickenCrossingPuzzleStates.LEFT;
                break;

            case ChickenCrossingPuzzleActions.COMEBACKWITHCORN:
                state.FarmerState = ChickenCrossingPuzzleStates.LEFT;
                state.CornState   = ChickenCrossingPuzzleStates.LEFT;
                break;
            }

            return(state);
        }
コード例 #2
0
        public override bool Equals(object?obj)
        {
            if (obj is null)
            {
                return(false);
            }
            if (obj.GetType() == this.GetType())
            {
                ChickenCrossingPuzzle o = (ChickenCrossingPuzzle)obj;

                return(o.FarmerState == this.FarmerState &&
                       o.FoxState == this.FoxState &&
                       o.ChickenState == this.ChickenState &&
                       o.CornState == this.CornState);
            }
            else
            {
                return(false);
            }
        }
コード例 #3
0
        static void Main(string[] args)
        {
            ChickenCrossingPuzzle initial = new ChickenCrossingPuzzle(ChickenCrossingPuzzleStates.LEFT, ChickenCrossingPuzzleStates.LEFT, ChickenCrossingPuzzleStates.LEFT, ChickenCrossingPuzzleStates.LEFT);

            List <ActionStateInterface> finals = new List <ActionStateInterface>()
            {
                new ChickenCrossingPuzzle(ChickenCrossingPuzzleStates.RIGHT, ChickenCrossingPuzzleStates.RIGHT, ChickenCrossingPuzzleStates.RIGHT, ChickenCrossingPuzzleStates.RIGHT)
            };

            UninformedSearch problem = new UninformedSearch(initial, finals);

            List <CandidateState> result = problem.search();

            foreach (CandidateState state in result)
            {
                Console.WriteLine(state.ToString());
            }

            Console.ReadLine();
        }