Bloomberg | Video | New Grad SWE (London)
Anonymous User
2490

Given a Subway system where the customer can swipe in his card to check in and swipe out his card to check out at destination station, get the average time needed to travel between any 2 stations. and I should save customer Id, create swipeIn and swipeOut functions and another to get the average

class Passenger:
   
    def __init__(self):
        self.tap_in_time = None
       
passengers = {}
time_increments = []


def tapIn( cardId, station, time ):
    if cardId in passengers:
        passengers[cardId].tap_in_time = (station, time)
    else:
        passengers[cardId] = Passenger()
        passengers[cardId].tap_in_time = (station, time)
   

def tapOut( cardId, station, time ):
    tap_station, tap_time = passengers[cardId].tap_in_time
    time_increment = time-tap_time
    time_increments.append((tap_station, station, time_increment))

def getAverage( startStation, endStation ):
   
    prev_average = 0
    prev_quantity = 0
   
    for (tap_in_station, tap_out_station, times) in time_increments:
       
        if tap_in_station == startStation and tap_out_station == endStation:
           
            new_quantity = prev_quantity+1
           
            new_average = ((prev_average * prev_quantity) + times)/new_quantitiy
           
            prev_average = new_average
            prev_quantity = new_quantitiy
   
    return prev_average
       
   
   
def __main__:
    tapIn( 4000, "A", t0)
    tapIn( 5000, "C", t1 )
    tapIn( 6000, "A", t2 )
    tapOut( 4000, "D", t3)
    tapOut( 5000, "E", t4 )
    tapIn( 7000, "R", t5 )
    tapOut( 6000, "X", t6 )
    tapOut( 7000, "X", t7 )
    ..
    ..
    ..
    ..
   
    getAverage( startStation, endStation )
   
	tapOut( 4000, "D", t13)
    tapOut( 5000, "E", t14 )
    tapIn( 7000, "R", t15 )
    tapOut( 6000, "X", t16 )
    tapOut( 7000, "X", t17 )
   
	getAverage( startStation, endStation )
Comments (4)