本文介绍了Prolog从列表中删除多个元素的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我知道如何从列表中删除一个元素,但是有一种方法可以从列表中删除多个元素?例如,

I know how to remove an element from a list but is there a way to remove more than one elements from a list? For example,

deletelist([a,b,c,a,b],[a,c],X)
X = [b,b] % delete a and c from the list.

推荐答案

SWI-Prolog提供subtract/3:

SWI-Prolog offers subtract/3:

?- subtract([a,b,c,a,b], [a,c], X).
X = [b, b].

?- listing(subtract).
lists:subtract([], _, []) :- !.
lists:subtract([A|C], B, D) :-
    memberchk(A, B), !,
    subtract(C, B, D).
lists:subtract([A|B], C, [A|D]) :-
    subtract(B, C, D).

这篇关于Prolog从列表中删除多个元素的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-15 01:27