所以我有一个程序应该替换列表中的每个元素的实例,而不是一个一个。
E.g。
change_element(5,[1,5,9,12,5,6],3,X). should give
X = [1,3,9,12,5,6] and
X = [1,5,9,12,3,6]
所以它用3替换前5,然后在第二个输出中,前5个保持5,第二个变为3.
我能够实现代码来更改第一个元素,但代码在此之后终止。没有进入第二个元素。
change_element(A,[A|As],B,[B|As]).
change_element(A,[E|As],B,[E|Bs]):-
dif(A, E),
change_element(A,As,B,Bs).
任何想法,我应该采取哪些不同的方式来获得理想的结果?
答案 0 :(得分:2)
在比赛结束后再继续,保留旧元素:
change_element(A,[A|As],B,[B|As]).
change_element(A,[A|As],B,[A|Bs]):-
change_element(A,As,B,Bs).
change_element(A,[E|As],B,[E|Bs]):-
dif(A, E),
change_element(A,As,B,Bs).