このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1288531658/825
#  すいませんが823は書き間違えました 
#  [1] 授業単元:プログラミング演習  
#  [2] 問題文(含コード&リンク)  
#  ・ランダムな整数列を生成し,選択ソートにより並べ替えるプ  
#  ログラムを作れ。  
#  (randを使用すること)  
#  •またその実行時間を計測せよ  
#  – UNIXのtime コマンドを使用すること  
#  

program :-
        user_parameters([A]),
        atom_to_term(A,_要素数,_),
        ランダムな整数列を生成し,選択ソートにより並べ替える(_要素数,_整列された整数列),
        halt.

ランダムな整数列を生成し,選択ソートにより並べ替える(_要素数,_整列された整数列) :-
        ランダムな整数列を生成し(_要素数,_整数列),
        選択ソート(_整数列,_整列された整数列).

ランダムな整数列を生成し(_要素数,_整数列) :-
        length(_整数列,_要素数),
        ランダムな整数列を生成し(_整数列).

ランダムな整数列を生成し([]) :- !.
ランダムな整数列を生成し([_ランダムな数|R]) :-
        _ランダムな数 is random,
        ランダムな整数列を生成し(R).

選択ソート([],[]) :- !.
選択ソート(L1,L2) :-
        min(L1,Min),
        選択ソート(Min,L1,L2).

選択ソート(_,[A],[A]) :- !.
選択ソート(Min,[Min|R],[Min|L2]) :-
        min(R,Min2),
        選択ソート(Min2,R,L2),!.
選択ソート(Min,L1,[Min|L2]) :-
        append([A0|R0],[Min|R],L1),
        append(R0,[A0|R],L3),
        min(L3,Min2),
        選択ソート(Min2,L3,L2),!.