Advertisement
Guest User

Untitled

a guest
Jan 20th, 2019
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.21 KB | None | 0 0
  1.  
  2. def add_to_tree(e, t):
  3. if t == ():
  4. return (e, (), ())
  5. x, left, right = t
  6.  
  7. if x == e:
  8. return t
  9. elif e > x:
  10. return (x, left, add_to_tree(e, right))
  11. else:
  12. return (x, add_to_tree(e, left), right)
  13.  
  14.  
  15. def list_to_tree(L):
  16. t = ()
  17. for e in L:
  18. t = add_to_tree(e, t)
  19. return t
  20.  
  21. def tree_to_list(t):
  22. if t == ():
  23. return []
  24. x, left, right = t
  25. return tree_to_list(left) + [x] + tree_to_list(right)
  26.  
  27.  
  28.  
  29. def in_tree(e, t):
  30. if t == ():
  31. return False
  32. x, left, right = t
  33.  
  34. if x == e:
  35. return True
  36.  
  37. if e > x:
  38. return in_tree(e, right)
  39. else:
  40. return in_tree(e, left)
  41.  
  42. # add, __contains__, __or__,
  43.  
  44. class Set:
  45. def __init__(self, elems):
  46. self.tree = list_to_tree(elems)
  47.  
  48. def __str__(self):
  49. elems = tree_to_list(self.tree)
  50. napisy = map(str, elems)
  51. return '{' + ', '.join(napisy) + '}'
  52.  
  53. def add(self, e):
  54. self.tree = add_to_tree(e, self.tree)
  55.  
  56. def __contains__(self, e):
  57. return in_tree(e, self.tree)
  58.  
  59. def __iter__(self):
  60. return iter(tree_to_list(self.tree))
  61.  
  62. def __or__(self, y):
  63. new = Set(tree_to_list(self.tree))
  64. for e in y:
  65. new.add(e)
  66. return new
  67.  
  68. def innne_or(self, y):
  69. new = Set([])
  70. for e in self:
  71. new.add(e)
  72. for e in y:
  73. new.add(e)
  74. return new
  75.  
  76. def __len__(self):
  77. elems = tree_to_list(self.tree)
  78. return len(elems)
  79.  
  80. def __and__(self,other):
  81. elems = tree_to_list(self.tree)
  82. elems2 = tree_to_list(other.tree)
  83. n_elems = []
  84. for e in elems:
  85. if e in elems2:
  86. n_elems.append(e)
  87. return Set(n_elems)
  88.  
  89.  
  90.  
  91.  
  92. s1 = Set([1,5,4,2,7,7,99,11])
  93. s2 = set([2,4,6,8])
  94.  
  95. #for n in range(22,33):
  96. # s1.add(n)
  97.  
  98. print (s1)
  99.  
  100. #for i in [10,20,30]:
  101. # print (i, i in s1)
  102.  
  103. print (s1 | s2)
  104. print (s1)
  105. print(len(s1))
  106. s2 = Set([1,5,4,3,4,7,99,11,875])
  107. print("and:",s1 & s2)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement