このディレクトリの索引

#  出典: C/C++の宿題片付けます 152代目 #555
#      [1] 授業単元:プログラミング基礎 
#      [2] 問題文(含コード&リンク):http://ime.nu/s2.etowns.slyip.net/~c_cpp_homework/cgi-bin/joyful/joyful.cgi 
#      
#  昇順(小→大)に並び替えるプログラムを作成しなさい。以下の三つを含めること。
#       1)要素数10個のint型配列を使用すること
#       2)ランダムで配列に値を入れること
#       3)乱数の範囲は0〜9とすること

'昇順(小→大)に並び替えるプログラムを作成しなさい。以下の三つを含めること。
     1)要素数10個のint型配列を使用すること
     2)ランダムで配列に値を入れること
     3)乱数の範囲は0〜9とすること'(_整列した整数ならび) :-
        '要素数10個のint型配列を使用すること'(L),
        'ランダムで配列に値を入れること 乱数の範囲は0〜9とすること'(L),
        '昇順(小→大)に並び替える'(L,[],_整列した整数ならび).

'要素数10個のint型配列を使用すること'(L) :-
        ここでこのリストの要素が整数であることを予約する方法はない,
        length(L,10).

ここでこのリストの要素が整数であることを予約する方法はない.

'ランダムで配列に値を入れること 乱数の範囲は0〜9とすること'(L) :-
        findall(_整数,(
                    append(_,[_整数|_],L),
                    _整数 is random(10)),
                L).

'昇順(小→大)に並び替える'([],_整列した整数ならび,_整列した整数ならび).
'昇順(小→大)に並び替える'([N|R1],L1,L) :-
         挿入する(N,L1,L2),
         '昇順(小→大)に並び替える'(R,L2,L).

挿入する(N,L1,L2) :-
         append(L0,[M|R],L1),
         M >= N,
         append(L0,[N,M|R],L2),!.
挿入する(N,L1,L2) :-
         append(L1,[N],L2).