好吧,由于我今天正在练习“Prolog 逻辑”,并且在这里的另一个线程中发现了这个未解决的问题,我想知道它是如何工作的。
将列表的每个元素按其深度递增,例如 increment([0,0,[0]],[1,1,[2]]) -> true
而且我几乎认为我喜欢这种语言...... :)) 这样的事情可能吗?谢谢。
以下代码完成了这项工作:
increment(X,Y):- increment(X,0,Y).
increment([],_,[]) :- !.
increment([X|Xs],N,[Y|Ys]) :- !, N1 is N+1,
increment(X,N1,Y), increment(Xs,N,Ys).
increment(X,N,Y):- Y is X+N.
只是为了测试它
?- increment([0,0,[0]],X).
X = [1, 1, [2]].
?- increment([0,0,[0,[0,0]]],X).
X = [1, 1, [2, [3, 3]]].