Написать предикат, который формирует список из наиболее часто встречающихся элементов списка - Prolog

Узнай цену своей работы

Формулировка задачи:

необходимо реализовать данную задачу, вот как бы нашлось такое :
тут мы изначально забиваем необходимую частоту встречаемости, а вот как сделать так чтобы эта частота встречаемости считалась и просто выбирались частые символы. Например: [0,3,5,7,1,5,3,0,3,3,5,7,0,5,0]–>[0,3,5] Заранее спасибо

Решение задачи: «Написать предикат, который формирует список из наиболее часто встречающихся элементов списка»

textual
Листинг программы
seq_qty(S, SQ2) :-
    seq_qty(S, [], SQ),
    sort(SQ, SQ1),
    reverse(SQ1, SQ2).
 
seq_qty([], SQ, SQ).
seq_qty([H | T], SQ0, SQ) :-
    select1([N, H], SQ0, SQ1),
    N1 is N + 1,
    !,
    seq_qty(T, [[N1, H] | SQ1], SQ).
seq_qty([H | T], SQ0, SQ) :-
    seq_qty(T, [[1, H] | SQ0], SQ).
 
 
select1(X, [X|Tail], Tail).
select1(Elem, [Head|Tail], [Head|Rest]) :-
    select1(Elem, Tail, Rest).

Оцени полезность:

5   голосов , оценка 4.2 из 5
Похожие ответы