public static MarsRoverInput Parse(string marsRoverInput) { var inputParts = marsRoverInput.Split(InputSeparator); var gridInput = inputParts[0].Split(' '); var positionInput = inputParts[1]; var commandsInput = inputParts[2]; var trackingModule = new TrackingModule { GridMaximumX = int.Parse(gridInput[0]), GridMaximumY = int.Parse(gridInput[1]), Position = ParsePosition(positionInput) }; var commandModule = new CommandModule(ParseCommandChain(commandsInput)); return(new MarsRoverInput { TrackingModule = trackingModule, CommandModule = commandModule }); }
public void Execute(TrackingModule trackingModule) { trackingModule.Position.Orientation = RotationMappings[trackingModule.Position.Orientation]; _nextCommandInChain?.Execute(trackingModule); }