Advertisement
Guest User

Untitled

a guest
Oct 26th, 2016
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.90 KB | None | 0 0
  1. class BaseNode:
  2. def __init__(self):
  3. self.execResult = None
  4.  
  5. def execute(self):
  6. raise RuntimeError("Not implemented")
  7.  
  8. def result(self):
  9. if self.execResult == None:
  10. print("Executed= " + str(self))
  11. self.execResult = self.execute()
  12. else:
  13. print("From cache= " + str(self))
  14. return self.execResult
  15.  
  16. class LeafNode(BaseNode):
  17. def __init__(self, name, result):
  18. BaseNode.__init__(self)
  19. self.name = name
  20. self.oracleResult = result
  21.  
  22. def execute(self):
  23. return self.oracleResult
  24.  
  25. def __str__(self):
  26. return self.name
  27.  
  28. class NotNode(BaseNode):
  29. def __init__(self, child):
  30. BaseNode.__init__(self)
  31. self.child = child
  32.  
  33. def execute(self):
  34. return not self.child.result()
  35.  
  36. def __str__(self):
  37. return "Not: " + str(self.child)
  38.  
  39. class AndNode(BaseNode):
  40. def __init__(self, children):
  41. BaseNode.__init__(self)
  42. self.children = children
  43.  
  44. def execute(self):
  45. for node in self.children:
  46. if node.result() == False:
  47. return False
  48. return True
  49.  
  50. def __str__(self):
  51. return "And: ["+','.join(str(e) for e in self.children)+"]"
  52.  
  53. class OrNode(BaseNode):
  54. def __init__(self, children):
  55. BaseNode.__init__(self)
  56. self.children = children
  57.  
  58. def execute(self):
  59. for node in self.children:
  60. if node.result() == True:
  61. return True
  62. return False
  63.  
  64. def __str__(self):
  65. return "Or: ["+','.join(str(e) for e in self.children)+"]"
  66.  
  67. true_node_1 = LeafNode("true_node_1", True)
  68. true_node_2 = LeafNode("true_node_2", True)
  69. false_node_1 = LeafNode("false_node_1", False)
  70. some_false_and_node = AndNode([NotNode(true_node_2), true_node_1])
  71.  
  72. tree = OrNode([false_node_1, some_false_and_node, some_false_and_node, AndNode([true_node_1, true_node_2])])
  73.  
  74. print(tree.result())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement