Feat: Expression can be generated randomly!!!

This commit is contained in:
2019-05-16 17:21:34 +02:00
parent ca33a00877
commit fbe72ae764
3 changed files with 64 additions and 14 deletions

View File

@@ -31,6 +31,7 @@ def look_for_rdleaf(target):
except TypeError:
target_ = target
stacking = False
try:
while True:
tok = yield

View File

@@ -11,7 +11,7 @@ Tree class
from .tree_tools import to_nested_parenthesis, postfix_concatenate, show_tree
from .coroutine import coroutine, STOOOP
from .str2 import str2
from .str2 import str2, rdstr2
from .operator import OPERATORS, is_operator
__all__ = ["Tree", "MutableTree"]
@@ -51,7 +51,7 @@ class Tree:
self.right_value = right_value
@classmethod
def from_str(cls, expression, convert_to_mo=True):
def from_str(cls, expression, convert_to_mo=True, random=False):
""" Initiate a tree from an string expression
:example:
@@ -77,9 +77,17 @@ class Tree:
> *
| > 3
| > n
>>> t = Tree.from_str("2+{n}*x", random=True)
>>> print(t)
+
> 2
> *
| > {n}
| > x
"""
t = MutableTree.from_str(expression, convert_to_mo)
t = MutableTree.from_str(expression, convert_to_mo, random)
return cls.from_any_tree(t)
@classmethod
@@ -890,7 +898,7 @@ class MutableTree(Tree):
self.right_value = right_value
@classmethod
def from_str(cls, expression, convert_to_mo=True):
def from_str(cls, expression, convert_to_mo=True, random=False):
""" Initiate the MutableTree
:example:
@@ -948,8 +956,12 @@ class MutableTree(Tree):
| > x
"""
str_2_mut_tree = str2(cls.sink, convert_to_mo)
return str_2_mut_tree(expression)
if random:
str_2_mut_tree = rdstr2(cls.sink)
return str_2_mut_tree(expression)
else:
str_2_mut_tree = str2(cls.sink, convert_to_mo)
return str_2_mut_tree(expression)
@classmethod
@coroutine