2016-06-07 56 views
1

比方說,我有一些事實是這樣最大重複的元素Prolog的

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

潛伏者沒有我不知道從哪裏開始 – Lumi

回答

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) 
     )).