このディレクトリの索引
#  
#  1から99までを値域とする8つの整数を乱数を使って順に発生させて中央値が22となるPrologプログラムを作成しなさい。
#   

'1から99までを値域とする8つの整数を乱数を使って順に発生させて中央値が22となる'(_1,_2,_3,_4,_5,_6,_7,_8) :-
        '1から99までを値域とする8つの整数を乱数を使って順に発生させて中央値が22となる'([],[_1,_2,_3,_4,_5,_6,_7,_8]).

'1から99までを値域とする8つの整数を乱数を使って順に発生させて中央値が22となる'([_1,_2,_3,_4,_5,_6,_7,_8|_],[_8,_7,_6,_5,_4,_3,_2,_1]) :-
        整列([_1,_2,_3,_4,_5,_6,_7,_8],[_,_,_,M,N,_,_,_]),
        44 is M + N.
'1から99までを値域とする8つの整数を乱数を使って順に発生させて中央値が22となる'(L1,L) :-
        N is random(99) + 1,
        '1から99までを値域とする8つの整数を乱数を使って順に発生させて中央値が22となる'([N|L1],L).

整列([],[]).
整列([_軸要素|R1],L) :-
        分割(_軸要素,R1,L1,L2),
        整列(L1,L3),
        整列(L2,L4),
        append(L3,[_軸要素|L4],L).

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