如何计算列表中的元素数?

| 我需要编写一个小的Prolog程序来计算列表中每个元素的出现次数。
numberOfRepetition(input, result)
例如:
numberOfRepetition([a,b,a,d,c,a,b], X)
可以用
X=[a/3,b/2,d/1,c/1]
满足,因为
a
出现3次,
b
出现2次,
c
d
出现1次。     
已邀请:
        我不想给你答案,所以我会帮助你:
% Find the occurrences of given element in list
%
% occurrences([a,b,c,a],a,X).
% -> X = 2.

occurrences([],_,0).
occurrences([X|Y],X,N):- occurrences(Y,X,W),N is W + 1.
occurrences([X|Y],Z,N):- occurrences(Y,Z,N),X\\=Z.
根据您的努力和反馈,我可以帮助您获得答案。     
        请查看我对相关问题“如何在Prolog中的列表中计算元素出现次数”的回答! 在这个答案中,我提出谓词“ 8”,它可以满足您的需求。 样品使用:
:- list_counts([a,b,a,d,c,a,b],Ys).
Ys = [a-3, b-2, d-1, c-1].
请注意,此谓词对表示多重性的键值对使用稍有不同的表示形式:主函子
(-)/2
而不是
(/)/2
。 如果可能,请使用
(-)/2
切换到表示形式,以更好地与标准库谓词(如
keysort/2
)互操作。     
        如果您希望查找出现次数最多的元素:
occurrences([],_,0).
occurrences([X|Y],X,N):- occurrences(Y,X,W),N is W + 1.
occurrences([X|Y],Z,N):- occurrences(Y,Z,N),X\\=Z.

**make_list(Max):-
   findall((Num,Elem),occurrences([d,d,d,a,a,b,c,d,e],Elem,Num),L),
   sort(L,Sorted),
   last(Sorted,(_,Max)).**
    

要回复问题请先登录注册