def test_expression_tree_populate_lookup_doctest() -> None: """Test ExprTree.populate_lookup on the provided doctest""" expr_t = ExprTree('a', []) look_up = {} expr_t.populate_lookup(look_up) assert look_up['a'] == 0 assert len(look_up) == 1
def test_expression_tree_eval_doctest() -> None: """Test ExprTree.eval on the provided doctest""" exp_t = ExprTree('+', [ExprTree(3, []), ExprTree('*', [ExprTree('x', []), ExprTree('y', [])]), ExprTree('x', [])]) look_up = {} exp_t.populate_lookup(look_up) assert exp_t.eval(look_up) == 3 look_up['x'] = 7 look_up['y'] = 3 assert exp_t.eval(look_up) == 31
def __init__(self, tree: ExprTree, target: int) -> None: """ Create a new expression tree puzzle given the provided expression tree and the target value. The variables are initialized using the tree's populate_lookup method. >>> puz = ExpressionTreePuzzle(ExprTree('a', []), 4) >>> puz.variables == {'a': 0} True >>> puz.target 4 """ self.variables = {} tree.populate_lookup(self.variables) self._tree = tree self.target = target