【发布时间】:2017-08-14 01:16:16
【问题描述】:
我的问题很简单,我明白我必须做什么,但似乎我不能代表我的理解。如何编写谓词来根据 NAND 门规则定义 XOR 或 NOR 等门?
例如:
nand(t,t,f).
nand(t,f,t).
nand(f,t,t).
nand(f,f,t).
以上是与非门的真值表。现在如果我想在 Prolog 中使用上述术语定义 XOR 门,例如我需要向 Prolog 询问 XOR(X,Y,Z) ,它会给我三个可能的答案,我应该如何构建一个谓词来定义它?
谢谢
【问题讨论】:
-
查看@CapelliC 给出的答案。您只需要首先使用布尔逻辑根据给定的操作写出(或“连接”)所需的操作。他展示了如何从 NAND 输入中获得 XOR。如果你想要 NOR,你会再次使用布尔逻辑。 NAND 是
NOT(A AND B)。 NOR 是NOT(A OR B)。使用NOT(A OR B)等逻辑规则等价于(NOT A) AND (NOT B)。你如何从 NAND 获得NOT A?简单:NOT A = NAND(A, A)。从那里做一些工作来弄清楚nor(A, B, C)。 -
要清楚,我之前的评论中没有写 Prolog 语句。它们只是逻辑陈述。但是,如果您考虑一下,这些信息应该足以解决您的问题。
标签: prolog