このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1289913298/320
#  [1] 授業単元: プログラミング基礎 
#  [2] 問題文: n 個の整数型データ配列a[i]を、一つの関数に渡して、 
#        その一つの関数内で平均値と分散値を求め、main関数内で 
#        平均値と分散値を参照できるプログラムを作成せよ。 
#        ただし、配列の受渡し、結果の受け渡しにはポインタを利用すること。 
#  
% ここでは課題として、書いてみたが、
% このような述語定義は、決して推奨されるようなものではない!

平均値と分散値を一つの述語で求める(_値ならび,_平均値,_分散値) :-
        平均値と分散値(_値ならび,[],_ならびの長さ,0.0,_平均値,_分散値).

平均値と分散値([],Ln,_ならびの長さ,_合計,_平均値,0.0) :-
        length(Ln,_ならびの長さ),
        _平均値 is _合計 / _ならびの長さ,!.
平均値と分散値([_値|R],Ln,_ならびの長さ,_累計の一,_平均値,_分散値) :-
        _累計の二 is _累計の一 + _値,        
        平均値と分散値(R,[_|Ln],_ならびの長さ,_累計の二,_平均値,_分散値の二),
        _分散値 is _分散値の二 + ((_値 - _平均値) ^ 2) / _ならびの長さ.