このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1339338438/375
#  [1] 授業単元:C言語 
#  [2] 問題文(含コード&リンク): 
#  ファイル double.txt に複数個の実数が記されている。 
#  この実数の個数を入力し、それからファイル double.txt に記されている実数を読み込み、 
#  それらを小さい物から大きい物の順番に並び替えて、ファイル sort.txt に書き出すプログラムを作成しなさい。 
#  ただしファイル double.txt に記されている実数の個数は50個以下とする 
#  

'ファイル double.txt に複数個の実数が記されている。この実数の個数を入力し、それからファイル double.txt に記されている実数を読み込み、それらを小さい物から大きい物の順番に並び替えて、ファイル sort.txt に書き出す' :-
        実数の個数を入力する(_実数の個数),
        get_split_lines('double.txt',[' ','\n',','],L1),
        それらを小さい物から大きい物の順番に並び替えて(L1,L2),
        'ファイル sort.txt に書き出す'(_実数の個数,L2).        

実数の個数を入力する(_実数の個数) :-
        整数を得る(実数の個数,_実数の個数).

それらを小さい物から大きい物の順番に並び替えて([],[]).
それらを小さい物から大きい物の順番に並び替えて([_軸要素|R1],L2) :-
        分割(_軸要素,R1,_軸要素より小さい要素ならび,_軸要素と等しいか大きい要素ならび),
        それらを小さい物から大きい物の順番に並び替えて(_軸要素より小さい要素ならび,_整列した軸要素より小さい要素ならび),
        それらを小さい物から大きい物の順番に並び替えて(_軸要素と等しいか大きい要素ならび,_整列した軸要素と等しいか大きい要素ならび),
        append(_整列した軸要素より小さい要素ならび,[_軸要素|_整列した軸要素と等しいか大きい要素ならび],L2).

分割(_,[],[],[]).
分割(_軸要素,[_要素|R1],[_要素|R2],R3) :-
        _要素 @< _軸要素,
        分割(_軸要素,R1,R2,R3).
分割(_軸要素,[_要素|R1],R2,[_要素|R3]) :-
        _要素 @>= _軸要素,
        分割(_軸要素,R1,R2,R3).

'ファイル sort.txt に書き出す'(_実数の個数,L) :-
        length(L0,_実数の個数),
        append(L0,_,L).
        open('sort.txt',write,Outstream),
        'Outstreamに書き出す'(Outstream,L0),
        close(Outstream).

'Outstreamに書き出す'(_,[]).
'Outstreamに書き出す'(Outstream,[_要素|R]) :-
        writef(Outstream,'%t\n',[_要素]),
        'Outstreamに書き出す'(Outstream,R).


%  整数を得る/2
%  get_split_lines/3