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