set_value_in_array というルールがあります。彼は Array[J] の値を Val に置き換えます。
set_value_in_array([], _, _, _, _).
set_value_in_array([Head | Array], Val, J, AccJ, NewArray) :-
AccJ = J,
NewAccJ is AccJ + 1,
set_value_in_array(Array, Val, J, NewAccJ, [Val | NewArray])
;
NewAccJ is AccJ + 1,
set_value_in_array(Array, Val, J, NewAccJ, [Head | NewArray]).
-----------------------------
-----------------------------
% execute in terminal
?- set_value_in_array([1,2,3], 10, 1, 0, NewArray).
true ;
true.
set_value_in_array が NewArray を [1, 10, 3] と表示しないのはなぜですか? 彼は常に真を返します。
アップデート:
set_value_in_array([], Val, J, AccJ, NewArray) を実行すると:- write(NewArray)。彼は正しい解決策に見えるものを返します
?- set_value_in_array([1,2,3,4,5,6],100,1,0,X).
[6, 5, 4, 3, 100, 1|_G516]
true.
しかし、書き込み機能なしで機能させるにはどうすればよいですか?