如何修复这种递归乘法?

问题描述我是逻辑编程和PROLOG的新手。以下PROLOG程序定义了一个谓词mul/3,用于将第一个参数与第二个参数相乘,从而产生第三个参数,该谓词的基础是等效于(x−1)*y+y=z:mul(0,_,0).mul(X,Y,Z):-ground(X),succ(U,X),add(

发布:2023-01-03 标签:recursionterminationmultiplicationprologfailure-slice


PROLOG展开列表

问题描述flatten([A|B],R):-(islist(A)->(flatten(A,R1),R=R1);(write(A),append([A],R1,R))),flatten(B,R1).flatten(X,X).islist([_|_]).这是我写的代码,但我有奇怪的问

发布:2022-10-16 标签:prolog


用PROLOG创建二叉树

问题描述我是PROLOG的初学者,我的第一个任务是实现一个函数Construction(),它从一个列表构建一棵二叉树。我知道我的代码中有错误或遗漏了什么,但我不能确定是什么。我也认为帮助器方法可能是必要的,但我想不出该怎么做。到目前为止,我的代码如下:construct([],

发布:2022-10-16 标签:binary-treeprolog


DCG:零次或多次、零次或一次、一次或多次?

问题描述在DCG中如何实现:零或多、零或一、一或多个实例?我说的是伪代码中的以下内容:sentence-->word+float-->int+,['.'],int+nilORa-->a?nilORaaaa-->a*推荐答案您可以使用谓词的子句集(或者,在本例中,同一个Dcg的非终

发布:2022-10-16 标签:repeatprologdcg


如何实现所有参数模式的列表项删除?

问题描述下面的Prolog程序定义了一个谓词deleted/3,用于从传入的第二个参数的列表中删除传入第一个参数的项目的所有匹配项,并生成传入的第三个参数的列表:deleted(_,[],[]).deleted(X,[X|Y],Z):-deleted(X,Y,Z).deleted

发布:2022-10-16 标签:terminationsequenceprologlogical-purityfailure-slice


Python:pyswp输出返回Atom和Functor

问题描述基于一些较早的post,我有一些PROLOG程序,它指定命题。让我们称其为"logic.pl":-op(800,fx,¬).:-op(801,xfy,∧).:-op(802,xfy,∨).:-op(803,xfy,→).:-op(804,xfy,↔).

发布:2022-10-16 标签:pythonintersectionlogicprolog


用PROLOG打印数组/列表的最佳方式是不带逗号、方括号或空格?

问题描述所以我才刚刚开始使用Prolog。假设我有一个数字列表,如下所示:X=[0,1,0,1,1,1,1,0]并且希望将这些数字打印到屏幕上,而不使用逗号、空格或换行符,如下所示:?-write(X).01011110到目前为止,我已经尝试使用write(X)。它只打印数组,我

发布:2022-10-16 标签:arrayslistprologoutputswi-prolog


+在序言中是什么意思?

问题描述我在这里看到了一些使用它的答案,但我不知道它是什么意思,也不知道如何使用它。我也很难通过搜索引擎找到它:)推荐答案它是"notprovable"运算符。如果其参数不可证明,则它成功(如果其参数可证明,则失败)。

发布:2022-10-16 标签:prolog


如何检查列表元素的类型

问题描述有没有办法在PROLOG中确定列表中元素的类型?我知道在PROLOG中没有显式键入变量,但我需要检查元素是数字还是特定字符等。如何才能做到这一点?推荐答案prolog定义了一组用于类型测试的内置谓词:var/1、atom/1、integer/1、float/1、atomi

发布:2022-10-16 标签:listtypesprolog


`predsort/3` 的可能行为

问题描述这是回答关于对术语的特定参数进行排序的问题,而不为keysort创建新列表(如果我正确理解了原始问题).Thisisafollowuptoananswertoaquestionaboutsortingonaparticularargumentofaterm,without

发布:2022-10-16 标签:listsortingcompareprologstable-sort