このように使う
Ȁ3 ?- h1(
1,R),h1(R,R1),h1(R1,R2).
R = [[1, 1], [1]],
R1 = [[1, 2, 1], [2, 2], [1]],
R2 = [[1, 3, 3, 1], [3, 6, 3], [3, 3], [1]].
Rが2段目
R1が3段目
R2が4段目。
以下同様に求まる。
コードはこちら。
端っこの特殊処理でコードが膨らむのが欠点。
f([B],[C],[D]):-
D is B+C,!.
f([A|Xs],[B,C|Ys],[D|Zs]):-
!,
D is A+B+C,
f(Xs,[C|Ys],Zs).
f1([A|Xs],[B|Ys],[D|R]):-
D is A+B,
f(Xs,[B|Ys],R).
g([_],[1]):-!.
g([A,B|Xs],[C|Ys]):-
!,
C is A+B,
g([B|Xs],Ys).
g1(Xs,[1|Ys]):-
g(Xs,Ys).
h([X],[X]):-!.
h([X,Y|Zs],[R|Rs]):-
f1(X,Y,R),
!,
h([Y|Zs],Rs).
h1([X|Xs],[R|Rs]):-
g1(X,R),
h([X|Xs],Rs).
最終更新:2015年10月30日 03:46