public List <NavigationPlan> DeserializeRoverNavigationPlanList(List <string> inputLineList)
        {
            List <NavigationPlan> roverNavigationPlanList = new List <NavigationPlan>();

            for (int lineIndex = 0; lineIndex < inputLineList.Count; lineIndex += 2)
            {
                string   roverInitialPositionInputLine = inputLineList[lineIndex];
                Position roverInitialPosition          = DeserializeRoverInitialPositionInput(roverInitialPositionInputLine);

                string          roverRuleTypeSequenceInputLine = inputLineList[lineIndex + 1];
                List <RuleType> roverRuleTypeList = DeserializeRoverRuleTypeInput(roverRuleTypeSequenceInputLine);

                NavigationPlan roverNavigationPlan = new NavigationPlan
                {
                    InitialPosition = roverInitialPosition,
                    RuleTypeList    = roverRuleTypeList
                };

                roverNavigationPlanList.Add(roverNavigationPlan);
            }

            return(roverNavigationPlanList);
        }
        public void ExecuteNavigationPlan(Plateau plateau, NavigationPlan navigationPlan)
        {
            this.Plateau  = plateau;
            this.Position = navigationPlan.InitialPosition;

            foreach (InstructionType instructionType in navigationPlan.InstructionTypeSequence)
            {
                switch (instructionType)
                {
                case InstructionType.M:
                    this.MoveForward();
                    break;

                case InstructionType.L:
                    this.TurnLeft();
                    break;

                case InstructionType.R:
                    this.TurnRight();
                    break;
                }
            }
        }
        public void NavigationPlan(Plateau plateau, NavigationPlan navigationPlan)
        {
            this.Plateau  = plateau;
            this.Position = navigationPlan.InitialPosition;

            foreach (RuleType instructionType in navigationPlan.RuleTypeList)
            {
                switch (instructionType)
                {
                case RuleType.Move:
                    this.MoveForward();
                    break;

                case RuleType.Left:
                    this.TurnLeft();
                    break;

                case RuleType.Right:
                    this.TurnRight();
                    break;
                }
            }
        }