Guest User

Untitled

a guest
Jun 20th, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.27 KB | None | 0 0
  1. class RequestHistory(object):
  2. def __init__(self, size=10):
  3. self.size = size
  4. self.modulus = self.size + 1
  5. self.history = [''] * (self.modulus)
  6. self.base = 0
  7. self.top = 1
  8.  
  9. def is_empty(self):
  10. return self.base == self.decrement(self.top)
  11.  
  12. def peek(self):
  13. if self.is_empty():
  14. return None
  15. else:
  16. return self.history[self.decrement(self.top)]
  17.  
  18. def push(self, request):
  19. self.history[self.top] = request
  20. if self.top == self.base:
  21. self.base = self.increment(self.base)
  22. self.top = self.increment(self.top)
  23.  
  24. def pop(self):
  25. index = self.decrement(self.top)
  26. if self.is_empty():
  27. return None
  28. self.top = index
  29. return self.history[self.top]
  30.  
  31. def export_history(self):
  32. h = []
  33. i = self.increment(self.base)
  34. while i != self.top:
  35. h.append(self.history[i])
  36. i = self.increment(i)
  37. h.append(self.history[i])
  38. return h
  39.  
  40. def import_history(self, history):
  41. for request in history:
  42. self.push(request)
  43.  
  44. def increment(self, number):
  45. return (number + 1) % self.modulus
  46.  
  47. def decrement(self, number):
  48. return (number - 1) % self.modulus
Add Comment
Please, Sign In to add comment