【发布时间】:2018-08-22 13:46:26
【问题描述】:
是否可以编写一个谓词,它接受一个输入列表并“输出”(成功)一个带有键值对的输出列表
示例:
freqs([a,b,a,a,b,c],L).
L = [(a,3),(b,2),(c,1)]
如果可能,我更愿意在 O(n) 中执行此操作。我得到的最远的是这个
freqs([],[]).
freqs(In,Out):-
freqs(In,[],Out).
freqs([],Out,Out).
freqs([X|Xs],Table,Out):-
\+ member((X,_),Table),
freqs(Xs,[(X,1)|Table],Out).
freqs([X|Xs],Table,Out) :-
member((X,N),Table),
% stuck
更具体地说,如何增加 N? 还有其他不需要辅助谓词的解决方案吗?
【问题讨论】:
标签: prolog