Prolog удалить уникальные value в листе

Задача - удалить элементы листа, которые являются уникальными. Я написал предикат, который берет из листа те значение, у которых количество повторений в листе > 1. Проблема в том, что после предиката лист получается в реверсивном порядке + этот предикат "не удаляет", а скорее оставляет не уникальные значения. Можно как-то изменить?

countX([],_,0).
countX([X|T], X, P1) :- countX(T, X, P), P1 is P+1.
countX([H|T], X, P) :- H=\=X, countX(T, X, P).

delUnique(List, NoUniqueList) :- 
    delUniqueHelper(List, [], List, NoUniqueList).

delUniqueHelper([], Acc, _, Acc).
delUniqueHelper([H|T], Acc, List, NoUniqueList) :-
  countX(List, H, 1),
    delUniqueHelper(T, Acc, List, NoUniqueList).

delUniqueHelper([H|T], Acc, List, NoUniqueList) :-
    delUniqueHelper(T, [H|Acc], List, NoUniqueList).

Ответы (0 шт):