Advertisement
Rio6

Untitled

Nov 17th, 2020
471
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.86 KB | None | 0 0
  1. # Dexai Interview code
  2. # by Rio Liu
  3. def remove_expired(queue, current_time, expire_time):
  4. while len(queue) > 0 and current_time - queue[0] >= expire_time:
  5. del queue[0]
  6.  
  7. def route_throttle(requests):
  8. drops = 0
  9.  
  10. # (time, limit, queue)
  11. expire_counters = [
  12. (1, 3, []),
  13. (10, 20, []),
  14. (60, 60, [])
  15. ]
  16.  
  17. index = 0;
  18. for req in requests:
  19. to_drop = False
  20. for counter in expire_counters:
  21. remove_expired(counter[2], req, counter[0])
  22.  
  23. counter[2].append(req)
  24.  
  25. if len(counter[2]) > counter[1]:
  26. to_drop = True
  27.  
  28. if to_drop:
  29. drops += 1
  30.  
  31. index += 1
  32.  
  33. return drops
  34.  
  35.  
  36. 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 ]
  37. print(route_throttle(requestTime))
  38.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement