增加SWI-​​Prolog中的元素

时间:2012-04-08 20:34:04

标签: prolog increment

好吧,因为我今天正在练习“Prolog逻辑”,我在另一个帖子中找到了这个未解决的问题,我想知道它是如何工作的。

  

按其深度递增列表的每个元素,例如   增量([0,0,[0]],[1,1,[2]]) - >真

我几乎以为我喜欢这种语言... :)) 有可能吗?感谢。

1 个答案:

答案 0 :(得分:2)

以下代码完成了这项工作:

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]]].