Я новичок в Prolog, и я застреваю в предикате, который я пытаюсь сделать. Целью этого является рекурсия через список квадов [X, Y, S, P] с заданным P, когда квадрат имеет тот же P, который хранит его во временном списке. Когда он встречается с новым P, он смотрит, будет ли временный список больше длины 2, если он затем сохраняет временный список в списке вывода, если менее 2 удаляет квадрат, а затем снова запускает рекурсию, новый П.
Heres мой код:Пролог: временное хранение списка
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).
Спасибо за любую помощь!