adjacent(X,Y,[X,Y|_]).
adjacent(X,Y,[_|Zs]) :- adjacent(X,Y,Zs).
last(X,[X]).
last(X,[_|Ys]) :- last(X,Ys).
(5)
% sum(Sum,ListOfIntegers) :-
% Sumは整数のリストListOfIntegersの要素の和である.
(a) plus/3を使った定義
natural_number(0).
natural_number(s(X)) :- natural_number(X).
plus(0,X,X) :- natural_number(X).
plus(s(X),Y,s(Z)) :- plus(X,Y,Z).
sum_a(0,[]).
sum_a(X,[Y|Ys]) :- sum_a(Z,Ys), plus(Y,Z,X).
(b) 補助述語を使わない定義
sum_b(0,[]).
sum_b(s(X),[s(Y)|Ys]) :- sum_b(X,[Y|Ys]).
sum_b(X,[0|Ys]) :- sum_b(X,Ys).
0 件のコメント:
コメントを投稿