このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1349527750/338
#  7個のデータを入力し、中央地を表示するプログラムを作成して下さい 
#   
#  例 
#  1番目の数字を入力してください: 13 
#  2番目の数字を入力してください: 22 
#  ・・・ 
#  中央値は 22 です。 
# 
# 

'7個のデータを入力し、中央地を表示する' :-
        '7個のデータを入力し'(_7個のデータ),
        中央値を表示する(_7個のデータ).

'7個のデータを入力し'(_7個のデータ) :-
        '7個のデータを'(_7個のデータ),
        入力し(1,_7個のデータ),!.
                    
'7個のデータを'(_7個のデータ) :-
        length(_7個のデータ,7).

入力し(_何番目,[]) :-
       _何番目 > 7.
入力し(_何番目,[_データ|R]) :-
        writef('%t番目のデータを入力してください: ',[_何番目]),
        get_line(_データ),
        _何番目_2 is _何番目 + 1,
        入力し(_何番目_2,R).

中央値を表示する(_7個のデータ) :-
        バブルソート(_7個のデータ,[_,_,_,_中央値,_,_,_]),
        表示する(_中央値).

バブルソート(L1,L2) :-
        軽い泡はちょっと浮き上がる(L1,L3),
        泡が浮き上がったら最初からやり直す(L3,L2),!.
バブルソート(L,L) :-
        浮き上がる泡がなくなったらバブルソート終了.

軽い泡はちょっと浮き上がる(L1,L3) :-
        append(L0,[_重い泡,_軽い泡|R],L1),
        _重い泡 @> _軽い泡,
        append(L0,[_軽い泡,_重い泡|R],L3).

泡が浮き上がったら最初からやり直す(L3,L2) :-
        バブルソート(L3,L2).

浮き上がる泡がなくなったらバブルソート終了.

表示する(_中央値) :-
        writef('中央値は %t です\n',[_中央値]).