我想在Python中对布尔表达式进行相当专门的转换。基本上,我希望我的表达式只包含正文字,例如:
而不是:
AND(~A, B, ~C, D)
我想要:
AND(B, D, NOR(A, C))
我有什么想法可以做到这一点?我尝试过使用Python EDA,但无济于事。
这个用例是我想在将它放入数据库之前简化一个复杂的布尔表达式。
编辑1:
想出了我自己不太优雅的解决方案:
使用PyEDA从输入中形成表达式,PyEDA仅使用AND,OR和NOT自动简化它。
If AND(Not(A), Not(B) ...): Change to NOR(A, B ...) If OR(Not(A), Not(B) ...): Change to NAND(A, B ...) IF AND(Not(A), B ...): Change to AND(B, NOR(A ...)) IF OR(Not(A), B ...): Change to OR(B, NAND(A ...))
你得到了一般的想法。正如我所说,有点啰嗦,但这是我能想到的最好的解决方案。我是从记忆中写的,所以请告诉我,如果我弄错了!此外,我的数据库处理一个AND / OR等,其中包含一个文字,因此这不是问题。