有人可以解释替代组合的逻辑如何与以下代码块一起使用吗? ...
有人可以解释替代组合的逻辑如何与以下代码块一起使用吗? ...
我正在尝试编写一个 4 参数 function myadd(A, B, C, D) ,当A + B + C = D在 prolog 时成立。 我是 prolog 的新手,不知道该怎么做,所以我所做的是从类似的 function 扩展而来,但有 3 个 arguments: 然后当我执行这段代码时, ...
我需要在 Prolog 中编写一个函数来计算列表中元素的数量,另一个验证元素是否在列表中,但使用自然数“零”和他的后继(s(零))。 例如,我设法通过使用前面的限制对类似物“take”和“drop”进行编程: 但是我无法使用自然数在 Prolog 中对类似物“count”和“member”进行 ...
需要帮助创建递归子句是一个规则:仅当存在 Y 时 X 是 2 的幂,这样当将 Y 添加到 Y 时结果是 X,并且 Y 是 2 的幂。在 prolog 我们将递归地定义这个谓词。 下面是判断一个数是否为2的幂的事实和规则: • 基本子句是一个事实:1 是2 的幂(因为1=20); • 递归子句是一 ...
我需要打印这个系列的结果:2、4、7、28、33、198 ... 当 x 为 1 时,结果应为 2 当 x 为 2 结果应为 4 当 x 为 3 时,结果应为 7 等等我有这个,但它不起作用: ...
以下 Prolog 程序定义了一个谓词fact/2用于计算后继算法中整数的阶乘: 它适用于以下参数模式下的查询: 它也适用于这种参数模式下的查询: 它也适用于这种参数模式下的查询: 但它在这种参数模式下通过查询耗尽资源: 如何在所有参数模式的后继算术中实现阶乘序列? ...
Prolog 中有两种可能的添加规则,根据 cTI 具有不同的终止属性: cTI 报告sum(A,B,C)terminates_if b(A);b(C). 对于以下规则: cTI 报告sum(A,B,C)terminates_if b(A),b(B);b(C). 对于以下规则(交换X和Y ) ...
为什么总是导致错误为什么编译器告诉我算术:'s(_2676)' is not a function ...
我试图了解 Prolog 并且我遇到了以下情况。 我以下列方式定义了自然数(一元): 这意味着 0 是 0,s(0) 是 1,s(s(0)) 是 2 等等...... 然后我定义谓词添加: 它将两个一元数和结果存储添加到 Z。 现在我有以下谓词“测试”证明了我的问题: 然后在解释中输入: 然后我尝试 ...
Peano 算术中的这个小于谓词 循环时 有没有更好的方法来写less/2 (仅使用 Horn 子句)? ...
让我们假设 pure_2 Prolog 有 dif/2 和 pure_1 Prolog 没有 dif/2。 我们可以在不使用 dif/2 的情况下实现值的 Peano 分离性,即 Peano 数吗? 因此,假设我们在 pure_2 Prolog 中有这样的 Peano 公寓: 我们能否用更纯粹的定 ...
我不明白这个是如何工作的。 如果我运行查询: 它如何从第一个参数中删除 succ ? 如果我运行它: 这让身体很满意。 我们将它们输入到头部: 即它在我看来好像只是添加了 succ,而不是从第一个参数中删除它们? 我看到有关于这个确切问题的另一篇文章,但对我来说没有意义。 ...
我想编写一个代码来乘以代表数字的列表,例如: ?- 次 ([1,1,1], [1,1], Res)。 Res = [1,1,1,1,1,1]。 我已经有了上面的代码,它有点像我想要的,但不是真的。 例如在询问时: ?- 次 ([1,1,1], [1,1], Res) Res = [[1,1 ...
如果在 Prolog 中这样定义整数: 如何将这样的数字转换为十进制数? 输入例如: s(s(s(0))) 我可能应该补充一点,我对 Prolog 很陌生。 编辑:我这样试过: ...
我该怎么做以下。 我需要定义谓词shownumber (X,N) ,当符号 X 对应于自然数 N 时,该谓词为真。例如, shownumber(s(zero),1)为真。 好的,现在我有一个谓词: 现在我需要使用shownumber (X, Y)谓词来定义: 1) times (X, Y, Z) ...
我正在尝试计算“Peano 数”的差异( Recursive definition of natural numbers represented as s(0), s(s(0)) etc.但我遇到了一个问题。 减法的定义如下: s(X) - 0 = s(X) s(X) - s(s(X)) = 0 s ...
我正在尝试使用 Peano Axioms 实现欧几里得除法(a = bq + r),到目前为止我已经完成了这个谓词: 每个谓词似乎都可以完美运行,我遇到的一个问题是: 给我正确的答案,而不是说没有更多的答案进入无限循环。 我不明白为什么 div/4 不停止,知道为什么吗? 提前致谢 ...
lstlength([], SIZE):- SIZE 为 0。lstlength([_|T], SIZE):- lstlength(T, SMALLER), SIZE 为 SMALLER+1。 如果我要求 Prolog 组装一个给定大小的随机列表(“lstlength(X,3)”)表示更多可能的解 ...
我有一个add2谓词,它像这样解析,其中s(0)是0的后继,即1 ETC.. 我正在尝试添加一个前任谓词,它将像这样工作 我似乎找不到办法做到这一点。 我的代码如下。 ...
我是 Prolog 的新手,我正在尝试了解列表。 我正在努力解决的问题是:给定列表形式的数字 (1 : [x], 3: [x, x, x]),实现'times'谓词 /3。 例如:times([x, x], [x, x, x], R)。 R = [x, x, x, x, x, x]。 加号和后继 ...