我是新来的Prolog和我被困在一个谓词,我试图做。其目的是通过给定P的四元组[X,Y,S,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).
感谢您的帮助!