Elevator movements simulation
# Simulates the movements of an elevator.
#! /usr/bin/python3
WEIGHT_LIMIT = 400
PASSENGER_LIMIT = 4
class Elevator():
def __init__( self, weightLimit, passengerLimit ):
self.weightLimit = weightLimit
self.passengerLimit = passengerLimit
self.passengers = []
self.initStop = 0
self.route = []
self.currentWeight = 0
self.currentPassengers = 0
self.currentStop = 0
self.totalMoves = 0
def __str__(self):
o2s = str()
for p in self.passengers:
o2s += '{' + str( p.weight ) + ', '
+ str( p.stop ) + '}, '
return o2s
def setPassengers( self, passengers ):
self.passengers = passengers
def setInitStop( self, initStop ):
self.initStop = initStop
self.currentStop = initStop
def move( self, passenger, stop ):
floorsDelta = 0
print("tm={0}".format(self.totalMoves))
if self.currentStop < stop:
while stop > self.currentStop:
if floorsDelta > 0:
print("UP/ etage={0}".format(self.currentStop))
self.currentStop += 1
floorsDelta += 1
elif self.currentStop > stop:
while stop <= self.currentStop:
if floorsDelta > 0:
print("DOWN/ etage={0}".format(self.currentStop))
self.currentStop -= 1
floorsDelta += 1
self.totalMoves += 1
self.passengers.remove( passenger )
print( "move/moves={0}, passengers={1}".format( self.totalMoves,
self.__str__() ) )
def serve( self ):
print("init/ passengers={0}".format(self.__str__()))
while len(self.passengers) > 0:
for p in self.passengers:
self.move( p, p.stop )
class Passenger():
def __init__( self, weight, stop ):
self.weight = weight
self.stop = stop
p0 = Passenger( 110, 2 )
p1 = Passenger( 80, 4 )
p2 = Passenger( 90, 3 )
p3 = Passenger( 130, 1 )
passengers = [ p0, p1, p2, p3 ]
stops = [ 0, 1, 3, 2 ]
e = Elevator( WEIGHT_LIMIT, PASSENGER_LIMIT )
if __name__ == '__main__':
e.setPassengers( passengers )
e.setInitStop( 0 )
for p in passengers:
e.route.append( p.stop )
e.serve()