prolog相关内容

如何具体化 Prolog 的回溯状态以执行与“lazy seq"相同的任务?来自 Clojure?

这是一个用 Clojure 编写的数字快速排序算法.它基本上是 "The Joy of Clojure",第 2 版,第 133 页中的快速排序算法.我稍微修改了它以(希望)更好的可读性,因为原始感觉有点太紧凑了:p> (defn qsort-inner [工作](惰性序列(循环[循环工作](让 [[ part & partz ] loopwork ](if-let [[pivot & valu ..
发布时间:2022-01-12 10:30:47 其他开发

检查字符串是否是Prolog中的子字符串

有没有办法在 Prolog 中检查一个字符串是否是另一个字符串的子字符串?我尝试将字符串转换为字符列表,然后检查第一组是否是第二组的子集,这似乎不够严格.这是我当前的代码: isSubstring(X,Y):-stringToLower(X,XLower),stringToLower(Y,YLower),isSubset(XLower,YLower).是子集([],_).isSubset([H| ..
发布时间:2022-01-12 10:30:40 其他开发

Prolog,带有条件子句的构建列表

我需要使用 prolog(SWI 风格)来完成这项家庭作业,并且无法理解某些事情. 例如,如果我想遍历一个列表并将其元素添加到另一个列表中,但前提是它们满足特定条件,我将如何处理它?我可以将它们全部添加,也可以不添加,但是如果我添加检查此条件的子句,则整个递归结果为“假".我明白为什么会这样,但不知道如何解决它.基本上我想要的是: goal(Stuff) :- do_something(X ..
发布时间:2022-01-12 10:30:24 其他开发

prolog,在元组列表中查找列表元素

我正在尝试用 Prolog 解决一个新程序,但我被卡住了,不知道如何继续......我必须做一个有 3 个参数的谓词,第一个是元素列表,第二个是元组列表,第三个必须是返回的列表,其中包含元组的第二个元素,如果元组的第一个元素与第一个参数列表的元素匹配.它也必须删除副本!! 例如, check([a,c],[(a,aa),(bb,bbb),(a,aa),(c,def)],X).X = [aa ..
发布时间:2022-01-12 10:30:04 其他开发

在 Prolog 中解析多位数字

我有以下简单的表达式解析器: expr(+(T,E))-->term(T),"+",expr(E).expr(T)-->term(T).术语(*(F,T))--> 因子(F),“*",术语(T).项(F)-->因子(F).因子(N)-->nat(N).因子(E)-->“(",expr(E),“)".nat(0)-->“0".nat(1)-->“1".nat(2)-->“2".nat(3)-->“ ..
发布时间:2022-01-12 10:29:56 其他开发

Prolog中的逻辑否定

我已经阅读了很多关于 Prolog 的 Negation by Failure 的内容,其中 Prolog 为了证明 \+Goal 成立试图证明 Goal失败. 这与 CWA(近距离世界假设)高度相关,例如,如果我们查询 \+P(a)(其中 P是元数 1) 的谓词,我们没有任何线索可以证明 P(a) Prolog 假设(由于 CWA)not P(a) 成立,所以 \+P(a) 成功. ..
发布时间:2022-01-12 10:29:33 其他开发

Prolog 中列表的串联

谁能帮我找出这些规则中的错误? concat([], 列表, 列表).连接([头|[]],列表,[头|列表]).concat([Head|Tail], List, Concat) :- concat(Tail, List, C), concat(Head, C, Concat). 尝试连接两个列表失败: |?- concat([1,2],[4,7,0],什么).不 解决方案 要按照您的意 ..
发布时间:2022-01-12 10:29:25 其他开发

立即学习 Prolog!运动解决方案

有谁知道我在哪里可以找到立即学习Prolog的练习和实践课程的解决方案?我开始研究它,并会验证我设计的答案. 解决方案 我已经解决了这些问题,并决定将我的解决方案作为我关于学习 Prolog 的博客文章的一部分发布.这是链接,供任何可能自学并找到它的人使用有帮助. ..
发布时间:2022-01-12 10:29:18 其他开发

Prolog:替换列表中指定索引处的元素

我想要一个 Prolog 谓词,它可以替换列表中指定索引处的元素. 例子: % 替换(+List,+Index,+Value,-NewList).?- L=[a,b,c,d],替换(L,1,z,L2).L2 = [a,z,c,d] 我不知道该怎么做.谢谢你的帮助!洛伊克. 解决方案 我给你基本情况,我想你应该能够轻松地做递归情况: replace([_|T], 0, X, [X ..
发布时间:2022-01-12 10:29:12 其他开发

Prolog - 在列表中查找相邻元素

我正在尝试定义一个谓词 adjacent(X, Y, Zs) 如果 X 和 Y 在列表中相邻,则该谓词为真.我的代码目前是这样的: 相邻(_, _, []).相邻(X,Y,[X,Y|尾巴]):-相邻(X,Y,尾). 它适用于 adjacent(c, d, [a, b, c, d, e]) 的基本情况,但由于基本情况,所有其他情况也返回 true,而我一直坚持这一点. 另一个问题是,如果 ..
发布时间:2022-01-12 10:29:01 其他开发

读取序言中的输入并打印结果

我正在学习 Prolog 的想法,这是我想要练习的内容: 我想写一个可以这样工作的Prolog程序: ?- 输入([apple,is,fruit]).?- 输入([鸡,是,肉]).?- 输入([是,苹果,肉]).不,是水果?- 输入[(是,鸡,肉])是的. 当我试图实现这个程序时,我遇到了一些问题: (1) 我使用这段代码试图读取输入并区分问题和断言,但它失败了: 输入([]). ..
发布时间:2022-01-12 10:28:51 其他开发

Prolog 多米诺骨牌游戏

我正在prolog 中制作一个游戏,使用给定的一组多米诺骨牌,它应该使用初始组中的所有骨牌组成正确的多米诺骨牌行.我们必须使用一个推理系统,我们必须在其中构建初始状态和最终状态,如下所示: 初始(多米诺骨牌([[1,4],[2,3],[4,2]],[])).最终(多米诺骨牌([],[[1,4],[4,2],[2,3]])). 第一个转换只是从第一个列表中选择一个棋子并将其放入第二个列表,但接 ..
发布时间:2022-01-12 10:28:35 其他开发

SWI-prolog & 中的自然数递归过程

我对自然数的下一个程序是SWI-prolog: natural_number(0).自然数(s(X)):- 自然数(X). 现在我想做一个递归调用,当我们到达 0 时停止. 我的自然数表示为 - s(0)=0, s(s(0))=1, s(s(s(0)))=2, etc 所以我定义: recommend(A, B, natural_number(0)) :-dosomeFINITE ..
发布时间:2022-01-12 10:28:28 其他开发

Prolog - 返回包含特定元素的列表?

我正在努力学习 Prolog,并且一直在做一些练习. 有一个包含学生姓名的列表.编写谓词 filter(L,LN) 以返回名为 LN 的第二个列表,其中包括如下名称: ?- filter([kostas, dimitris, anna, antonis, antonia], LN).LN = [科斯塔斯,安娜,安东尼娅] 所以..它显示一个然后跳过一个并连续执行此操作.这是我所做的,但它 ..
发布时间:2022-01-12 10:28:13 其他开发

如何在 SWI-Prolog 中扩展结果列表?

?- 长度(L,25).L = [_G245,_G248,_G251,_G254,_G257,_G260,_G263,_G266,_G269|...]. 如果我在长度谓词之后使用 write(L),那么解释器会打印列表两次,一次展开,另一次不展开. 解决方案 为了防止输出过长,有深度限制.您可以使用 set_prolog_flag/1 更改它. ?- 长度(L,25).L = [_G2 ..
发布时间:2022-01-12 10:27:52 其他开发

Prolog算术语法

如何将a定义为整数/浮点数? 我想找到 a+b+c+d=10 的结果,其中 a,b,c,d 是整数,>=0. 解决方案 这是一个简单、现代、纯 Prolog、非 CLP 库的解决方案: 范围(X):-成员(X,[0,1,2,3,4,5,6,7,8,9,10]).十(A,B,C,D):-范围(A),范围(B),范围(C),范围(D),10 =:= A + B + C + D. ..
发布时间:2022-01-12 10:27:16 其他开发

扩展至 CFG,它是什么?

考虑以下对上下文无关文法的扩展,它允许规则在左侧具有一个(或多个)终结符,位于非终结符的右侧.即形式的规则: A b ->... 右边可以是任何东西,比如上下文无关语法.特别是,不是要求,右侧的末尾将具有完全相同的终端符号.在这种情况下,此扩展将是上下文相关的.但终端不仅仅是一个上下文.有时,这个终端被称为“推回". 显然,这不再是 CFG(类型 2).它包括类型 1.但它是什么?真的已 ..

Prolog 中的广度优先搜索

我是 Prolog 的新手,目前正在实施 DFS(深度优先搜索)和 BFS(广度优先搜索)算法.我的 DFS 像下面的代码一样工作正常,但是 BFS 在到达叶节点时终止并中止(它不会回溯并继续搜索).我也看了一些关于这个的示例代码,但是有一些函数没有定义,比如 s(Node, NewNode)...所以很难理解,或者版本使用队列太复杂. 这是我的代码:一些地面功能: %connected( ..
发布时间:2022-01-12 10:26:46 其他开发

Prolog:将 DCG 语法与其他限制相结合

Prolog 的 DCG 给我留下了深刻的印象,我能够以多快的速度生成适合特定语法的所有可能结构. 但我想将此搜索与其他约束结合起来.例如,定义一个复杂的语法并要求 Prolog 生成所有不超过 10 个单词的句子.或者所有不重复同一个词两次的句子. 是否可以将这样的额外约束添加到 DCG 语法?还是我基本上必须将 DCG 翻译回普通的 Prolog 子句并开始修改它们? 解决方 ..
发布时间:2022-01-12 10:26:37 其他开发