【发布时间】:2017-12-10 11:05:42
【问题描述】:
【问题讨论】:
-
与任何编程问题一样,您首先必须定义一些一般性的东西。您想在顶层进行什么样的查询/调用?输入和输出是什么?你怎么能代表你给定的信息?你的画很神秘。我认为这是一个带有触发器和/或门的电路,但它们没有正确标记。你可以用 Prolog 事实来表示这些。你写了很多 Prolog 了吗?如果没有,那么你需要做更多的阅读。您还可以通过谷歌搜索“Prolog 电子电路”或类似术语获得一些想法。
-
第一张图片是一个半加器 - 它有 2 个输入和 2 个输出 - 回答和溢出。而且,不,我还没有使用 Prolog 的经验。第二张图片是全加器。它有 2 个输入 + 1 个输入 (P) 从半加器溢出。它有(全加器)2 个输出——应答和溢出。这样的代码实现了简单的 AND-NOT 功能,我得到了简单的真值表:
-
您的全加器没有显示进位,这也是全加器的输出。我假设你有两个谓词。类似
half_adder(A, B, S, C)的东西,其中A和B是输入位,S和C分别是总和和进位。对于全加器,full_adder(A, B, Cin, S, Cout)具有相似的含义,只是这里有一个进位输入 (Cin) 和一个进位输出Cout。 -
其余的只是按照逻辑。如果你想在 Prolog 中使用基本的
and/2和not/1事实的X and not (Y and Z),你可以写成and(Y, Z, AYZ), not(AYZ, NAYZ), and(X, NAYZ, R).,其中R是结果。这应该足以让你走上我认为的正确道路。我不知道您发布的那张图片是您自己的代码还是什么。如果您需要帮助解决您编写的代码中的特定问题,您需要将代码复制到您的问题中并提出问题。不要只在 cmets 中添加指向图像的链接。
标签: prolog