prolog

    0热度

    1回答

    我想将this Prolog code移植到Racket中的Datalog,使用this page底部的示例。 #lang datalog edge(a, b). edge(b, c). edge(c, d). edge(d, a). path(X, Y) :- edge(X, Y). path(X, Y) :- edge(X, Z), path(Z, Y). path(X, Y)?

    1热度

    2回答

    我想要一个程序给出一个列表L,其中元素X出现三次,它返回一个包含它的NL列表一次。 例如,这个问题 ?- erase([1,2,3,1,6,1,7],1,NL). 应该返回 NL = [1,2,3,6,7] or NL = [2,3,1,6,7] or NL = [2,3,6,1,7] 附: 假设给定的列表不包含任何元素2,4或更多次。 所以,这是我的代码,但是当我提出问题时它返回fals

    2热度

    1回答

    :-consult(words.pl). % words is basically a big database of the % 30.000 most used words in the english language topsolution([], _, P) :- %basecase, in case the given list of letters is

    4热度

    1回答

    我最近开始学习序言,但我很难用递归规则。我明白了简单的规则,但我在这个例子中,我发现了一个计划,让所有元素的总和以列表的麻烦: addup([], 0). addup([FirstNumber | RestOfList], Total) :- addup(RestOfList, TotalOfRest), Total is FirstNumber + TotalOfRest

    0热度

    1回答

    我对Prolog很陌生。我陷入了这个问题: 如果我有两个列表,我如何检查列表1是否包含第二个列表的所有元素,但它们不必相同。所以列表2可能包含更多的元素。 我知道我可以使用member/2来检查某个元素是否在列表中。但是我检查后不知道如何不包含这两个列表的成员。例如: 如果我有列表A = [a,b,c,a]和列表B = [a,b,c,d,e],我首先检查列表A中的第一个'a'是否在列表B中。显然这

    2热度

    1回答

    我需要一个分割给定集合为子集 谓语我到目前为止有: divide_set(S, Sd) :- length(S, L), between(1, L, N), length(Sd, N), append(Sd, S), forall(member(M, Sd), M \= []). 这给了我这些结果: ?- divide_set([a, b, c

    4热度

    1回答

    有没有办法将序列化的float转换成SWI-Prolog浮点数,最好不要放入C中(如果必须,我会这样做)? 我正在解析一个二进制流(OSC协议)。我得到32位IEEE 754浮点数作为4个'代码'字符的列表。现在我想用普通的SWI-Prolog浮点数来统一它。

    -1热度

    1回答

    我正在做一些练习来学习Prolog编程。然而,我无法弄清楚如何做到这一点: I need to solve this equation with a prolog program (click here). 我已经写代码: solveQuadratic([], []). solveQuadratic([a,b,c], Result) :- “结果”必须是与2,1或0元素的列表,显示这个方程的零点。

    1热度

    1回答

    首先,我看到今天早些时候提出的这个相同的问题,我决定亲自尝试一下(并且遇到麻烦)。我希望没关系,我为此创建了一个新问题! 我试图做一个prolog程序,解决二次公式X =( - b±√b 2 -4ac)/ 2a。实现的谓词二次型([A,B,C],[Result])将a,b和c列表作为第一个参数,并将结果列表作为第二个参数。然而,名单给我带来麻烦。我写了这个代码: quadratic([A,B,C]

    2热度

    1回答

    我该如何构建一个列表成一个列表成交错子列表单列表? like recons([[1,2],[3,4]],X)将给出X = [1,3,2,4]? 我一直试图小时,我的代码总是给我非常奇怪的结果或无限循环, 我的想法是这样的: recons([[A|R],REST],List):- recons(R,REST), append(A,[R|REST],List). 我知道它完全错