このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1335517816/517
#  {1] 授業単元:プログラミング演習  
#  [2] 問題文:  
#  http://ime.nu/www1.axfc.net/uploader/Sc/so/347163 
#  
#  学生番号	1	2	3	4	5	6
#  グループA	35	63	25	62	73	53
#  グループB	45	53	81	53	34	45
#  グループC	56	76	34	45	67	65
#  
#  上記のグループ別学生毎の得点データを適当な整数型配列data[4][7]に読み込み、グループ別及び全体の平均点を計算せよ。 
#  

'上記のグループ別学生毎の得点データを読み込み、グループ別及び全体の平均点を計算する' :-
        '上記のグループ別学生毎の得点データを読み込み'(LL),
        グループ別及び全体の平均点を計算する(LL,_グループ別平均点ならび,_全体の平均点),
        グループ別平均点を表示する(_グループ別平均点ならび),
        全体の平均点を表示する(_全体の平均点).

'上記のグループ別学生毎の得点データを読み込み'([]) :-
        at_end_of_stream(user_input),!.
'上記のグループ別学生毎の得点データを読み込み'([L|R]) :-
        get_line(Line),
        split(Line,[' ','\t'],L),
        '上記のグループ別学生毎の得点データを読み込み'(R).
        
グループ別及び全体の平均点を計算する(LL,_グループ別平均点ならび,_全体の平均点) :-
        グループ別平均点を計算する(LL,_グループ別平均点ならび),
        全体の平均点を計算する(LL,_全体の平均点).

グループ別平均点を計算する([_見出し部分|_グループ名付き得点表],_グループ別平均点ならび) :-
        findall([_グループ,_平均点],(
                    member([_グループ|_得点ならび],_グループ名付き得点表),
                    相加平均(_得点ならび,_平均点)),
                _グループ別平均点ならび).

全体の平均点を計算する([_見出し部分|_グループ名付き得点表],_全体の平均点) :-
        findsum(_得点,(
                    member([_グループ名|_得点ならび],_グループ名付き得点表]),
                    member(_得点,_得点ならび)),
                _全体の平均点).

グループ別平均点を表示する(_グループ別平均点ならび) :-
        append(_,[[_グループ,_平均点]|R],_グループ別平均点ならび),
        writef('%t の平均点: %t点\n',[_グループ,_平均点]),
        R = [].

全体の平均点を表示する(_全体の平均点) :-
        writef('     全体の平均点: %t点\n',[_全体の平均点]).