(1)
% triangle(N,T) :- % TはN番目の三角数である. triangle(N,T) :- triangle(N,0,T). triangle(N,Temp,T) :- N<0, Temp1 is Temp+N, N1 is N-1, triangle(N1,Temp1,T). triangle(0,T,T). |
(2)
% power(X,N,V) :- % VはXのN乗である. power(X,N,V) :- power(X,N,1,V). power(X,N,Temp,V) :- N>0, Temp1 is Temp*X, N1 is N-1, power(X,N1,Temp1,V). power(_,0,V,V). |
(3)
% between(I,J,K) :- % Kは,整数IとJの両端を含む区間内の整数である. between(I,J,J) :- I=<J. between(I,J,K) :- I<J, J1 is J-1, between(I,J1,K). |
(4)
% timeslist(IntegerList,Product) :- % Productは整数のリストIntegerListの積である. timeslist(Is,Pro) :- timeslist(Is,1,Pro). timeslist([I|Is],Temp,Pro) :- Temp1 is Temp*I, timeslist(Is,Temp1,Pro). timeslist([],Pro,Pro). |
(5)
% area(Chain,Area) :- % Areaは,頂点のリストChainで囲まれた多角形の面積である. % ただし,各頂点の座標は整数の対(X,Y)で表される. area(XYs,Area) :- area(XYs,0,Area). area([(X1,Y1),(X2,Y2)|XYs],Temp,Area) :- Temp1 is Temp+(X1*Y2-Y1*X2)/2, area([(X2,Y2)|XYs],Temp1,Area). area([_],Area,Area). |
(6)
% minimum(Xs,Min) :- % Minは,整数のリストXsの要素の最小値である. minimum([X|Xs],M) :- minimum(Xs,X,M). minimum([X|Xs],Y,M) :- X=<Y, minimum(Xs,X,M). minimum([X|Xs],Y,M) :- X >Y, minimum(Xs,Y,M). minimum([],M,M). |
(7)
% my_length(Xs,N) :- % Nは,リストXsの長さである. my_length(Xs,N) :- my_length(Xs,0,N). my_length([_|Xs],Temp,N) :- Temp1 is Temp+1, my_length(Xs,Temp1,N). my_length([],N,N). |
(8)
% range(M,N,Ns) :- % Nsは,MとNを含む区間の整数のリストである. range(M,N,Ns) :- range(M,N,[],Ns). range(M,N,Xs,Ys) :- M =< N, N1 is N-1, range(M,N1,[N|Xs],Ys). range(M,N,Xs,Xs) :- M > N. |
0 件のコメント:
コメントを投稿