2016-06-07 55 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) 
     )).