このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1307166756/20
#  [1] 授業単元:配列  
#  [2] 問題文(含コード&リンク):  
#  それぞれ10個の要素を格納する整数型配列をAとBと用意する。  
#  Aに10個の整数を入力させた後、平均値を求める。  
#  Bのi番目の要素に、(Aのi番目の要素の値−平均値)の値を保存する。  
#  AとBの対応する要素ごとに、10行並べて表示しなさい。  
#   
# 

'それぞれ10個の要素を格納する整数型配列をAとBと用意する。Aに10個の整数を入力させた後、平均値を求める。Bのi番目の要素に、(Aのi番目の要素の値−平均値)の値を保存する。AとBの対応する要素ごとに、10行並べて表示する' :-
        'それぞれ10個の要素を格納する整数型配列をAとBと用意する'(_A,_B),
        平均値を求める(_A,_平均値),
        'Bのi番目の要素に、(Aのi番目の要素の値−平均値)の値を保存する'(_平均値,_A,_B),
        'AとBの対応する要素ごとに、10行並べて表示する'(_A,_B).

'それぞれ10個の要素を格納する整数型配列をAとBと用意する'(_A,_B) :-
        length(_A,10),
        length(_B,10).

平均値を求める(_A,_平均値) :-
        avg(_A,_平均値).

'Aに10個の整数を入力させた後'(_A) :-
        findall(R,(
                    append(_,[R|_],_A),
                    R is random(100)),
                _A).

'Bのi番目の要素に、(Aのi番目の要素の値−平均値)の値を保存する'(_,[],[]).
'Bのi番目の要素に、(Aのi番目の要素の値−平均値)の値を保存する'(_平均値,[N1|R1],[N2|R2]) :-
        N2 is truncate(N1 - _平均値),
        'Bのi番目の要素に、(Aのi番目の要素の値−平均値)の値を保存する'(_平均値,R1,R2).

'AとBの対応する要素ごとに、10行並べて表示する'([],[]).
'AとBの対応する要素ごとに、10行並べて表示する'([N1|R1],[N2|R2]) :-
        writef('%t %t\n',[N1,N2]),
        'AとBの対応する要素ごとに、10行並べて表示する'(R1,R2).