public void MoveWheels(RoverCommand command) { int x = _commandableRover.CurrentXPos; if (command.Rotation == RoverRotates.Left) { x = _commandableRover.CurrentXPos + command.Steps; _commandableRover.SetPosition(x, _commandableRover.CurrentYPos, RoverDirections.East); } else if (command.Rotation == RoverRotates.Right) { x = _commandableRover.CurrentXPos - command.Steps; _commandableRover.SetPosition(x, _commandableRover.CurrentYPos, RoverDirections.West); } else { throw new ApplicationException($"Southbound rover unable move {command.Steps} steps towards {command.Rotation}"); } }
private IList <RoverCommand> ParseCommands(string commands) { List <RoverCommand> roverCommands = new List <RoverCommand>(); string stepInCommand = string.Empty; for (int i = 0; i < commands.Length; i++) { char character = commands[i]; if (character == (char)RoverRotates.Left || character == (char)RoverRotates.Right) { if (roverCommands.Count > 0 && !string.IsNullOrEmpty(stepInCommand)) { roverCommands.Last().Steps = int.Parse(stepInCommand); stepInCommand = string.Empty; } var roverCommand = new RoverCommand { Rotation = (RoverRotates)Enum.ToObject(typeof(RoverRotates), character) }; roverCommands.Add(roverCommand); continue; } if (char.IsDigit(character)) { stepInCommand = string.Concat(stepInCommand, character); } } if (roverCommands.Count > 0 && !string.IsNullOrEmpty(stepInCommand)) { roverCommands.Last().Steps = int.Parse(stepInCommand); } return(roverCommands); }