我是Prolog编程语言的新手,我正在尝试学习列表结构。我想将列表A与列表B进行比较,并找到A列表中不在B列表中的所有元素,然后写入列表C。谢谢。
示例查询
HttpErrorException
预期
match([a,b,c,d,e,f,g],[a,b,c],L3)
我能够比较两个列表,并找到“ true”为“ false”。有了这段代码。
L3=[d,e,f,g]
答案 0 :(得分:2)
因此,有两种方法。第一个是编写自己的谓词:
my_subtract([],_,[]):- !.
my_subtract([H|T],B,[H|T1]):-
\+member(H,B), !,
my_subtract(T,B,T1).
my_subtract([H|T],B,[H1|T1]):-
member(H,B), !,
my_subtract(T,B,[H1|T1]).
test:-
LA = [a,b,c,d,e,f,g],
LB = [a,b,c],
my_subtract(LA,LB,LO1),
writeln(LO1).
?- test.
[d, e, f, g]
否则,您可以在SWI-Prolog中使用谓词subtract/3
。
test:-
LA = [a,b,c,d,e,f,g],
LB = [a,b,c],
subtract(LA, LB, LO),
writeln(LO).
?- test.
[d, e, f, g]