Last active
July 11, 2019 19:53
-
-
Save kf4x/29f5e3cf9d509eccdc1bd61c545f4077 to your computer and use it in GitHub Desktop.
A little example of beginning to think about approaching a elevator in building problem.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Building(object): | |
"""Building | |
has many Elevators | |
has many Floors | |
""" | |
def __init__(self, floors, elevators): | |
super(Building, self).__init__() | |
self.total_floors = floors | |
self.floors = [Floor(a) for a in range(floors)] | |
self.elevators = [Elevator(a) for a in range(elevators)] | |
def get_elevator(self): | |
return self.elevators[0] | |
def get_nearest(self, current_floor): | |
array = sorted(self.elevators, reverse=True, key=lambda x: current_floor-x.current_floor) | |
return array[0] | |
class Floor(object): | |
"""docstring for Floor""" | |
def __init__(self, number = 0): | |
super(Floor, self).__init__() | |
self.name = "name" | |
self.number = number | |
self.elevator = None | |
def contains_elevator(self): | |
return True if self.elevator != None else False | |
def set_elevator(self, elevator): | |
self.elevator = elevator | |
def remove_elevator(self): | |
self.elevator = None | |
class Elevator(object): | |
"""Elevator | |
""" | |
def __init__(self, number): | |
super(Elevator, self).__init__() | |
self.number = number | |
self.current_floor = 0 | |
self.direction = 0 #0 = down, 1 = up | |
def go(self, floor): | |
self.direction = 1 if floor >= self.current_floor else 0 | |
curr = self.current_floor | |
for x in xrange(curr, floor): | |
self.current_floor = x | |
print("Move to ", x+1) | |
def main(): | |
bldg = Building(5, 2) | |
el = bldg.get_elevator() | |
el.go(4) | |
n_el = bldg.get_nearest(5) | |
print(n_el.current_floor) | |
if __name__ == '__main__': | |
main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment