Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import random
- class Passenger():
- def __init__(self, target_floor = 0, waiting_time = 0):
- self.target_floor = random.randint(1,11)
- self.waiting_time = waiting_time
- class Building():
- def __init__(self, num_elevator = 2, num_floor = 10, non_empty_floors = []):
- self.num_elevator = num_elevator
- self.num_floor = num_floor
- self.passengers_on_each_floor = [[]]*self.num_floor
- self.non_empty_floors = non_empty_floors
- def new_passenger(self):
- floor = random.randint(1,11)
- number_of_passengers = 1
- for i in range(number_of_passengers):
- new_passenger = Passenger()
- self.passengers_on_each_floor[floor-1].append(new_passenger)
- def update_non_empty_floors(self):
- self.non_empty_floors = []
- for i in range(0, len(self.passengers_on_each_floor)):
- floors = self.passengers_on_each_floor[i]
- if floors != []:
- self.non_empty_floors.append (i+1)
- class Elevator():
- def __init__(self, current_floor = 0, direction = 1, maxpassenger = 10 ,next_floor = 0):
- self.current_floor = current_floor
- self.next_floor = next_floor
- self.direction = direction
- self.maxpassenger = maxpassenger
- self.passengers = []
- self.target_floor = our_building.non_empty_floors
- # Checking for target floors
- def Target(self):
- if self.direction == 1:
- potential_targets = []
- for i in self.target_floor:
- if i > self.current_floor:
- potential_targets.append(i)
- self.next_floor = min(potential_targets)
- if self.direction == -1:
- potential_targets = []
- for i in self.target_floor:
- if i < self.current_floor:
- potential_targets.append(i)
- self.next_floor = max(potential_targets)
- # Moving the elevator to the target floors
- def Move(self):
- self.current_floor = self.next_floor
- # Unloading the passengers from the elevator to their target floors
- def Unload(self):
- for passenger in self.passengers:
- if passenger.target_floor == self.current_floor:
- self.passengers.pop(passenger)
- # Loading the elevator from target floors to elevator
- def Load(self):
- passengers_on_current_floor = our_building.passengers_on_each_floor[self.current_floor -1]
- for passenger in passengers_on_current_floor:
- if len(self.passengers) < self.maxpassenger:
- our_building.passengers_on_each_floor[self.current_floor-1].remove(passenger)
- self.passengers.append(passenger)
Add Comment
Please, Sign In to add comment