Prolog 加法练习
我有这个非常简单的代码作为数字的表示。问题是当我使用 add2 函数时。 示例:add2(s(0)+s(s(0)), s(s(0)), Z)。 返回 s(s(s(s(s(0) ))))) 正确。但是…
prolog 中的深度有限搜索(普通元解释器)
我需要修改普通元解释器才能进行深度有限的搜索。我正在使用以下代码来测试我的解决方案: value(wire1,1). connected(wire2, wire1). connected(wire…
这可以在 Prolog 中进行尾递归吗?
我正在学习 Prolog,作为练习,我正在尝试一个简单的数据库,该数据库计算给定数字之前的所有数字的总和(即 0=0, 1=1, 2=3, 3=6, 4 =10,...)。很简…
Prolog 计算列表中的元素
我想计算列表中出现了多少个 g 项目,下面是我现在正在尝试的代码,但返回时得到错误。 g(E) :- memberchk(E, [apple, orange, pear, grape, lycee, p…
为什么这个 prolog 程序会导致无限递归?
我正在尝试制作一个简单的知识库。然而,我正在努力让类别系统发挥作用。 这是到目前为止的程序: subset(tomatoes, fruits). subset(fruits, food). …
如何在序言中按字母*和*数字排序?
我在 Prolog 中有一个如下所示的列表: [(b,y,3),(p,z,1),(p,y,3),(b,y,2),(p,z,2),(p,x,3),...] 其中第一个元组的第一个元素位于 [b,p] 中,第二个元…
Prolog,确定两个列表是否不相等的程序
我想构建一个 Prolog 程序来确定作为参数提供的两个列表是否不相等。 这就是我到目前为止所做的。 not-equal([],[a|_]). not-equal([a|_],[H|T]):-not…
在 Prolog 中构建表达式树
我正在寻找一种在 Prolog 中构建表达式树的方法。我已经做了一些实验并提出了以下工作代码(仅处理常量和加号表达式): const(_). plus(_, _). eval(…
Prolog集差异关系
在 Prolog 中定义集合减法关系: difference( Set 1, Set 2, SetDifference) 其中所有三个集合都表示为列表。例如: difference( [a,b,c,d], [b,d,e,f…
在 Prolog 中创建表达式树列表
让我们考虑以下 prolog 代码,它允许我形成表达式树: plus(_,_). eval(A, A) :- number(A). eval(plus(A, B), R) :- eval(A, A_R), eval(B, B_R), R …
没有函子的 prolog 术语
我面临着有关列表和术语的序言问题。那么我的问题是如何编写一个谓词 transform([a,b],X) 将返回 X = (a,b) 或反之亦然 这对我来说很奇怪,因为我以前…