Beispiel #1
0
        public List <Rover> Run(string instructionsFilePath)
        {
            var inputSet = GetInputSet(instructionsFilePath);

            ParsePlateauCoordinates(inputSet[0], out int maxX, out int maxY);
            var rovers = new List <Rover>();

            for (int i = 1; i < inputSet.Length; i += 2)
            {
                GetInitialRoverPosition(inputSet[i], out int x, out int y, out Direction heading);

                var rover          = new Rover(x, y, heading, maxX, maxY);
                var instructionSet = inputSet[i + 1];
                for (int j = 0; j < instructionSet.Length; j++)
                {
                    var instructionResult = Enum.TryParse(instructionSet[j].ToString(),
                                                          out Instruction instruction);
                    if (!instructionResult)
                    {
                        throw new Exception("Invalid instruction!");
                    }
                    rover.RunInstruction(instruction);
                }
                Console.WriteLine(rover);
                rovers.Add(rover);
            }
            return(rovers);
        }