diff options
-rwxr-xr-x | elevator.py | 21 |
1 files changed, 15 insertions, 6 deletions
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) |