Заменить первые 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. Может кто-нибудь сказать мне, что здесь не так?