Advertisement
jonksar

RNGTree

May 3rd, 2016
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.43 KB | None | 0 0
  1. import hashlib
  2. import random
  3. import encodings
  4.  
  5. class Node:
  6.     def __init__(self, parent=None, children=[]):
  7.         self.parent = parent
  8.         self.children = children
  9.         self.info = None
  10.         self.name = random.randint(100000,999999)
  11.  
  12.     def isLeaf(self):
  13.         return self.children is None
  14.  
  15.     def assign_parent(self, parent):
  16.         self.parent = parent
  17.  
  18.     def __str__(self):
  19.         return 'node name: ' + str(self.name) + '     ' + str(self.info) + '    # children: ' + str(len(self.children))\
  20.                + '   parents: ' + str(self.parent)
  21.  
  22.  
  23. class Tree:
  24.     def __init__(self):
  25.         self.root = Node()
  26.  
  27.     def add_node(self, parent, node):
  28.         node.assign_parent(parent)
  29.         parent.children.append(node)
  30.  
  31. class RNGTree(Tree):
  32.     def __init__(self, seed=42):
  33.         #self.rng = random.Random(seed)
  34.         super(RNGTree, self).__init__()
  35.         self.hash = lambda x: hashlib.md5(x.encode()).hexdigest()
  36.         self.root.info = {'value': self.hash(str(seed))}
  37.  
  38.  
  39.     def add(self, parent, id):
  40.         n = Node()
  41.         n.info = {'value': self.hash(str(parent.info['value'] * id))}
  42.         self.add_node(parent, n)
  43.  
  44.     def __str__(self):
  45.         res = []
  46.         res.append(str(self.root))
  47.         for child in self.root.children:
  48.             res.append(str(child))
  49.  
  50.         return '\n'.join(res)
  51.  
  52.  
  53. t = RNGTree()
  54.  
  55. for i in range(3):
  56.     t.add(t.root, i)
  57.  
  58. print(t)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement