prolog相关内容

如何在 Prolog 中编写 cmp_list/3 函数?

写一个谓词cmp_list/3,前2个参数是2个list,最后一个是Comparison,意思是ge,lt、le 或 gt. ge:大于或等于 lt:小于 le:小于或等于 gt:大于 输出应该是这样的: 前两个列表代表一个软件的版本,该函数用于比较一个软件的两个版本,看看哪个版本更新: ?- cmp_list([2,3,4], [2,3,5], C).C = lt;C = 乐.?- ..
发布时间:2022-01-12 10:56:25 其他开发

Prolog - 将列表的偶数元素乘以数字(F)

我在 Prolog 中编程,从任何给定的数字 (F) 开始,将列表的偶数元素相乘;保留那些不是的值,开发以下内容,实际上程序“编译";没有任何错误,但是输入值时它只返回“false",我哪里错了?: % 基本情况偶数产品(_,[],[]):-!.% 递归案例偶数产品(F,[X|Xs],[Y|Ys]):-Y 是 F*X,X mod 2 =:= 0,偶数产品(F,Xs,Ys),!. 谢谢!! ..
发布时间:2022-01-12 10:56:08 其他开发

Prolog中的游戏树模对称性

让我们为井字游戏设计一个游戏树.如何有人会在 Prolog 中计算这个结果吗: 考虑到 8 个对称性,并假设计算机 (X) 启动并且具有确定性,那么只需要 49 个表条目! 1 个空板条目 2 件 5 个条目 4 件 21 个条目 18 件,每件 6 件 8 件 4 个条目 https://stackoverflow.com/a/61298546/502187 解决 ..
发布时间:2022-01-12 10:56:00 其他开发

Prolog中的列表处理计算以找到朋友将访问的目的地

我正在尝试编写一个谓词来计算一组朋友将访问的目的地.朋友们这样列出他们喜欢的国家/地区 选择(玛丽,[秘鲁,希腊,越南]).选择(牛仔裤,[希腊,秘鲁,越南]).选择(萨沙,[越南,秘鲁,希腊]).选择(海伦娜,[秘鲁,越南,希腊]).选择(艾玛,[希腊,秘鲁,越南]). 我想编写一个名为 where 的谓词,它需要 2 个参数来执行计算.我想到的公式是,第一个国家值 3 分,第二个国家值 2 ..
发布时间:2022-01-12 10:55:53 其他开发

谓词“simple/1"是什么意思?在 Prolog (SWI-Prolog) 中

我在看书时遇到了问题.我看到一个程序使用谓词“简单"(我猜 simple/1 ).不知道这个谓词是什么意思,在控制台用 ?-help(simple) 找不到.但是当我在控制台中尝试一些查询时,它的工作方式类似于: 5 ?- 简单(p(x)).错误的.6 ?- 简单(mia).真的.7 ?- 简单(米娅).真的.8 ?- 简单(f(Mia)).错误的. 我想这是某种谓词来确定参数是术语(或变量) ..
发布时间:2022-01-12 10:55:42 其他开发

Prolog:寻找所有解决方案

标题可能看起来像一毛钱,但事实并非如此.这个方案的目的就是拿这些类(需求) 需要([[ece2090,1,m,13,16],[ece3520,1,tu,11,14],[ece4420,1,w,13,16]]. 并将他们与具有教授课程证书并且在此期间也有空的大学助教配对(资源;对于 TA 的一天、开始和停止的价值意味着他目前不可用.) resources([[joel, [ece2090,ec ..
发布时间:2022-01-12 10:55:24 其他开发

Prolog列表列表获取所有元素

我有一个列表: 决定([[1,2,-3],[-2,3],[6],[4]],K). 我想按“;"返回所有可能的解决方案. 规则是首先返回其列表大小为 1 的值. 然后我想返回它的大小大于1的值. 尺寸([],0).size([_|Xs],L) :- size(Xs,N),L 为 N+1.头([],[]).头([X|_],X).返回列表成员([X|_],X).return_list_ ..
发布时间:2022-01-12 10:55:11 其他开发

Prolog - 如何从输入文件的给定列表中制作变量列表?

我有一个输入谓词将文件作为列表读取:input(Filename,List).然后列表将采用 的格式 ["_","_","_",9,"_","_"] "_" 字面上是字符下划线 "_" 这里,而不是通配符.问题是如何编写谓词 pred(List,List2) 然后将所有 "_" 转换为变量但保持 9 仍然在同一位置?所以如果我输入 input(Filename,List),pred ..
发布时间:2022-01-12 10:55:02 其他开发

用另一种方法将两个整数相除

让我们考虑 n=s(s(...s(0)...)) (简单地说 n= s^n(0)).如何编写一个计算两个整数相除的程序?我的意思是 s^(n//m) (这是除法的定义).有任何想法吗?例如,如果我们有这样的问题: ?-除法(s(s(s(s(0)))),s(0),D). 我写了以下代码: nat(0).nat(s(X)) :- nat(X).除法(0,_,D):- D 为 0.除(s(X), ..
发布时间:2022-01-12 10:54:46 其他开发

如何在 prolog 中读取一个文件并写入另一个文件

我想读取一个文件,修改行并将结果写入另一个文件. 读取文件:-打开('inputfile.txt',读取,Str),read_file(Str,Lines),关闭(Str).读取文件(流):-at_end_of_stream(流).读取文件(流):-\+ at_end_of_stream(流),读取(流),修改(流,流 2),write_file(Stream2),读取文件(流).write_f ..
发布时间:2022-01-12 10:54:35 其他开发

Prolog,查询错误语句时出错

输入:-read_line_to_codes(用户输入,输入),string_to_atom(输入,原子),atomic_list_concat(Alist, ' ', Atoms),短语(句子(S),Alist),行动(S).声明(规则)-->[名词,'is','a',宾语],{ Rule =.. [宾语,名词]}.声明1(规则)-->['A', 名词, 'is', 'a', 宾语], { Ru ..
发布时间:2022-01-12 10:54:27 其他开发

json获取prolog谓词

我正在尝试在 prolog 中创建这个谓词: 谓词json_get/3可以定义为:json_get(JSON_obj, Fields, Result).当Result可恢复时为真按照Fields(列表)中的字段链,从 JSON_obj 开始.一个领域由 N 表示(其中 N 主编号 o 等于 0)对应于JSON 数组的索引. 请帮助我理解遵循字段链. 谢谢 编辑1: 当 ..
发布时间:2022-01-12 10:54:20 其他开发

Prolog:停止条件?

这是一个非常简单的 Prolog 知识库: 配偶(比尔,谢丽尔).已婚(X,Y):- 配偶(X,Y).已婚(X,Y):- 配偶(Y,X). 我运行了以下查询.请注意,有时答案是正确的名称(仅),但有时答案是正确的名称和“假". 1 ?- 已婚(bill,X).X = 谢丽尔;错误的.2 ?- 已婚(谢丽尔,X).X = 账单.3 ?- 已婚(X,比尔).X = 谢丽尔.4 ?- 已婚(X,c ..
发布时间:2022-01-12 10:54:13 其他开发

Prolog Logic/爱因斯坦之谜

问题是 布朗、克拉克、琼斯和史密斯是四位重要的公民,他们以建筑师、银行家、医生和律师的身份为社区服务,尽管不一定分别.布朗比琼斯更保守,但比史密斯更自由,他的高尔夫球手比比他大的男人更好,收入也比比克拉克年轻的男人高 挣得比建筑师多的银行家,既不是最年轻的,也不是最年长的. 打高尔夫球比律师差的医生,比建筑师不那么保守 正如所料,最年长的人最保守,收入最高,最年轻的人是最好 ..
发布时间:2022-01-12 10:54:07 其他开发

Prolog if 语句

我正在尝试实现一个如下工作的谓词: pred :-% 总是这样做% if 语句% 仅当 if 语句为真时才这样做% 也总是这样做,独立的 if 语句是真还是假. 我需要一个程序的这个功能,它可以选择是否有 gui (XPCE).你可以调用它 start(true) % with gui 或 start(false) % 没有 gui 因为我不想用相同的逻辑编写两个不同的谓词,但一次使用 ..
发布时间:2022-01-12 10:53:59 其他开发

Prolog 元素是一个列表成员检查

我在 prolog 中有一个小规则,它必须检查一个元素是否是列表的成员并将其写在列表中的位置,但它仅在我要查找的元素位于第一个位置时才有效.需要请帮忙! write_element(X,[X|_],1).写元素(X,[_|尾巴],N):-N1 是 N-1,写元素(X,尾巴,N1). 解决方案 这个东西到底应该怎么调用?似乎 N 必须由我实例化,否则 N1 is N-1 将不起作用.但同样,在 ..
发布时间:2022-01-12 10:53:51 其他开发

在 Prolog 中打印一个事实的值?

假设我有这些事实: 冠军(皇家马德里).第二个地方(Atl). 如何从 Prolog 中的查询中打印“Real_Madrid"字符串值,例如: 冠军(某事). 皇家马德里 有什么办法吗? 解决方案 在 Prolog 中,如果原子以大写字母开头,则需要引号,以免与变量混淆. 在这里,你可以写: 冠军('皇家马德里').second_place('Atl'). ..
发布时间:2022-01-12 10:53:42 其他开发

Prolog 删除列表中第一个和最后一个元素之间的元素

我试图只保留仅包含连续整数的列表的第一个元素和最后一个元素. 例如: ?- remove([1,2,3,4,5], NewList).新列表 = [1,5]. 我只能成功保留最后一个元素: 删除([],[]).% 表示列表中的连续整数删除([头|尾],新列表):-check_consecutive(头,尾),删除(尾部,新列表).% 表示列表为空的情况删除([头|尾],[头|新列表]) ..
发布时间:2022-01-12 10:53:37 其他开发

非成员规则在 Prolog 中无法按预期工作

我正在尝试在 Prolog 中创建一个迷宫程序,其目的是找到一条从迷宫起点到迷宫中心点 m 的路线.迷宫由使用四种颜色之一连接的正方形组成:蓝色、绿色、紫色或橙色.从起点到中心的路线遵循四种颜色的重复模式. 我创建了以下代码: link2(A, Colour, B) :- 链接(A, Colour, B).链接2(A,颜色,B):-链接(B,颜色,A).改变颜色(蓝色,绿色).改变颜色(绿 ..
发布时间:2022-01-12 10:53:29 其他开发