Я новичок в Прологе, и я застрял на предикате, который пытаюсь сделать. Целью этого является рекурсия по списку четырехугольников [X,Y,S,P] с заданным P, когда у четырехугольника есть тот же самый P, он сохраняет его во временном списке. Когда он сталкивается с новым P, он проверяет, больше ли временный список длины 2, если он больше, то сохраняет временный список в выходном списке, если меньше 2, удаляет четверку, а затем снова запускает рекурсию. новый P.
Вот мой код:
deleteUP(_,[],[],[]).
deleteUP(P,[[X,Y,S,P]|Rest],Temp,Output):-
!,
appends([X,Y,S,P],Temp,Temp),
deleteUP(P,[Rest],Temp,Output).
deleteUP(NextP,[[X,Y,S,P]|Rest],Temp,Output):-
NextP =\= P,
listlen(Temp,Z),
Z > 1, !,
appends(Temp,Output,Output),
deleteUP(NextP,[_|Rest],Temp,Output).
listlen([], 0).
listlen([_|T],N) :-
listlen(T,N1),
N is N1 + 1.
appends([],L,L).
appends([H|T],L,[H|Result]):-
appends(T,L,Result).
Спасибо за любую помощь!