以下代码是不可能的,因为它只能删除前两个或后两个。
delements(L,L1):- append([_,_],L1,L),append(L1,[_,_],L).
答案 0 :(得分:3)
您不应在同一列表中重复使用L1
和L
。您需要在此处添加一个变量:
delelements(L, R) :-
append(M, [_, _], L),
append([_, _], R, M).
因此,这里的M
是一个包含L
元素的列表,除了后两个元素。 R
是M
的变体,只是删除了第一个元素。
然后给我们:
?- delelements([1,4,1,3,0,2,2,5], R).
R = [1, 3, 0, 2] ;
false.
此外,我们不需要使用append/3
[swi-doc]从头部删除固定数量的元素。我们可以为此使用统一性:
delelements(L, R) :-
append([_, _ | R], [_, _], L).
答案 1 :(得分:2)
trim(X,Y) :-
append([[_,_],Y,[_,_]],X).