List 最大重复元素Prolog

List 最大重复元素Prolog,list,prolog,List,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. 谢谢你抽出时间,我希望有人能帮助我 ?- pred_key_count([K]>>(something(_,_,L),member(K,L)),T)

假设我有一些类似的事实

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.
谢谢你抽出时间,我希望有人能帮助我

?- 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)
        )).
根据这一定义:

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

潜伏者没什么我不知道去哪里惊吓者没什么我不知道从哪里开始