将布尔表达式转换为仅具有正文字

时间:2014-08-02 15:52:36

标签: python boolean-expression

我想在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等,其中包含一个文字,因此这不是问题。

0 个答案:

没有答案