Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Dexai Interview code
- # by Rio Liu
- def remove_expired(queue, current_time, expire_time):
- while len(queue) > 0 and current_time - queue[0] >= expire_time:
- del queue[0]
- def route_throttle(requests):
- drops = 0
- # (time, limit, queue)
- expire_counters = [
- (1, 3, []),
- (10, 20, []),
- (60, 60, [])
- ]
- index = 0;
- for req in requests:
- to_drop = False
- for counter in expire_counters:
- remove_expired(counter[2], req, counter[0])
- counter[2].append(req)
- if len(counter[2]) > counter[1]:
- to_drop = True
- if to_drop:
- drops += 1
- index += 1
- return drops
- requestTime = [1, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6, 7, 7, 7, 7, 11, 11, 11, 11 ]
- print(route_throttle(requestTime))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement