prolog

    1热度

    1回答

    我有一个Prolog代码复制整个列表,但我想要的只是复制一个单词(例如“a”)。例如; dups([],[]). dups([H|T],[H,H|Y]) :- dups(T,Y). 我的代码重复列出[a,b]像=>[a, a ,b ,b]。 但我想要的是,重复列表[a, b] like =>[a, a, b]。

    0热度

    1回答

    我有一个解析语法的谓词。 语法的产品有: S-> B B->bB B->b 谓词取意在列表和确定列表是否属于语法。我的代码如下: s(List,[]):- b(List,[]). b(List,[]):-'C'(List,b,X), b(X,[]). b([b|List],List). 谓词似乎能够确定[B]是一个解决方案,但是,它无法检测到[B,B,B]也是一种解决方案。 例如, ?-s

    1热度

    1回答

    我需要将列表拆分为比N大一个的列表,同时忽略任何非整数。它完美的工作,除非它包含非整数时引发异常。任何人都可以看到我在做什么错了,请: split([],N, [],[]). split([HeadOrig | TailOrig], N, L1, TailOrig):- \+ integer(HeadOrig), split(TailOrig, N, L1, TailOrig

    0热度

    1回答

    我需要在序言数据集中找到关系。我有不同种类的火车有不同的功能,例如Train1: has_car(rel_east1,car_11). has_car(rel_east1,car_12). has_car(rel_east1,car_13). infront(car_11,car_12). infront(car_12,car_13). size(car_11,long). siz

    0热度

    1回答

    我使用findall获得了一个特定的列表,然后想要计算它中的元素数量。 即 huntingbreeds(List) :- findall(Breedname, breed(Breedname,_,hunting), List). 这从我的数据库[小猎犬,巴塞特]返回猎狗的需求列表。 但现在,如果我尝试使用我的新谓词算什么? list_length([] , 0). list_len

    4热度

    1回答

    说我有一个看起来像这样的数据库: regular_player('Xi'). regular_player('Doyle'). expert_player('Houdini'). expert_player('Gandhi'). % don't allow expert players to be paired together start --> good_pair. good

    1热度

    2回答

    我正在尝试开发一个prolog过程,它将使用univ(=..)将任何给定列表中的数字转换为它们的平方根列表。到目前为止,我有 convert(X,Y): number(X), Y is X^2. use([],_,[]). use([_|X],convert,L):- convert(X,Y), L =..[convert,X,Y]. 这评估假,什么可能是错误的

    2热度

    1回答

    我有单引号原子的问题。 虽然p =='p'返回true,为什么p = \ ='p'不返回false?它给了我一个错误,说'P'不是一个函数。

    2热度

    1回答

    我在学习Prolog和。(a,[])== [a]。应该在SWI-Prolog中返回true,但它给我一个错误说 ERROR: Type error: `dict' expected, found `a' (an atom) ERROR: In: ERROR: [11] throw(error(type_error(dict,a),_4020)) ERROR: [10] '$type_erro

    1热度

    3回答

    这是一个基本的Prolog问题。我试图实现可能非正式表达如下的推理: x(X)为真的(必要但不充分)条件是a(X)和b(X)必须成立。我们知道x(玛丽)。这些条件一定是为x(玛丽)而定的。它是的情况。因此,(玛丽)和b(玛丽)都是真的。 下面的代码显然不做什么,我心里有: a(jim). b(jack). x(X) :- a(X), b(X). x(mary). 如果我现在问一个(玛丽)