2016-06-07 11 views
1

sagen sie, ich habe einige Fakten wie dieseMax wiederholtes Element 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]). 

jetzt will ich finden, welches Element wiederholt wird meist in der Liste in diesem Fall

max_repeated = 3. 

Dank für Ihre Zeit danken und ich hoffe, dass jemand mir helfen wird,

+0

lurker nichts weiß ich nicht, wo ich anfangen soll – Lumi

Antwort

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

mit dieser Definition:

:- 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) 
     )). 
Verwandte Themen