def __init__(self, label, children):
     Tree.__init__(self, label, children)
     if len(children) > 1:
         self.max_depth = max([child.max_depth for child in children]) + 1
         self.length = sum([child.length for child in children])
     else:
         self.max_depth = 0
         self.length = 1
Example #2
0
 def __init__(self, node, children=None):
     NLTKTree.__init__(self, node, children)
     self.num_subtrees = {}
     self.path_to_leaves = {}
     self.path_to_nodes = {}
     self.path_to_inner_nodes = {}
     self.path_to_inner_nodes_indices = {}
     # Pre-cache leaves lazily. These attributes will be set when needed.
     self.path_to_leaves_indices = None
     self.path_to_num_leaves = None
     self._leaves_cached = None
     self._leaf_to_index = None
Example #3
0
 def __init__(self, length, operators, digits):
     if length < 1: print 'whatup?'
     if length == 1:
         Tree.__init__(self, 'digit', [random.choice(digits)])
     else:
         left = random.randint(1, length - 1)
         right = length - left
         children = [
             mathExpression(l, operators, digits) for l in [left, right]
         ]
         operator = random.choice(operators)
         children.insert(1, Tree('operator', [operator]))
         Tree.__init__(self, operator, children)
Example #4
0
 def __init__(self, length, operators, digits):
     answer = [None]
     while answer[0] not in voc:
         tree = mathExpression(length, operators, even)
         answer = Tree('digit', [str(tree.solve())])
     Tree.__init__(self, 'is', [tree, Tree('operator', ['is']), answer])