このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1339338438/49
#  {1] 授業単元:プログラミング演習  
#  [2] 問題文:  
#  http://ime.nu/codepad.org/5oepZpDW 
#  上記のプログラムに5人の得点(10点満点)を受け取ると、5人の得点の偏差値を戻すhensachi関数を追加せよ。 
#  そして5人のテストの得点を整数型配列data[5]の各要素それぞれ入力すると、5人の得点の平均点に加えて偏差値も出力するプログラムをheikin関数およびhensachi関数を利用して作成しなさい。 
#  

'5人の得点(10点満点)を受け取ると、5人の得点の偏差値を戻す'(_5人の得点の偏差値) :-
        '5人の得点(10点満点)を受け取ると'(_5人の得点ならび),
        '5人の得点の偏差値を戻す'(_5人の得点ならび,_5人の得点の偏差値).

'5人の得点(10点満点)を受け取ると'(_5人の得点ならび) :-
        length(_5人の得点ならび,5),
        findall(_得点,(
                    append(Ln,[_|_],_5人の得点ならび),
                    '得点(10点満点)を受け取る'(Ln,_得点)),
                _5人の得点ならび).

'得点(10点満点)を受け取る'(Ln,_得点) :-
        length([_|Ln],_何人目),
        writef('%t人目の得点(10点満点)を入力してください : ',[_何人目]),
        get_line(Line),
        '診断: 得点(10点満点)を受け取る'(Line,_得点),!.
'得点(10点満点)を受け取る'(Ln,_得点) :-
        '得点(10点満点)を受け取る'(Ln,_得点).

'診断: 得点(10点満点)を受け取る'(Line,_得点) :-
        atom_to_term(Line,_得点,_),
        integer(_得点),
        _得点 >= 0,
        _得点 =< 10,!.

偏差値(_標本値,_算術平均,_標準偏差,_偏差値) :-
        _偏差値 is 10 * (_標本値 - _算術平均) / _標準偏差 + 50.

偏差値(_標本ならび,_偏差値ならび) :-
        平均値(_標本ならび,_平均値),
        標準偏差(_標本ならび,_標準偏差),
        findall(_偏差値,(
                    member(_値,_標本ならび),
                    偏差値(_値,_平均値,_標準偏差,_偏差値)),
                _偏差値ならび).

標準偏差(_標本ならび,V) :-
        length(_標本ならび,N),
        平均値(_標本ならび,M),
        標準偏差(_標本ならび,N,M,0.0,V).

標準偏差([],N,M,S,V) :-
        V is sqrt(S / (N - 1)),!.
標準偏差([A|R],N,M,S,V) :-
        S1 is (A - M) ^ 2,
        S2 is S + S1,
        標準偏差(R,N,M,S2,V).