From 416aacc6f6e4ee8a988406ad4a5bc4fa69136564 Mon Sep 17 00:00:00 2001 From: raylu Date: Mon, 22 Feb 2016 19:11:39 -0800 Subject: handle multiple elevators --- elevator.py | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) (limited to 'elevator.py') diff --git a/elevator.py b/elevator.py index 9469c9a..eec0b44 100755 --- a/elevator.py +++ b/elevator.py @@ -30,10 +30,10 @@ class ElevatorControlSystem: def step(self): # serve pickup requests free_elevators = list(filter(lambda e: e.goal is None, self.elevators.values())) - if free_elevators: - for floor, direction in self.pickup_requests: - elevator = min(free_elevators, key=lambda e: abs(e.floor - floor)) - elevator.goal = floor + while free_elevators and self.pickup_requests: + floor, direction = self.pickup_requests.pop(0) + elevator = min(free_elevators, key=lambda e: abs(e.floor - floor)) + elevator.goal = floor # move elevators to requested floors for elevator in self.elevators.values(): @@ -47,7 +47,7 @@ class ElevatorControlSystem: elevator.goal = None if __name__ == '__main__': - ecs = ElevatorControlSystem(1) + ecs = ElevatorControlSystem(2) print(ecs.elevators) print('requesting pickup on floor 2 down') @@ -55,7 +55,16 @@ if __name__ == '__main__': ecs.step() print(ecs.elevators) - print('requesting dropoff on floor 1') + print('requesting dropoff on floor 1 and pickup on floor 1 up') ecs.dropoff(0, 1) + ecs.pickup(1, Direction.UP) + ecs.step() + print(ecs.elevators) + + print('requesting dropoff on floor 3') + ecs.dropoff(1, 3) + ecs.step() + print(ecs.elevators) + ecs.step() print(ecs.elevators) -- cgit v1.2.3