Bird
Raised Fist0
LLDsystem_design~10 mins

Multiple elevator coordination in LLD - Interactive Code Practice

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to assign an elevator to a request based on the nearest elevator.

LLD
def assign_elevator(request_floor, elevators):
    nearest = None
    min_distance = float('inf')
    for elevator in elevators:
        distance = abs(elevator.current_floor - [1])
        if distance < min_distance:
            min_distance = distance
            nearest = elevator
    return nearest
Drag options to blanks, or click blank then click option'
Aelevators
Belevator.current_floor
Cmin_distance
Drequest_floor
Attempts:
3 left
💡 Hint
Common Mistakes
Using elevator.current_floor instead of request_floor causes zero distance always.
Using min_distance or elevators in distance calculation is incorrect.
2fill in blank
medium

Complete the code to update the elevator's direction after assigning a new target floor.

LLD
def update_direction(elevator, target_floor):
    if target_floor > elevator.current_floor:
        elevator.direction = [1]
    elif target_floor < elevator.current_floor:
        elevator.direction = 'down'
    else:
        elevator.direction = 'idle'
Drag options to blanks, or click blank then click option'
A'idle'
B'up'
C'down'
D'stop'
Attempts:
3 left
💡 Hint
Common Mistakes
Setting direction to 'idle' or 'down' incorrectly when target floor is higher.
Using undefined direction values.
3fill in blank
hard

Fix the error in the code that checks if an elevator can pick up a request on its way.

LLD
def can_pickup(elevator, request_floor):
    if elevator.direction == 'up' and elevator.current_floor <= [1] <= elevator.target_floor:
        return True
    elif elevator.direction == 'down' and elevator.target_floor <= [1] <= elevator.current_floor:
        return True
    return False
Drag options to blanks, or click blank then click option'
Arequest_floor
Belevator.current_floor
Celevator.target_floor
Delevator.direction
Attempts:
3 left
💡 Hint
Common Mistakes
Using elevator.current_floor or target_floor instead of request_floor in the condition.
Comparing direction as a floor number.
4fill in blank
hard

Fill both blanks to correctly update the elevator's target floors queue and direction after servicing a floor.

LLD
def service_floor(elevator, floor):
    if floor in elevator.target_floors:
        elevator.target_floors.remove([1])
    if not elevator.target_floors:
        elevator.direction = [2]
Drag options to blanks, or click blank then click option'
Afloor
B'idle'
C'stop'
Delevator.current_floor
Attempts:
3 left
💡 Hint
Common Mistakes
Removing elevator.current_floor instead of the serviced floor.
Setting direction to 'stop' which is not a valid state.
5fill in blank
hard

Fill all three blanks to implement a function that selects the best elevator for a request considering direction and distance.

LLD
def select_best_elevator(request_floor, elevators):
    best_elevator = None
    best_score = float('inf')
    for elevator in elevators:
        if elevator.direction == [1] and can_pickup(elevator, request_floor):
            score = abs(elevator.current_floor - [2])
        else:
            score = abs(elevator.current_floor - [3]) + 10
        if score < best_score:
            best_score = score
            best_elevator = elevator
    return best_elevator
Drag options to blanks, or click blank then click option'
A'up'
Brequest_floor
Celevator.target_floor
D'down'
Attempts:
3 left
💡 Hint
Common Mistakes
Using wrong direction string or floor variables in conditions.
Not adding penalty for elevators that cannot pick up.

Practice

(1/5)
1. What is the main goal of multiple elevator coordination in a building?
easy
A. To reduce wait and travel times for passengers
B. To increase the number of elevators in the building
C. To make elevators move randomly
D. To keep all elevators idle at the ground floor

Solution

  1. Step 1: Understand elevator coordination purpose

    Multiple elevator coordination aims to improve efficiency by reducing passenger wait and travel times.
  2. Step 2: Evaluate options based on goal

    Options B, C, and D do not focus on improving passenger experience or efficiency.
  3. Final Answer:

    To reduce wait and travel times for passengers -> Option A
  4. Quick Check:

    Goal of coordination = reduce wait/travel times [OK]
Hint: Focus on passenger experience improvement goals [OK]
Common Mistakes:
  • Confusing coordination with adding more elevators
  • Thinking elevators should stay idle
  • Assuming random movement improves service
2. Which of the following is a correct way to assign an elevator to a new request in a multiple elevator system?
easy
A. Always assign the elevator on the ground floor
B. Assign the elevator farthest from the request floor regardless of direction
C. Assign the elevator closest to the request floor moving in the same direction
D. Assign elevators randomly to balance usage

Solution

  1. Step 1: Understand assignment criteria

    Elevators should be assigned based on proximity and direction to minimize wait time.
  2. Step 2: Analyze options

    Assign the elevator closest to the request floor moving in the same direction matches this logic. Options A, B, and C ignore direction or proximity, causing inefficiency.
  3. Final Answer:

    Assign the elevator closest to the request floor moving in the same direction -> Option C
  4. Quick Check:

    Closest elevator + direction match = correct assignment [OK]
Hint: Match elevator direction and proximity for assignment [OK]
Common Mistakes:
  • Ignoring elevator direction when assigning
  • Choosing elevators randomly
  • Always picking ground floor elevator
3. Consider a system with 2 elevators: Elevator A at floor 3 moving up with destinations [5, 7], Elevator B at floor 6 moving down with destinations [4, 2]. A request comes from floor 4 to go up. Which elevator should be assigned?
medium
A. Neither elevator
B. Elevator B
C. Either elevator
D. Elevator A

Solution

  1. Step 1: Analyze elevator positions and directions

    Elevator A is at floor 3 going up; Elevator B is at floor 6 going down.
  2. Step 2: Match request direction and elevator direction

    Request is at floor 4 going up. Elevator A is below floor 4 and moving up, so it can pick up on the way. Elevator B is above floor 4 but moving down, so it cannot pick up going up.
  3. Final Answer:

    Elevator A -> Option D
  4. Quick Check:

    Elevator moving towards request floor in same direction = Elevator A [OK]
Hint: Pick elevator moving towards request floor in same direction [OK]
Common Mistakes:
  • Choosing elevator moving away from request
  • Ignoring elevator direction
  • Assuming either elevator works
4. In a multiple elevator system, the controller assigns requests but sometimes an elevator gets stuck and does not update its position. What is the likely problem and how to fix it?
medium
A. Elevator state not updated; add regular position updates and health checks
B. Elevator hardware failure; replace elevator immediately
C. Controller assigns requests randomly; fix assignment logic
D. Elevator doors stuck open; fix door sensors

Solution

  1. Step 1: Identify cause of stuck elevator in system

    If elevator position is not updated, controller cannot assign requests properly.
  2. Step 2: Determine fix

    Adding regular position updates and health checks ensures controller has current elevator status to assign requests correctly.
  3. Final Answer:

    Elevator state not updated; add regular position updates and health checks -> Option A
  4. Quick Check:

    Missing updates cause stuck state; fix with health checks [OK]
Hint: Ensure elevator regularly reports position to controller [OK]
Common Mistakes:
  • Assuming hardware failure without checking software updates
  • Blaming random assignment logic
  • Ignoring elevator state updates
5. You are designing a multiple elevator coordination system for a 20-floor building with 4 elevators. To minimize average wait time during peak hours, which strategy is best?
hard
A. Assign elevators randomly to requests to balance load
B. Divide floors into zones and assign elevators to zones dynamically
C. Let all elevators serve all floors equally without zoning
D. Keep all elevators idle at ground floor until called

Solution

  1. Step 1: Understand peak hour challenges

    High traffic causes many requests; serving all floors equally can cause delays and conflicts.
  2. Step 2: Evaluate zoning strategy

    Dividing floors into zones and assigning elevators reduces travel distance and wait time by localizing service.
  3. Step 3: Compare other options

    Random assignment or no zoning causes inefficiency; keeping elevators idle wastes capacity.
  4. Final Answer:

    Divide floors into zones and assign elevators to zones dynamically -> Option B
  5. Quick Check:

    Zoning elevators reduces wait time in tall buildings [OK]
Hint: Use zoning to reduce travel distance and wait time [OK]
Common Mistakes:
  • Ignoring zoning benefits in tall buildings
  • Assuming random assignment balances load
  • Keeping elevators idle wastes capacity