【发布时间】:2016-07-27 10:20:16
【问题描述】:
我正在尝试查找列表的补集,给定列表 L1 和通用列表 L2,代码如下:
complement(L1, L2, Res):-
setof(X, (nth0(N, L2, X), not(member(X,L1))),Res).
但是,我的结果包含重复项,并且没有按照我的意愿以列表形式给出:
23 ?- complement([1,3], [-1,1,3,5,2,4,2,55,1,0], Res).
Res = [-1] ;
Res = [5] ;
Res = [2] ;
Res = [4] ;
Res = [2] ;
Res = [55] ;
Res = [0].
我认为这可能是由于 Prolog 的内置回溯,但我不确定如何解决此问题以正确格式化结果并删除结果中的任何重复项。
【问题讨论】:
标签: prolog prolog-setof