このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1296387672/319
#  【質問テンプレ】 
#  [1] 授業単元:プログラミング 
#  [2] 問題文(含コード&リンク): 
#   
#  始点はbegin_x,begin_yで、終点はbegin_x,begin_yで指定し、 
#  1..それぞれ指定した間の数字を全部足したものを表示し)、 
#  2..更にその二つをかけたものを表示するプログラムを作成せよ。 
#  例:begin_x=2 begin_y=4 end_x=6 end_y=5なら 
#  x=2+3+4+5+6=20 y=4+5=9 x*y=20*9=180 
#   
#  

それぞれ指定した間の数字を全部足したものを表示し(_begin_x,_begin_y,_end_x,_end_y) :-
        findall(X,for(_begin_x,X,_begin_x),LX),
        findall(Y,for(_begin_y,Y,_begin_y),LY),
        加算(LX,_xの合計),
        加算(LY,_yの合計),
        concat_atom(LX,'+',SX),
        concat_atom(LY,'+',SY),
        _二つをかけたもの is _xの合計 * _yの合計,
        write_formatted('x=%t=%t y=%t=%t x*y=%t*%t=%t\n',[SX,_xの合計,SY,_yの合計,_xの合計,_yの合計,_二つをかけたもの]),!.

加算([],0) :- !.
加算([N|R1],_加算) :-
        加算(R1,_加算1),
        _加算 is N + _加算1.