首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与PyDatalog的逻辑析取

与PyDatalog的逻辑析取
EN

Stack Overflow用户
提问于 2015-12-29 11:06:47
回答 2查看 358关注 0票数 1

我似乎不能写(伪代码):打印所有X的X和Y,Y,其中X==True和Y==True或Y==False

代码语言:javascript
复制
>>> from pyDatalog import pyDatalog
>>> pyDatalog.create_terms('X,Y')
>>> print((X==True)
X   
----
True
>>> print((X==True) & (Y==True))
X    | Y   
-----|-----
True | True

我们的目标是编写如下内容:

代码语言:javascript
复制
>>> print((X==True) & ((Y==True) or (Y==False)))
X    | Y   
-----|-----
True | True
True | False

相反,这会打印出前一条命令返回的内容。

我该怎么做呢?

EN

回答 2

Stack Overflow用户

发布于 2016-01-25 03:37:30

我对pyDatalog还有些陌生,但我的理解是,析取应该被分成多行。所以你的代码会是这样的(无可否认,这有点不明智):

代码语言:javascript
复制
from pyDatalog import pyDatalog
pyDatalog.create_terms('X,Y')

print(((X==True) & ((Y==True))))
print(((X==True) & ((Y==False))))
票数 1
EN

Stack Overflow用户

发布于 2016-04-13 08:19:13

如果这意味着要遍历X和Y的布尔值集合,并打印X& Y的结果,则应该可以这样做:

代码语言:javascript
复制
from pyDatalog import pyDatalog

allValues = [True, False]

pyDatalog.create_terms('result, X, Y, R, table')

(result[X, Y] == True) <= (X == True) & (Y == True)
(result[X, Y] == False) <= (X == False)
(result[X, Y] == False) <= (Y == False)

table(X, Y, R) <= (X._in(allValues)) & (Y._in(allValues)) & (R == result[X, Y])

print(table(X, Y, R))

这是输出:

代码语言:javascript
复制
X     | Y     | R    
------|-------|------   
False | True  | False   
False | False | False  
True  | True  | True  
True  | False | False
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34503832

复制
相关文章

相似问题

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