Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- serial = [x for x in range(32)]
- serial.reverse()
- class count:
- def __init__(self, on_message_change=None):
- self._message, self._on_message_change = 0, on_message_change
- @property
- def count(self):
- return self._message
- @count.setter
- def count(self, value):
- if self._on_message_change:
- self._on_message_change(self._message, value)
- self._message = value
- def unpack(l, ltypes=(list, tuple)):
- ltype = type(l)
- l = list(l)
- i = 0
- while i < len(l):
- while isinstance(l[i], ltypes):
- if not l[i]:
- l.pop(i)
- i -= 1
- break
- else:
- l[i:i + 1] = l[i]
- i += 1
- return ltype(l)
- class Node:
- #init
- def __init__(self, parent):
- print('New!')
- self.total_children = count()
- if parent != 'root':
- self.parent = parent
- self.level = self.parent.level + 1
- self.parent.total_children
- else:
- self.total_children.count += 1
- self.parent = None
- self.level = 0
- self.children = {'left':None,'right':None}
- self.id = serial.pop()
- print(self.id)
- self.data = 0
- self.total_children.count += 1
- def delete(self):
- if self.parent == None:
- return False
- else:
- for child in self.children:
- self.children[child].parent = self.parent
- return True
- def branch(self):
- for child in self.children:
- self.children[child] = Node(self)
- def find(self, level):
- nodes = []
- if self.level != level:
- for child in self.children:
- if self.children[child] :
- self.data = 1
- nodes.append(self.children[child].find(level))
- else:
- nodes.append(self)
- self.data = 2
- return unpack(nodes)
- def find_bottom(self, x=0):
- nodes = []
- for child in self.children:
- if self.children[child] == None:
- nodes.append(self)
- self.parent()
- else:
- nodes.append(self.children[child])
- self.find(self.level + 1)
- return unpack(nodes)
- def branch_at_bottom(self):
- for node in self.find_bottom():
- node.branch()
- def status_updated(self, old_value, new_value):
- print("status changed '%s' -> '%s'" % (old_value, new_value))
- self.parent.total_children.count = new_value
- def __call__(self):
- if parent:
- self.parent()
- else:
- return self.name+' Resumed'
- root = Node('root')
- root.branch()
- print(root.find_bottom())
- root.branch_at_bottom()
Advertisement
Add Comment
Please, Sign In to add comment