用任何其他数字替换数字的前 K 个出现。考虑在这里将 1 替换为 8。
这就是我的谓词的样子
replace_first_k(3,[1,2,3,1,1,5,6,1,7],X).
它应该给出以下输出 -
E = [8,2,3,8,8,5,6,1,7]
这是我到目前为止写的代码
replace(0,[], []).
replace(0,L,L).
replace(X,[H|T], Res) :-
( X > 0 , 1 \== H -> replace(X1,T, Res1) , Res = [H|Res1]
; 1 == H,X1 is X - 1, replace(X1,T, Res1), Res = [8|Res1] ).
它似乎仅在我的第一个 X 出现为 1 时才有效。有人可以告诉我这里有什么问题吗?