Waypoint mission creation in Drone Programming - Time & Space Complexity
Start learning this pattern below
Jump into concepts and practice - no test required
When creating a waypoint mission for a drone, it's important to know how the time to set up the mission grows as you add more waypoints.
We want to understand how the number of waypoints affects the work the program does.
Analyze the time complexity of the following code snippet.
mission = createMission()
for waypoint in waypoints:
mission.addWaypoint(waypoint.latitude, waypoint.longitude, waypoint.altitude)
mission.upload()
This code creates a mission and adds each waypoint from a list, then uploads the mission to the drone.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Adding each waypoint to the mission inside a loop.
- How many times: Once for each waypoint in the list.
As the number of waypoints increases, the program adds more points one by one.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | 10 additions |
| 100 | 100 additions |
| 1000 | 1000 additions |
Pattern observation: The work grows directly with the number of waypoints.
Time Complexity: O(n)
This means the time to create the mission grows in a straight line as you add more waypoints.
[X] Wrong: "Adding waypoints happens instantly no matter how many there are."
[OK] Correct: Each waypoint requires a step to add, so more waypoints mean more steps and more time.
Understanding how adding waypoints scales helps you write efficient drone missions and shows you can think about how programs grow with input size.
"What if the mission.addWaypoint method itself loops over all existing waypoints each time it adds a new one? How would the time complexity change?"
Practice
Solution
Step 1: Understand waypoint missions
Waypoint missions are designed to let drones fly automatically through set GPS points without manual control.Step 2: Compare options
Only To make the drone fly automatically through specific GPS points describes automatic flight through GPS points, which matches the purpose of waypoint missions.Final Answer:
To make the drone fly automatically through specific GPS points -> Option AQuick Check:
Waypoint mission = automatic GPS flight [OK]
- Confusing manual control with automatic missions
- Thinking waypoint missions change camera or battery
- Assuming speed control is the main purpose
Solution
Step 1: Identify correct parameter names and order
The standard is to specify latitude, longitude, and altitude clearly, usually with named parameters or in order.Step 2: Check each option
add_waypoint(latitude=34.05, longitude=-118.25, altitude=100) uses clear parameter names and correct order. Others have wrong names, missing altitude, or wrong order.Final Answer:
add_waypoint(latitude=34.05, longitude=-118.25, altitude=100) -> Option DQuick Check:
Correct parameter names and order = add_waypoint(latitude=34.05, longitude=-118.25, altitude=100) [OK]
- Using wrong parameter names like lat or long instead of latitude/longitude
- Omitting altitude
- Wrong function name or missing parameters
mission = []
mission.append({'lat': 40.0, 'lon': -74.0, 'alt': 50})
mission.append({'lat': 40.1, 'lon': -74.1, 'alt': 60})
speed = 10
print(len(mission), mission[1]['alt'], speed)
What will be the output?Solution
Step 1: Count waypoints in mission list
Two waypoints are appended, so len(mission) is 2.Step 2: Access altitude of second waypoint and speed
mission[1]['alt'] is 60, and speed is set to 10.Final Answer:
2 60 10 -> Option AQuick Check:
Waypoints=2, altitude=60, speed=10 [OK]
- Confusing index 0 and 1 for second waypoint
- Mixing altitude values
- Ignoring speed variable
mission = []
mission.add({'latitude': 35.0, 'longitude': -120.0, 'altitude': 80})
speed = 15
print(len(mission))Solution
Step 1: Check list method usage
Python lists use 'append' to add items, not 'add'. Using 'add' causes an error.Step 2: Verify other parts
Altitude is present, variable names are correct, and print syntax is valid.Final Answer:
Using 'add' method instead of 'append' for list -> Option BQuick Check:
List method must be append, not add [OK]
- Using set methods like add() on lists
- Forgetting to include altitude
- Typos in variable names
Solution
Step 1: Check waypoint creation with correct keys
mission = [] mission.append({'latitude':34.0, 'longitude':-117.0, 'altitude':100}) mission.append({'latitude':34.1, 'longitude':-117.1, 'altitude':120}) mission.append({'latitude':34.2, 'longitude':-117.2, 'altitude':110}) speed = 8 uses 'latitude', 'longitude', and 'altitude' keys consistently, matching the given data.Step 2: Verify method to add waypoints and speed setting
mission = [] mission.append({'latitude':34.0, 'longitude':-117.0, 'altitude':100}) mission.append({'latitude':34.1, 'longitude':-117.1, 'altitude':120}) mission.append({'latitude':34.2, 'longitude':-117.2, 'altitude':110}) speed = 8 uses append() correctly to add waypoints and sets speed to 8 m/s as required.Step 3: Eliminate incorrect options
mission = [{'lat':34.0, 'lon':-117.0, 'alt':100}, {'lat':34.1, 'lon':-117.1, 'alt':120}, {'lat':34.2, 'lon':-117.2, 'alt':110}] speed = 8 uses different keys ('lat', 'lon', 'alt') which are inconsistent with required keys. mission = [] mission.add({'lat':34.0, 'lon':-117.0, 'alt':100}) mission.add({'lat':34.1, 'lon':-117.1, 'alt':120}) mission.add({'lat':34.2, 'lon':-117.2, 'alt':110}) speed = 8 uses 'add' which is invalid for lists. mission = [{'lat':34.0, 'lon':-117.0}, {'lat':34.1, 'lon':-117.1}, {'lat':34.2, 'lon':-117.2}] speed = 8 misses altitude values.Final Answer:
mission = [] mission.append({'latitude':34.0, 'longitude':-117.0, 'altitude':100}) mission.append({'latitude':34.1, 'longitude':-117.1, 'altitude':120}) mission.append({'latitude':34.2, 'longitude':-117.2, 'altitude':110}) speed = 8 -> Option CQuick Check:
Correct keys + append() + speed = mission = [] mission.append({'latitude':34.0, 'longitude':-117.0, 'altitude':100}) mission.append({'latitude':34.1, 'longitude':-117.1, 'altitude':120}) mission.append({'latitude':34.2, 'longitude':-117.2, 'altitude':110}) speed = 8 [OK]
- Using add() instead of append()
- Missing altitude in waypoints
- Mixing key names inconsistently
