如何在 Prolog 中的列表中搜索多次出现的特定元素?
例如,如果我们在列表中搜索[1,2,3,4,1]
元素1
,Prolog 应该返回true
,否则会返回false
所有其他数字。
这是我到目前为止所拥有的:
duplicate([], _) :-
false,
!.
duplicate([X|_], X) :-
true,
!.
duplicate([H|T], X) :-
T = [_|T1],
duplicate(T, X),
duplicate(T1, X).
我的基本想法是搜索列表,直到找到我要查找的元素,然后再次在列表的尾部搜索该项目。我不想使用 Prolog 提供的 member() 函数。
如果查询询问,Prolog 还应该返回多次出现的元素:duplicate([1,2,3,4,1], X)
,应该打印X = 1
。