我正在尝试从Prolog中的列表中删除第一次出现的元素。
我的代码:
remove_first_X(X,[X|Xs],Xs). %remove X
remove_first_X(X,[Y|Xs],[Y|Xs]) :-
remove_first_X(X,Xs,Xs).
不起作用:
?- remove_first_X(1,[1,2,3],[2,3]).
true.
?- remove_first_X(1,[2,1,3],[2,3]).
false.
请帮忙!:-)
另一个尝试是更接近:
remove_first_X(X,[X|Xs],Xs).
remove_first_X(X,[Y|Xs],[Y|Ys]) :-
remove_first_X(X,Xs,Ys).
但是在X首次出现后将其删除:
?- remove_first_X(1,X,[2,1,0]).
X = [1, 2, 1, 0] ;
X = [2, 1, 1, 0] ;
X = [2, 1, 1, 0] ;
X = [2, 1, 0, 1] ;
false.
尝试在第二次尝试中添加一件事
remove_first_X(X,[X|Xs],Xs).
remove_first_X(X,[Y|Xs],[Y|Ys]) :-
X \= Y,
remove_first_X(X,Xs,Ys).
在您运行的示例中发生的事情是
X = [1, 2, 1, 0]
它只是尝试了remove_first_X
X = Y
东西,这是您应确保的事情。本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句