Design: Elevator Control System
Design the elevator control logic focusing on state transitions and request handling. Out of scope: physical elevator mechanics and hardware details.
Functional Requirements
Non-Functional Requirements
Jump into concepts and practice - no test required
+---------------------+
| Elevator Controller |
+----------+----------+
|
+---------v---------+
| State Machine |
+---------+---------+
|
+---------v---------+
| Request Queue |
+---------+---------+
|
+---------v---------+
| Motor & Door Ctrl |
+-------------------+Idle -> Moving Up -> Door Open correctly shows Idle -> Moving Up -> Door Open, a valid transition sequence.callElevator(), arriveFloor(), openDoor()?
states = ['Idle', 'Moving', 'DoorOpen']
current_state = 'Idle'
def callElevator():
global current_state
if current_state == 'Idle':
current_state = 'Moving'
def arriveFloor():
global current_state
if current_state == 'Moving':
current_state = 'DoorOpen'
def openDoor():
global current_state
if current_state == 'DoorOpen':
current_state = 'Idle'current_state = 'Idle'
def callElevator():
global current_state
if current_state == 'Idle':
current_state = 'Moving'
def arriveFloor():
global current_state
if current_state == 'Moving':
current_state = 'Idle' # Bug here
def openDoor():
global current_state
if current_state == 'DoorOpen':
current_state = 'Idle'