list - Prolog 从列表中删除多个元素

标签 list prolog

我知道如何从列表中删除一个元素,但是有没有办法从列表中删除多个元素?例如,

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

最佳答案

SWI-Prolog 提供 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).

关于list - Prolog 从列表中删除多个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6094500/

相关文章:

html - 将选择列表中的所有选项发送到另一个 JSP

list - 如何从Prolog中的列表中删除最后一个元素?

c# - 将 Prolog 与 C# (Unity) 结合使用

c# - 使用 LINQ 根据日期从列表中删除项目

python - 如何在 python 中使用 CSV 文件的第一行创建列表

command-line - 从终端查询不会打印任何内容

prolog - 是否有与 "wildcard"运算符相反的操作符专门用于在 Prolog 中找不到指定的项目?

prolog - 基于 Prolog 数据文件的多用户 Web 应用程序

c++ - 关于STL列表中插入元素的一个问题

list - 如何将 ImmutableJS 列表分成多个列表