首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SAT验证器python

SAT验证器python
EN

Stack Overflow用户
提问于 2017-02-03 18:16:59
回答 1查看 148关注 0票数 1

我使用的是python和Sympy。

我有以下格式的规则:Or(x,And(y,z))。不幸的是,Sympy subsxreplace函数没有提供足够快的实现来验证x=False、y=True和z=True是否满足上述规则。

我如何有效地将这个表达式转换到其他库中,无论这个赋值是否满足规则,给定x,y,z和一个我将获得True/False的规则?

EN

回答 1

Stack Overflow用户

发布于 2017-02-03 18:21:59

在纯python中,您可以通过两种方式(使用x=True/False, y=True/False, z=True/False)来完成此操作:

代码语言:javascript
复制
x or (y and z)

或(作为0 == False, 1 == True):

代码语言:javascript
复制
x | (y & z)

然后,您可以使用以下命令遍历所有组合:

代码语言:javascript
复制
from itertools import product

for x, y, z in product((True, False), repeat=3):
    print(x, y, z)
    print(x or (y and z))
    print(x | (y & z))
    print()

为了将症状函数转换为python表达式,您可以尝试使用lambdify module

代码语言:javascript
复制
from sympy import lambdify, Or, And, var

x, y, z = var('x y z')
or_and = lambdify((x, y, z), Or(x, And(y, z)))
print(or_and(True, False, False))

希望这能像你所希望的那样加速你的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42021865

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档