一个人如何比较两个后缀标记的表达式的等效性?
在最简单的示例中,foo(a,b)返回True
a = [3, 5, 'MUL']
b = [5, 3, 'MUL']
foo()
在python中会是什么样?我认为一种方法是评估两个表达式并以某种方式对其进行规范化。我希望这是一个定义明确的过程,但尚未找到它。
编辑1:
这是一个措辞不佳的问题。我将尝试使用更好/更多的示例,并感谢您在我尝试清晰,准确地提出问题时的耐心等待。
expr1 = [a, b, 'MUL']
expr2 = [b, a, 'MUL']
OR
expr1 = [a, b, 1, 'ADD', 'MUL']
expr2 = [a, b, 'MUL', a, 'ADD']
答案 0 :(得分:0)
因为您已经具有后缀评估。然后,您将拥有这样的东西。
foo(a,b):
res_a = postfix(a)
res_b = postfix(b)
if res_a = res_b:
return True
return False
我认为这是您正在寻找的最简单的解决方案?
答案 1 :(得分:0)
在这里,我尝试了一种解决方案,它可以解决问题,如果您有更多选择,可以添加:
a = [3, 5, 'MUL']
b = [5, 3, 'MUL']
def postfix_calc(value, z):
return {
'MUL': lambda c: a[0]*a[1],
'ADD': lambda c: a[0]+a[1],
'SUB': lambda c: a[0]-a[1],
'DIV': lambda c: a[0]/a[1]
}.get(value)(z)
def foo(x, y):
val1 = postfix_calc(x[2], x)
val2 = postfix_calc(y[2], y)
if val1 == val2:
return True
else:
return False
print(foo(a,b))