2

さて、私は今日「Prolog ロジック」を練習していて、ここの別のスレッドでこの未回答の問題を見つけたので、それがどのように機能するのか疑問に思っていました.

リストのすべての要素をその深さでインクリメントします。たとえば、increment([0,0,[0]],[1,1,[2]]) -> true

そして、私はこの言語が好きだと思っていました... :)) そのようなことは可能ですか? ありがとう。

4

1 に答える 1

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]]].
于 2012-04-09T10:07:09.503 に答える