Skip to content

Instantly share code, notes, and snippets.

@kf4x
Last active July 11, 2019 19:53
Show Gist options
  • Save kf4x/29f5e3cf9d509eccdc1bd61c545f4077 to your computer and use it in GitHub Desktop.
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.
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