私はPrologを初めて使っています。私は、自分がやろうとしている述語に固執しています。その目的は、クワッド[X、Y、S、P]のリストを特定のPで再帰させることです。クワッドが同じPを持つとき、それを一時的なリストに格納します。新しいPを参照すると、テンポラリ・リストが長さ2より大きいかどうかが調べられます。テンポラリ・リストが出力リストに格納されている場合、2未満の場合はクワッドが削除され、再帰が再開されます。新しいP.
HERESに私のコード:任意の助けProlog:一時的なリストの記憶
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).
ありがとう!