标签: prolog

Prolog,Prolog中的新功能和语法错误

我是Prolog的新手(也许是几个小时),我收到这些错误和警告,最重要的是请告诉我如何解决这个错误及其来源.

我的节目

这种语言太模糊了.

谢谢.

   :- redefine_system_predicate(legalTime(T)).
       legalTime(T,[T|_]).
       legalTime(T,[_|S]) :- legalTime(T,S).

   :- redefine_system_predicate(subset(_,_)).
       subset([],_).
       subset([T|S],K) :- legalTime(T,K), subset(S,K).

   disjoint([],_).
   disjoint([T|S],K) :- not(legalTime(T,K)), disjoint(S,K).

   :- redefine_system_predicate(union(_,_,_)).
      union(L,K,M) :- append(L,K,M).

   :- redefine_system_predicate(intersection(_,_,_)).
       intersection([],_,[]).
       intersection([T|S],K,M) :-not(legalTime(X,K)), intersection(S,K,M).
       intersection([T|S],K,[X|M]) :- legalTime(T,K), intersection(S,K,M).

      difference([],_,[]).
      difference([T|S],K,M) :- legalTime(X,K), difference(S,K,M).
      difference([X|L],K,[X|M]) :- not(legalTime(X,K)), difference(L,K,M).

   :- redefine_system_predicate(legal_Schedule(X)).
      legal_Schedule(X,[X|_]).
      legal_Schedule(X,[_|S]) :- legal_Schedule(X,S).

Schedule(C, R, between(S, E)) :- Schedule(C, R, between(S, E)), between(S, E).
Schedule(C, R, between(S, E)) :- Schedule(C, R, between(S, E)), C depends on R.
Schedule(C, R, between(S, E)) …
Run Code Online (Sandbox Code Playgroud)

prolog

-2
推荐指数
1
解决办法
211
查看次数

如何从序言中的列表中修剪前 N 个元素

如何编写 prolog 程序以使用 conc 操作从 prolog 中的 List 中修剪前 N 个元素。

trim(L1,N,L2) which is true if L2 contains the first N elements of L1 
Run Code Online (Sandbox Code Playgroud)

有人能帮帮我吗。

这是我的答案,正确吗?

trim(L1, N, L2):- conc(L2,T,L1), length(L2,N),length(L1,N2), N2>= N
Run Code Online (Sandbox Code Playgroud)

concat list trim prolog

-2
推荐指数
1
解决办法
3151
查看次数

查找逻辑公式的一致分配

我即将在Prolog中实现逻辑术语的证明者.我当前的代码并不是真的可以呈现,因此,我只是说,我想要我的程序做什么,希望你可以给我一些很好的建议:)

它应该采用变量列表(也就是说逻辑参数),其次是包含这些参数的逻辑公式(例如'not'(A 'and' B) 'or' 'not'(B 'and' C) 'or' ...,依此类推).

作为输出,我希望我的程序能够以可能的一致性分配进行响应.单个参数可以是true(1)或false(0).

所以我的目标是回归A=0, B=0, C=0 ; A=1等等.

我很高兴有关我的计划的每一个帮助:)

boolean-logic prolog clpb

-2
推荐指数
1
解决办法
140
查看次数

Prolog未定义的过程和操作员优先级冲突错误?

刚刚开始学习Prolog,我不知道为什么我会收到这个错误.我无法理解我能做些什么.

这是'代码':

?- assert(likes(a , beaf)).

?- assert(likes(b , nuduls)).
?- assert(likes(b , hotdog)).

?- assert(likes(c , sandwicth)).
?- assert(likes(c , bargar).

?- assert(likes(d , juice)).
?- assert(likes(d , chicken_curry)).
?- assert(likes(d , nudules)).

?- assert(likes(e , brade)).
?- assert(likes(e , butter)).
?- assert(likes(e , bargar)).

?- friend(e,d).
?- friend(d,a).
?- friend(d,b).
?- friend(d ,c).




?- highlyrecommended(X,L):-friend(X,Y),likes(Y,L).
?- recommended(X,L):-friend(X,Z),friend(Z,Y),likes(Y,L).



?- Is d is the friend of e ?
?- Y
?- Is e is the friend of c ?
?- …
Run Code Online (Sandbox Code Playgroud)

prolog

-3
推荐指数
1
解决办法
2801
查看次数

合并Prolog中两个列表中的备用元素

mergealt(X,Y,Z)如果列表Z是列表X和Y中的备用元素的合并,我需要编写一个成功的Prolog谓词.

输入和输出如下:

?- mergealt([1,2,3,4],[6,7,8],Z).
Z = [1, 7, 3] .
?- mergealt([1,2,3,4],[6,7,8,9],Z).
Z = [1, 7, 3, 9] .
?- mergealt([1,2,3,4],[6,7,8,9,10],Z).
Z = [1, 7, 3, 9] .
Run Code Online (Sandbox Code Playgroud)

我真的不明白递归.我怎样才能开始解决这个问题?

list prolog

-4
推荐指数
1
解决办法
1208
查看次数

标签 统计

prolog ×5

list ×2

boolean-logic ×1

clpb ×1

concat ×1

trim ×1