このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1349545643/769
#  【お題】 
#  1) 1〜100からランダムに抽出した整数10個を要素に持つ配列を作成し、 
#  2) その平均値と、 
#  3) 各要素の平均値からの差の二乗値の平均の平方根(標準偏差)を算出して、 
#  4) 1)〜3)の結果を出力するコードをどう書く? 
#   
#  言語のベーサルな表現実装力が見てみたいので、 
#  可能であれば import や require 等の 
#  機能追加をしない素の状態でのチャレンジが望ましい。 
#   
#  出力例: 
#  [77, 62, 26, 17, 88, 40, 14, 11, 4, 49] 
#  38.8 
#  27.85964823898536 
#   
#  正直、デフォでこれら機能を有する統計処理のLL達のアピールを期待したお題だけれど 
#  ループ等でしか書けそうもない普通のLL勢もひねりを加えるなどして面白くして欲しい。 
# 
# 

'1) 1〜100からランダムに抽出した整数10個を要素に持つ配列を作成し、 
2) その平均値と、 
3) 各要素の平均値からの差の二乗値の平均の平方根 標準偏差)を算出して、 
4) 1)〜3)の結果を出力する' :-
        '1) 1〜100からランダムに抽出した整数10個を要素に持つ配列を作成し、'(_整数リスト),
        '2) その平均値と、'(_整数リスト,_平均値),
        '3) 各要素の平均値からの差の二乗値の平均の平方根(標準偏差)を算出して、 '(_整数リスト,_平均値,_標準偏差),
        '4) 1)〜3)の結果を出力する'(_整数リスト,_平均値,_標準偏差).

'1) 1〜100からランダムに抽出した整数10個を要素に持つ配列を作成し、'(_整数リスト) :-
        findall(_ランダムに抽出した整数,(
                    between(1,10,_),
                    _ランダムに抽出した整数 is random(100) + 1),
                _整数リスト).
        
'2) その平均値と、'(_整数リスト,_平均値) :-
        length(_整数リスト,_要素数),
        sum(_整数リスト,_合計),
        _平均値 is _合計 / _要素数.

'3) 各要素の平均値からの差の二乗値の平均の平方根(標準偏差)を算出して、 '(_整数リスト,_平均値,_標準偏差) :-
        length(_整数リスト,_要素数),
        '各要素の平均値からの差の二乗値の合計'(_整数リスト,_平均値,_各要素の平均値からの差の二乗値の合計),
        二乗値の平均の平方根(_要素数,_各要素の平均値からの差の二乗値の合計,_標準偏差).
        
'各要素の平均値からの差の二乗値の合計'([],_,0).
'各要素の平均値からの差の二乗値の合計'([_要素|R],_平均値,S_1) :-
        '各要素の平均値からの差の二乗値の合計'(R,_平均値,S_2),
        S_1 is (_平均値 - _要素) * (_平均値 - _要素) + S_2.

二乗値の平均の平方根(_要素数,_各要素の平均値からの差の二乗値の合計,_標準偏差) :-
        _二乗値の平均 is _各要素の平均値からの差の二乗値の合計 / _要素数,
        _標準偏差 is sqrt(_二乗値の平均).