我需要一个查询,它将从列表中删除所有变量和重复项。
例子:
?- L = [1,2,3,X,Y,3,2], my_awesome_predicate(L, Res).
那么,Res 应该是:[1,2,3]。
我不在乎顺序(可能是 [2,3,1]、[3,2,1] 或其他)。
不幸的是,我有一项任务我必须关心效率,所以我的主要问题是 - 它可以更快地完成吗?目前,我有以下代码:
remove_variables([], []).
remove_variables([H|List], Res):- var(H), !, remove_variables(List, Res).
remove_variables([H|List], [H|Res]):- remove_variables(List, Res).
my_awesome_predicate([], []).
my_awesome_predicate(List, Res):-
sort(List, Sorted),
remove_variables(Sorted, Res).