【发布时间】:2021-06-18 11:20:33
【问题描述】:
我刚刚开始使用 tkeclipse 在 Prolog 中编程。我想要做的是在它出现的第一个地方用另一个元素替换列表中的一个元素。但是,当我按下更多按钮 (;) 时,我希望查询也返回其他解决方案。示例:
?- replace(1,a,[1,2,3],R).
R = [a, 2, 3]
Yes
?- replace(1,a,[1,2,1,1,3],R).
R = [a, 2, 1, 1, 3] ;
R = [1, 2, a, 1, 3] ;
R = [1, 2, 1, a, 3] ;
No
到目前为止,我写的一切正常,但最后,在 [1,2,1,a,3] 之后,我也得到 [1,2,1,1,3] 而不是 no。我的代码如下:
%%% replace/4
replace(_,_,[],[]).
replace(X,Y,[X|T],[Y|T]).
replace(X,Y,[H|T],[H|T2]) :-
replace(X,Y,T,T2).
【问题讨论】: