//DS: PLACE {digit},{digit},{north|south|east|west} public static TableAreaVm GetFirstLineValuesOnly(List <string> inputs) { if (inputs == null) { new ArgumentException("Invalid input values"); } TableAreaVm area = new TableAreaVm(); string firstline = inputs.FirstOrDefault().ToLower(); int x = 0, y = 0; var linesSpaces = firstline.Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries); if (linesSpaces[0] != "place") { throw new ArgumentException("instruction should begin with >>>place<<<"); } var linesCommas = linesSpaces[1].Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries); if (!faces.Any(x => x == linesCommas.LastOrDefault())) { throw new ArgumentException("invalid face direction"); } else if (!int.TryParse(linesCommas[0], out x) || !int.TryParse(linesCommas[1], out y)) { throw new ArgumentException("invalid co-ordinate"); } area.X = x; area.Y = y; area.FacingDirections = (FacingDirections)Enum.Parse(typeof(FacingDirections), linesCommas[2].ToUpper()); area.XMax = TableAreaDefaultValues.MaxX; area.YMax = TableAreaDefaultValues.MaxY; return(area); }
public string MissionControl(List <string> inputs) { if (inputs == null) { throw new ArgumentException("Invalid input instruction"); } TableAreaVm area = InputHelper.GetFirstLineValuesOnly(inputs); this.tableare.X = area.X; this.tableare.Y = area.Y; this.tableare.FacingDirections = area.FacingDirections; foreach (var move in InputHelper.GetInstructionValuesOnly(inputs)) { switch (move.ToLower()) { case "move": this.MoveContinue(); break; case "left": Left_Rotation(); break; case "right": Right_Rotation(); break; case "report": return(Report()); default: break; } } ValidateTableArea(); return(null); }