如何解决如何计算列表中的元素数?
| 我需要编写一个小的Prolog程序来计算列表中每个元素的出现次数。numberOfRepetition(input,result)
例如:
numberOfRepetition([a,b,a,d,c,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,W),N is W + 1.
occurrences([X|Y],Z,N),X\\=Z.
根据您的努力和反馈,我可以帮助您获得答案。
, 请查看我对相关问题“如何在Prolog中的列表中计算元素出现次数”的回答!
在这个答案中,我提出谓词“ 8”,它可以满足您的需求。
样品使用:
:- list_counts([a,d,b],Ys).
Ys = [a-3,b-2,d-1,c-1].
请注意,此谓词对表示多重性的键值对使用稍有不同的表示形式:主函子(-)/2
而不是(/)/2
。
如果可能,请使用(-)/2
切换到表示形式,以更好地与标准库谓词(如keysort/2
)互操作。
, 如果您希望查找出现次数最多的元素:
occurrences([],X\\=Z.
**make_list(Max):-
findall((Num,Elem),occurrences([d,e],Elem,Num),L),sort(L,Sorted),last(Sorted,(_,Max)).**
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。