Bird
Raised Fist0
Drone Programmingprogramming~20 mins

Formation flying basics in Drone Programming - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Formation Flying Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
What is the output of this drone formation position update?
Consider a drone formation where each drone updates its position based on the leader's position plus an offset. What will be the new position of drone B after running the code?
Drone Programming
leader_position = (10, 20)
drone_offsets = {'A': (0, 0), 'B': (5, -3), 'C': (-4, 2)}
new_positions = {drone: (leader_position[0] + offset[0], leader_position[1] + offset[1]) for drone, offset in drone_offsets.items()}
print(new_positions['B'])
A(15, 23)
B(5, 17)
C(15, 17)
D(10, 20)
Attempts:
2 left
💡 Hint
Add the leader's x and y to the drone's offset x and y respectively.
🧠 Conceptual
intermediate
1:30remaining
Which formation pattern is represented by these relative positions?
Given the relative positions of drones from the leader as: {'A': (0, 0), 'B': (5, 0), 'C': (10, 0), 'D': (15, 0)}, what formation shape do they form?
ALine formation
BV formation
CDiamond formation
DSquare formation
Attempts:
2 left
💡 Hint
Look at the y-coordinates of all drones.
🔧 Debug
advanced
2:30remaining
Why does this formation update code raise an error?
This code is intended to update drone positions but raises an error. Identify the cause.
Drone Programming
leader_pos = (10, 10)
drone_offsets = {'A': (1, 2), 'B': (3, 4)}
new_positions = {drone: (leader_pos[0] + offset[0], leader_pos[1] + offset[1]) for drone, offset in drone_offsets.items()}
print(new_positions)
ASyntaxError due to incorrect dictionary comprehension syntax
BTypeError because of adding tuple and int
CKeyError because 'leader_pos' key missing
DNo error, outputs correct positions
Attempts:
2 left
💡 Hint
Check the placement of commas and parentheses in the dictionary comprehension.
📝 Syntax
advanced
2:00remaining
Which option correctly defines a function to calculate drone formation positions?
Select the correct function syntax that takes leader position and offsets dict, and returns new positions dict.
A
def calc_positions(leader, offsets):
    return {d: leader[0] + o[0], leader[1] + o[1] for d, o in offsets.items()}
B
def calc_positions(leader, offsets):
    return {d: (leader[0] + o[0]) + (leader[1] + o[1]) for d, o in offsets.items()}
C
def calc_positions(leader, offsets):
    return {d: leader[0] + o[0] + leader[1] + o[1] for d, o in offsets.items()}
D
def calc_positions(leader, offsets):
    return {d: (leader[0] + o[0], leader[1] + o[1]) for d, o in offsets.items()}
Attempts:
2 left
💡 Hint
Remember to return a tuple for each drone's position.
🚀 Application
expert
3:00remaining
How many drones are in formation after this update?
Given the code below, how many drones have updated positions stored in new_positions?
Drone Programming
leader = (0, 0)
drone_offsets = {'A': (1, 1), 'B': (2, 2), 'C': (3, 3), 'D': (4, 4)}
new_positions = {}
for drone, offset in drone_offsets.items():
    if offset[0] + offset[1] > 4:
        new_positions[drone] = (leader[0] + offset[0], leader[1] + offset[1])
print(len(new_positions))
A3
B2
C1
D4
Attempts:
2 left
💡 Hint
Sum the x and y offsets and check which are greater than 4.

Practice

(1/5)
1. What is the main purpose of formation flying in drone programming?
easy
A. To make drones move together in set positions
B. To make drones fly randomly
C. To make drones land immediately
D. To make drones avoid flying

Solution

  1. Step 1: Understand formation flying concept

    Formation flying means drones keep specific positions relative to each other.
  2. Step 2: Identify the main goal

    The goal is to move drones together in a planned pattern, not randomly or to stop flying.
  3. Final Answer:

    To make drones move together in set positions -> Option A
  4. Quick Check:

    Formation flying = moving together [OK]
Hint: Formation flying means drones move together [OK]
Common Mistakes:
  • Thinking drones fly randomly
  • Confusing formation flying with landing
  • Assuming drones avoid flying
2. Which of the following is the correct way to represent a drone's position in a formation list in Python?
easy
A. drone_positions = 0, 0, 1, 1, 2, 2
B. drone_positions = {0, 0, 1, 1, 2, 2}
C. drone_positions = [(0, 0), (1, 1), (2, 2)]
D. drone_positions = '0,0;1,1;2,2'

Solution

  1. Step 1: Identify correct data structure for positions

    Positions are pairs of coordinates, best stored as tuples inside a list.
  2. Step 2: Check each option

    drone_positions = [(0, 0), (1, 1), (2, 2)] uses a list of tuples, which is correct. Others use sets, strings, or invalid formats.
  3. Final Answer:

    drone_positions = [(0, 0), (1, 1), (2, 2)] -> Option C
  4. Quick Check:

    Positions as list of tuples = drone_positions = [(0, 0), (1, 1), (2, 2)] [OK]
Hint: Use list of tuples for positions [OK]
Common Mistakes:
  • Using sets instead of lists
  • Using strings instead of coordinate pairs
  • Not grouping coordinates as tuples
3. What will be the output of this code snippet?
positions = [(0,0), (1,1), (2,2)]
for i, pos in enumerate(positions):
    print(f"Drone {i} flies to {pos}")
medium
A. Drone 1 flies to (0, 0) Drone 2 flies to (1, 1) Drone 3 flies to (2, 2)
B. Drone 0 flies to (0, 0) Drone 1 flies to (1, 1) Drone 2 flies to (2, 2)
C. Drone 0 flies to 0 Drone 1 flies to 1 Drone 2 flies to 2
D. Error: enumerate() not defined

Solution

  1. Step 1: Understand enumerate usage

    enumerate gives index and value from the list; here index is drone number, value is position tuple.
  2. Step 2: Trace the loop output

    For i=0, pos=(0,0); i=1, pos=(1,1); i=2, pos=(2,2). The print statement formats these correctly.
  3. Final Answer:

    Drone 0 flies to (0, 0) Drone 1 flies to (1, 1) Drone 2 flies to (2, 2) -> Option B
  4. Quick Check:

    enumerate index + position tuple = Drone 0 flies to (0, 0) Drone 1 flies to (1, 1) Drone 2 flies to (2, 2) [OK]
Hint: enumerate gives index and item together [OK]
Common Mistakes:
  • Starting drone count at 1 instead of 0
  • Printing only numbers, not tuples
  • Assuming enumerate is undefined
4. Identify the error in this code for sending commands to drones:
drones = ['D1', 'D2', 'D3']
positions = [(0,0), (1,1), (2,2)]
for i in range(len(drones)):
    print(f"Send {drones[i]} to position {positions}")
medium
A. print statement missing parentheses
B. drones list is empty
C. range(len(drones)) is invalid syntax
D. positions should be positions[i] to get each drone's position

Solution

  1. Step 1: Check loop and indexing

    Loop correctly iterates over drone indices, but positions is printed as whole list, not single position.
  2. Step 2: Fix position indexing

    Use positions[i] to get the matching position for each drone.
  3. Final Answer:

    positions should be positions[i] to get each drone's position -> Option D
  4. Quick Check:

    Match drone with single position = positions should be positions[i] to get each drone's position [OK]
Hint: Index positions with i to match drones [OK]
Common Mistakes:
  • Printing whole positions list each time
  • Assuming range(len(drones)) is wrong
  • Forgetting to index positions
5. You want to program a formation where drones fly in a V shape. Which code snippet correctly assigns positions for 5 drones in this formation?
hard
A. positions = [(-2,2), (-1,1), (0,0), (1,1), (2,2)]
B. positions = [(0,0), (0,1), (0,2), (0,3), (0,4)]
C. positions = [(1,1), (2,2), (3,3), (4,4), (5,5)]
D. positions = [(0,0), (-1,-1), (-2,-2), (-3,-3), (-4,-4)]

Solution

  1. Step 1: Understand V shape coordinates

    A V shape has drones spread left and right diagonally from center (0,0).
  2. Step 2: Check each option's pattern

    positions = [(-2,2), (-1,1), (0,0), (1,1), (2,2)] has symmetric positions left and right diagonally, forming a V. Others are straight lines or one-sided.
  3. Final Answer:

    positions = [(-2,2), (-1,1), (0,0), (1,1), (2,2)] -> Option A
  4. Quick Check:

    V shape = symmetric diagonal positions [OK]
Hint: V shape means symmetric diagonal positions [OK]
Common Mistakes:
  • Choosing straight line positions
  • Not centering the formation
  • Using only positive or negative coordinates
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard