public static CompassEnum NextPosition(CompassEnum heading, string instruction) { CompassEnum newHeading; if (instruction == "L") { newHeading = TurnLeft(heading); } else if (instruction == "R") { newHeading = TurnRight(heading); } else { newHeading = heading; } return(newHeading); }
public static Coordinate NewLocation(CompassEnum heading, Coordinate xy, Coordinate area) { Coordinate xyNew = xy; switch (heading) { case CompassEnum.North: { xyNew = new Coordinate(xy.X, xy.Y + 1); } break; case CompassEnum.East: { xyNew = new Coordinate(xy.X + 1, xy.Y); } break; case CompassEnum.South: { xyNew = new Coordinate(xy.X, xy.Y - 1); } break; case CompassEnum.West: { xyNew = new Coordinate(xy.X - 1, xy.Y); } break; } if (area.X < xy.X) { return(xy); } if (area.Y < xy.Y) { return(xy); } return(xyNew); }
public string GetLocation(Coordinate xy, Coordinate area, CompassEnum compass, string directions) { var directionSplit = directions.ToCharArray(); var currentLocation = xy; var currentHeading = compass; CompassEnum newHeading; for (var i = 0; i < directionSplit.Length; i++) { var instruction = directionSplit[i].ToString(); newHeading = CompassDirector.NextPosition(currentHeading, instruction); if (newHeading == currentHeading) { currentLocation = CoordinateDirector.NewLocation(newHeading, currentLocation, area); } currentHeading = newHeading; } var finalLocation = currentLocation.X.ToString() + currentLocation.Y.ToString() + CompassConvertor(currentHeading); return(finalLocation); }
private CompassEnum CompassConvertor(string heading) { CompassEnum compHeading = CompassEnum.North; switch (heading) { case "N": compHeading = CompassEnum.North; break; case "E": compHeading = CompassEnum.East; break; case "S": compHeading = CompassEnum.South; break; case "W": compHeading = CompassEnum.West; break; } return(compHeading); }
private string CompassConvertor(CompassEnum heading) { string stringHeading = string.Empty; switch (heading) { case CompassEnum.North: stringHeading = "N"; break; case CompassEnum.East: stringHeading = "E"; break; case CompassEnum.South: stringHeading = "S"; break; case CompassEnum.West: stringHeading = "W"; break; } return(stringHeading); }
private static CompassEnum TurnRight(CompassEnum heading) { CompassEnum newHeading = heading; switch (heading) { case CompassEnum.North: { newHeading = CompassEnum.East; } break; case CompassEnum.East: { newHeading = CompassEnum.South; } break; case CompassEnum.South: { newHeading = CompassEnum.West; } break; case CompassEnum.West: { newHeading = CompassEnum.North; } break; } return(newHeading); }