我有一些 set_value_in_array 的规则。他是 Val 的 Array[J] 中的替代值。
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.
但是如何让它在没有写功能的情况下工作呢?