让我说我有一些这样的事实
something(a,b,[1,2,3,4]).
something(c,b,[2,3]).
something(e,b,[1,3]).
something(b,a,[1,2]).
something(c,a,[3,4]).
现在我想找到哪个元素主要在列表中重复 在这种情况下
max_repeated = 3.
谢谢你的时间,我希望有人能帮助我
答案 0 :(得分:0)
?- pred_key_count([K]>>(something(_,_,L),member(K,L)),T),aggregate(max(V,K),rb_in(K,V,T),max(V,K)).
K = 3,
...
有了这个定义:
:- meta_predicate pred_key_count(1,-).
pred_key_count(P,T) :-
rb_empty(T),
forall( call(P,K), %(something(_,_,L), member(K,L)),
( nb_rb_get_node(T,K,N)
-> nb_rb_node_value(N,C),
D is C+1,
nb_rb_set_node_value(N,D)
; nb_rb_insert(T,K,1)
)).