prolog相关内容

变量以及它们在 prolog 中的设置和使用方式

http://www.csupomona.edu/~jrfisher/www/prolog_tutorial/2_1.html 所以在它有的那个教程上: 冲突(着色):-相邻(X,Y),颜色(X,颜色,着色),颜色(Y,颜色,着色). 我理解正确吗,Color 是一个变量,在第一次调用 color 后设置为一个值,然后在第二次调用 color? 解决方案 Prolog 中的变量: ..
发布时间:2022-01-12 10:48:28 其他开发

在 prolog 中读取文件

可能重复: 在Prolog中逐行读取文件 我发现以下序言代码一次读取一个字符并打印出来. 进程(文件):-open('C:/Users/BHARAT/Desktop/a.txt', 读取, In),get_char(In, Char1),process_stream(Char1, In),逼近).process_stream(end_of_file,_):-!.流程流(字符,输入):-打 ..
发布时间:2022-01-12 10:48:04 其他开发

树方法进行无限循环

所以当我实例化我的整数变量时,我所有的树代码都不能正常工作.这是我的意思的一个例子: % 关联一棵树和该树中的节点数(顺序)树顺序(空,0).树顺序(树(_,Left_Subtree,Right_Subtree),顺序):-订单#>0,订单 #= Left_Subtree_Order + Right_Subtree_Order + 1,tree_order(Left_Subtree, Left_ ..
发布时间:2022-01-12 10:47:59 其他开发

如何在Prolog中将两个列表的所有元素相乘

我正在考虑如何将两个列表的所有元素相乘.然后我想把所有结果放在 List3 中.例如, List1 = [1,3,5].列表 2 = [2,6,7]. List3应包含 [1x2, 1x6, 1x7, 3x2, 3x6, 3x7, 5x2, 5x6, 5x7].最后; List3 = [2, 6, 7, 6, 18, 21, 10, 30, 35]. 有可能做到吗?怎么做?我找不到正确的方 ..
发布时间:2022-01-12 10:47:51 其他开发

使用 prolog 将集合划分为 n 个子集

我正在努力解决以下问题,使用 prolog 将一个集合划分为 n 个子集. 例如,我给程序作为输入:X = [1,2,3,4], N=3 我得到 Res = [[1,2], [3], [4]]水库 = [[1,3], [2], [4]]水库 = [[1,4], [2], [3]]水库 = [[2,3], [1], [4]]水库 = [[2,4], [1], [3]]水库 = [[3,4], ..
发布时间:2022-01-12 10:47:26 其他开发

如何在序言中编写谓词 convert/2?

我想写一个谓词convert/2.它应该像这样工作 ?- 转换([a,[a,a],[a,b],[b,a],[[a,b]],[d],c],X).X = [a,c,[a],[d],[a,b],[[a,b]]]是的?- 转换([[a,[a,b]],[a,[c,b]],[[a,b],a]], X).X = [[a,[a,b]],[a,[b,c]]]是的?- 转换([[a,b],[a,[a]],[a,b, ..
发布时间:2022-01-12 10:47:20 其他开发

在 Prolog 中更改值

我是 Prolog 的新手,我想更改从列表中提取的变量的值.最初,变量是 n,然后在某些情况下我想将其更改为 a.但是使用 (is)/2 是行不通的,因为它只对数字进行操作. 有没有简单的方法来做到这一点?假设我的代码如下所示: change([H|T]) :- 将 H 设置为 a,change(T).改变([]). 注意 H 已经设置为 n,所以目标 H = a 失败,因为 n 和a不 ..
发布时间:2022-01-12 10:47:10 其他开发

爱因斯坦谜语使用 Prolog

我正在尝试使用 Prolog 解决爱因斯坦之谜.当我试图通过房屋(Hs)运行时,它显示 No. Task is 英国人住在红房子里. 瑞典人将狗作为宠物饲养. 丹麦人喝茶. 绿房子就在白宫的左边. 温室的主人喝咖啡. 抽 Pall Mall 烟的店主养鸟. 黄房子的主人抽登喜路. 住在中心屋的主人喝牛奶. 挪威人住在第一所房子里. 抽 Blends 的主人住在养猫的主人旁边 ..
发布时间:2022-01-12 10:47:01 其他开发

如何在 Prolog 中的列表中查找反转数

作为 Prolog 的新手,我正在寻找一种计算列表中反转次数的好方法. 我知道如何使用 flatten(Matrix, FlatMatrix) 来展平矩阵,从而创建一个包含矩阵中单个元素集的变量.但是,我不确定如何查找该列表中的反转数. 据我了解,从 0...n 开始的数字矩阵中的求逆次数是小于被比较数字的元素总数(如果我在这方面有误,请纠正我). 我对 setof/3 在 Pr ..
发布时间:2022-01-12 10:46:38 其他开发

PROLOG 打印以 7 结尾且其数字之和大于 100 的数字

我需要创建一个接收数字列表的谓词,并仅打印以 7 结尾且其数字之和大于 100 的数字 我为分离做了谓词,但我需要帮助将两个谓词合并,我的意思是这两个谓词进入一个唯一的谓词,这是我到目前为止所做的: %总和大于 100多(X):-0 是 X 模 100总和([],0).总和([P|Q],Z).多(P),总和(Q,Z1),Z是P + Z1.总和([P|Q],Z).不是多(P),总和(Q,Z) ..
发布时间:2022-01-12 10:46:22 其他开发

跟踪时 Prolog 中的重做是什么?

我有这段代码(迭代深化以找到最短路径): arc(a, g).弧(a,b).弧(b,g).路径(X,Z,路径):-长度(路径,_),path_r(X,Z,路径).路径_r(Z,Z,[]).path_r(X, Z, [X|路径]) :-弧(X,Y),路径(Y,Z,路径). 当我追踪它时,它给了我一条痕迹: 2 2 重做:length([],0) ? 这里发生了什么?另外,该行左侧的 2 2 ..
发布时间:2022-01-12 10:46:05 其他开发

将 aleph 与 SWI-prolog 一起使用:source_sink `library(aleph)' 不存在

我正在尝试使用 SWI-Prolog 导入 Aleph.当我运行我的程序时,我收到以下错误.导入 library(aleph) 需要做什么?顺便说一句,我已经为我的程序下载了 aleph.pl.这是我的测试程序,我知道库 aleph 一定有问题. :- use_module(library(aleph)).:- 阿列夫. 我得到了错误: 错误:c:/users/mac/desktop/swi ..
发布时间:2022-01-12 10:45:58 其他开发

Prolog,列表中 Y 之前的 X

我无法理解序言,我必须在列表中查找 X 是否在 Y 之前. 所以我有一个空列表的基本情况 before(X, Y, [ ]). 现在我知道我想检查 List 中 X 的索引和 Y 的索引,如果 indexX ..
发布时间:2022-01-12 10:45:46 其他开发

点积 Prolog/3 需要 SUM 的提示

美好的一天,我正在做序言中的算术问题,是的,它是我搜索过的点产品,发现一堆乱七八糟的代码,与本书所问的内容不符.它是/3,所以这是我到目前为止所拥有的,但我需要将两个列表的乘积结果相加.关于应该推荐做什么的任何提示? dot([HD|TL],[HD2|TL2],Result):-Mul是HD2 * HD,点(TL,TL2,Mul),结果是 Mul + Reuslt2.点([],[],0). ..
发布时间:2022-01-12 10:45:35 其他开发

Prolog Quicksort 使用第二个元素作为枢轴

我一直在尝试学习 prolog,我想使用列表的第二个元素作为快速排序的枢轴. 我想用 [Head |[枢轴|Tail] ] 作为方法中的输入会起作用,但是我不确定我可以在哪里放置“Head",即第一个元素. 像这样: qsort([],[]):- !.qsort([头部|[枢轴|尾部]],排序):-拆分(枢轴,[头|尾],更少,更大),qsort(Less,SortedLess),q ..
发布时间:2022-01-12 10:45:12 其他开发

在Prolog中计算连续出现的数字

您好,我正在尝试在 Prolog 中编写一个程序,给定一个列表,它计算列表中每个连续元素的出现次数,如下所示: count(1,[1,1,1,2,2,2,3,1,1],0,X) 结果将是 X=[ [1,3],[2,3],[3,1][1,2] ]也就是每个子列表是 [element,occurrences] 就我而言,我认为基本情况有问题,但我无法解决.你能帮帮我吗? % 将一个元素添加 ..
发布时间:2022-01-12 10:44:49 其他开发

Prolog中发生检查的最坏情况是什么?

许多论文确实指出,当 occurs_check=true 时,如下所示的等式统一问题可能会在指数时间内运行.没有规定这是顶级查询还是子句体,只是等式统一问题: X1 = f(X0, X0),X2 = f(X1, X1),..Xn-1 = f(Xn-2, Xn-2),Xn = f(Xn-1, Xn-1). 如果为真,这可能是发生检查的最坏情况,因为正常的变量共享统一是线性的.是否每个 Prol ..
发布时间:2022-01-12 10:44:35 其他开发

解压缩列表的谓词

List1=[(x,1),(y,1),(z,1)] 我正在尝试拆分此列表: 分成两个列表: List3=[x,y,z]列表 4=[1,1,1] 所以我写了这个谓词来尝试这样做: splt([], [], []).splt([X|Xs], [Y|Ys], [X,Y|Zs]) :-分裂(Xs,Ys,Zs). 但是,谓词返回的不是期望的结果: 1 ?- splt([(x,1),(y,2 ..
发布时间:2022-01-12 10:44:18 其他开发