Exemple #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="RoverControlModel"></param>
        /// <returns></returns>
        public List <RoverOutputModel> ExecuteRoverNavigation(RoverControlModel RoverControlModel)
        {
            GridTopX = RoverControlModel.GridTopX;
            GridTopY = RoverControlModel.GridTopY;

            List <RoverOutputModel> FinalRoverCoordinates = new List <RoverOutputModel>();

            foreach (RoverInputModel input in RoverControlModel.RoverInputs)
            {
                FinalRoverCoordinates.Add(ExecuteCommand(input));
            }
            return(FinalRoverCoordinates);
        }
Exemple #2
0
        /// <summary>
        /// Calls the Api endpoint to get the final coordinates
        /// </summary>
        /// <param name="RoverInputModel"></param>
        /// <returns></returns>
        public List <Rover.Model.RoverOutputModel> GetRoverCoordinates(string RoverInputModel)
        {
            string[] stringSeparators          = new string[] { "\r\n" };
            var      commands                  = RoverInputModel.TrimEnd().Split(stringSeparators, StringSplitOptions.None);
            List <RoverInputModel> inputModels = new List <RoverInputModel>();
            var gridDimensions                 = commands[0].Split(' '); // First line sets the plateaus dimensoins

            RoverControlModel RoverControlModel = new RoverControlModel();

            RoverControlModel.GridTopX = int.Parse(gridDimensions[0]);
            RoverControlModel.GridTopY = int.Parse(gridDimensions[1]);

            for (int i = 1; i < commands.Length; i += 2)
            {
                RoverInputModel model   = new RoverInputModel();
                var             postion = commands[i].Split(' ');
                model.Position.PositionX = int.Parse(postion[0]);
                model.Position.PositionY = int.Parse(postion[1]);
                model.Position.Heading   = postion[2];
                model.Instructions       = commands[i + 1];

                RoverControlModel.RoverInputs.Add(model);
            }
            string inputJson = JsonConvert.SerializeObject(RoverControlModel);

            List <RoverOutputModel> FinalRoverCoordinates = new List <RoverOutputModel>();

            try
            {
                FinalRoverCoordinates = ExecuteRoverNavigation(RoverControlModel);
            }
            catch (Exception ex)
            {
                //Log Exception
                Console.WriteLine(ex.Message);
                throw new Exception("Error occured while accessing the service API");
            }
            return(FinalRoverCoordinates);
        }