prolog相关内容

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([_|_]). 这是我写的代码,但我有奇怪的问题.. 我得到 257 ?- flatten([1,[],2,[3],[3,[3,5] ..
发布时间:2022-07-24 19:14:56 其他开发

用PROLOG创建二叉树

我是PROLOG的初学者,我的第一个任务是实现一个函数Construction(),它从一个列表构建一棵二叉树。我知道我的代码中有错误或遗漏了什么,但我不能确定是什么。我也认为帮助器方法可能是必要的,但我想不出该怎么做。 到目前为止,我的代码如下: construct([],nil). construct(E, tree(E,nil,nil)). construct([H|T], tree( ..
发布时间:2022-06-30 21:56:11 其他开发

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

在DCG中如何实现:零或多、零或一、一或多个实例? 我说的是伪代码中的以下内容: sentence --> word+ float --> int+, ['.'], int+ nilORa --> a? nilORaaaa --> a* 推荐答案 您可以使用谓词的子句集(或者,在本例中,同一个Dcg的非终结符的dcg产生式集合--dcg产生式是Horn子句的 ..
发布时间:2022-05-28 17:01:03 其他开发

Python:pyswp输出返回Atom和Functor

基于一些较早的post,我有一些PROLOG程序,它指定命题。让我们称其为";logic.pl"; :-op(800, fx, ¬). :-op(801, xfy, ∧). :-op(802, xfy, ∨). :-op(803, xfy, →). :-op(804, xfy, ↔). :-op(800, xfy, #). m_Proposition_Binary_x_y ..
发布时间:2022-02-26 15:40:29 Python

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

所以我才刚刚开始使用Prolog。 假设我有一个数字列表,如下所示: X = [0,1,0,1,1,1,1,0] 并且希望将这些数字打印到屏幕上,而不使用逗号、空格或换行符,如下所示: ?- write(X). 01011110 到目前为止,我已经尝试使用write(X)。它只打印数组,我使用pprint模块尝试了print_term,但没有取得任何成功。 现在我有 ..
发布时间:2022-02-25 16:37:19 其他开发

+在序言中是什么意思?

我在这里看到了一些使用它的答案,但我不知道它是什么意思,也不知道如何使用它。我也很难通过搜索引擎找到它:) 推荐答案 它是“not provable”运算符。如果其参数不可证明,则它成功(如果其参数可证明,则失败)。 ..
发布时间:2022-02-23 20:00:27 其他开发

如何检查列表元素的类型

有没有办法在PROLOG中确定列表中元素的类型?我知道在PROLOG中没有显式键入变量,但我需要检查元素是数字还是特定字符等。如何才能做到这一点? 推荐答案 prolog定义了一组用于类型测试的内置谓词:var/1、atom/1、integer/1、float/1、atomic/1、compound/1、nonvar/1、number/1,如果您了解该语言的数据类型,所有这些谓词的含义 ..
发布时间:2022-02-23 19:59:22 其他开发

`predsort/3` 的可能行为

这是 回答关于对术语的特定参数进行排序的问题,而不为 keysort 创建新列表(如果我正确理解了原始问题). 假设我们希望 predsort/3 的行为与 sort/2 完全相同:如果我理解正确,这意味着将其称为: ?- predsort(比较,列表,排序). 现在说我们想使用 predsort/3 来按照 msort/2 的实现进行排序(另请参阅此 问题).一种方法是定义一个比较谓词 ..
发布时间:2022-01-25 09:36:01 其他开发

Prolog的附加有什么问题?

根据我所在大学的逻辑课程,我们可以预期与 Prolog 为以下查询定义的结果不同: 追加([], a, X) (统一为 X=a). 但是我不明白他们的目标是什么?考虑到 append 应该为(在本例中)[] 和 a 的串联统一 X,应该期望什么作为有效响应? 我假设他们可能期望返回 false 或 [a];但是我认为这应该是连接 a 和 [] 而不是 [] 和 a 的结果(因为[] ..
发布时间:2022-01-22 11:44:08 其他开发

模式匹配 - Prolog vs. Haskell

这不是家庭作业问题,而是考试学习指南问题.Prolog 与 Haskell 中的模式匹配有什么区别? 我已经进行了一些研究并阅读了它们背后的理论并没有真正让我对两者之间有一个扎实的理解.我在Prolog中读到,模式匹配是不同的,因为它具有统一变量的能力,因此能够通过分辨率进行推断并吐出可能的答案 例如 ?- [a,b] = [a,X]X = b 现在我不确定如何在 Haskell 中显示 ..
发布时间:2022-01-12 10:57:45 其他开发

Datalog vs CLIPS vs Prolog

与我在大学学习 Prolog 的程序员一样多,但只学过很少.我知道Prolog和Datalog密切相关,但Datalog更简单?另外,我相信我读到 Datalog 不依赖于逻辑子句的顺序,但我不确定为什么这是优势.CLIPS 应该是完全不同的,但它太微妙了,我无法理解.有人可以提供这些语言相对于其他语言的一般亮点吗? 解决方案 datalog 是prolog 的一个子集.datalog 携 ..
发布时间:2022-01-12 10:57:35 其他开发

人工智能的 Lisp 和 Prolog?

自从我 3 年前在 A.I. 上过一堂课以来.我显然足够熟练地问这个问题......开玩笑吧开玩笑;) 但说真的,是什么让这些语言如此受人工智能欢迎.研究.尽管 A.I.研究是“陈旧的"......它可能是过去 5-10 年来最长的方式......是不是因为这些语言在某种程度上是围绕人工智能的概念“设计"的?,或者只是我们现在没有什么更好的东西可以使用? 我问这个是因为我一直觉得它很有 ..
发布时间:2022-01-12 10:57:28 AI人工智能

Haskell 与 Prolog 比较

Prolog 比 Haskell 更能解决哪些问题?这两种语言的主要区别是什么? 编辑 是否有可以模仿 Prolog 功能的 Haskell 库(一种逻辑求解器)? 解决方案 Prolog 主要是针对逻辑问题的语言,尤其是在 AI 和语言领域.Haskell 更像是一种通用语言. Prolog 是声明性(逻辑)语言,这使得在其中陈述逻辑问题变得更容易.Haskell 是一 ..
发布时间:2022-01-12 10:57:22 其他开发

我应该如何在序言中设计这个谓词?

我必须编写一个谓词 stepup(L, Z, X),其中 L 是一个列表,而 Z 和 >X 是整数.如果 Z 可以使用列表中用户给出的合法步骤进入 X,则它应该返回 true. 例如 stepup([7, 12, 19], 6, 32) 应该返回 true 因为 6 + 7 + 7 + 12 = 32起始编号应始终为 Z(此处为 6),并且规则应仅使用列表中的步骤.该规则适用于所有尺寸 ..
发布时间:2022-01-12 10:57:05 其他开发

prolog中如何根据arity泛化程序?

我使用 swi prolog.我有一个像这样的事实基础,其中包含 4 的事实. 属性(a1,a2,a3,a4).数据(是,否,否,否).数据(是,否,是,否).数据(是,是,是,否).数据(是,是,是,是).数据(不,是,是,是). 当我调用 pbayes(yes,no,no,no,Result); 时,我的代码会计算 Result 的概率; p(ColumnName,ColumnValue ..
发布时间:2022-01-12 10:56:57 其他开发

如何从递归和尾递归列表中获取最后两个值?

我需要一个谓词last_two(LST,Y,Z)将列表的最后一个值分配给 Z倒数第二个到 Y.我怎样才能在递归中做到这一点?我怎么能在尾递归中做到这一点?谢谢! 这是一个带有尾递归的代码,我可以让它更高效吗? last2_2([_|[H1|[H2|T]]],Y,Z):-last2_2([H1|[H2|T]],Y,Z).最后2_2([H1,H2],H1,H2). 解决方案 你可以简化递归 ..
发布时间:2022-01-12 10:56:47 其他开发

如何在 Prolog 中编写对列表进行操作的函数

如何在 Prolog 中制作一个包含 n 个 a 和 n 个 b 的程序,这里需要注意的是列表中 a 和 b 的数量必须相等,并且列表必须始终以 a 开头并以 b 结束,否则为假.示例:[a,b] 为 true,[a,a,a,b,b,b] 为 true, [a,a,a,a] 是 false 并且 [a,a,a,b,b] 也是假. 这是我尝试做的: 语言B([b]).语言B([b | S]) ..
发布时间:2022-01-12 10:56:42 其他开发