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); }
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); } }
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(); }