このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1342966104/900
#  [1]C言語 
#  [2] 問題文(含コード&リンク): 
#  http://ime.nu/codepad.org/Gpxv1fSh 
#  
#  /*
#  問題1. 整数データの配列に対してソートをかける関数を挿入ソートにより作成し、正し
#  く動くことを確認せよ。
#  問題2. 問題1 を変更して、ソートの際に行われる比較、代入の回数も求める様にせよ。
#  問題3. 0 以上1 より小さい一様乱数を返す関数double urandom() を作成し、確認せよ。
#  問題4. 0 からn-1 の値を返す関数nrandom(int n) を作成し、確認せよ。
#  問題5. 乱数関数を用いて整数データをn個作成する関数make_data(unsigned int s, int n)
#  を作成せよ(ここでs はseed)。作成するデータは、n-1 以下とし、それを配列
#  data[SIZE] に格納する。
#  問題6. 問題2 を変更して、問題5 で作られたデータを用いてソートを行うプログラムを
#  作成せよ。n = 10、100、1000 で実行して比較しなさい。(seed の設定は同じものを
#  用いて比較する)。
#  */

'整数データの配列に対してソートをかける関数を挿入ソートにより作成し、正しく動くことを確認する'(_整数データならび,_整列された整数データならび) :-
        '整数データの配列に対してソートをかける関数を挿入ソートにより作成し'(_整数データならび,_整列された整数データならび),
        正しく動くことを確認する(_整数データならび,_整列された整数データならび).

'整数データの配列に対してソートをかける関数を挿入ソートにより作成し'(_整数データならび,_整列された整数データならび) :-
        '整数データの配列に対してソートをかける関数を挿入ソートにより作成し'(_整数データならび,[],_整列された整数データならび).

'整数データの配列に対してソートをかける関数を挿入ソートにより作成し'([],L,L).
'整数データの配列に対してソートをかける関数を挿入ソートにより作成し'([A|R],L1,_整列された整数データならび) :-
        挿入(A,L1,L2),
        '整数データの配列に対してソートをかける関数を挿入ソートにより作成し'(R,L2,_整列された整数データならび).

挿入(A,[],[A]).
挿入(A,[B|R],[A,B|R]) :-
        A @=< B,!.
挿入(A,[B|R1],[B|R2]) :-
        A @> B,
        挿入(A,R1,R2).

正しく動くことを確認する(_整数データならび,_整列された整数データならび) :-
        整列された整数データならびが昇順であるか確かめる(_整列された整数データならび).

整列された整数データならびが昇順であるか確かめる([]).
整列された整数データならびが昇順であるか確かめる([_]).
整列された整数データならびが昇順であるか確かめる([A,B|R]) :-
        A @=< B,
        整列された整数データならびが昇順であるか確かめる([B|R]).