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

'1から99までを値域とする7つの整数を乱数を使って順に発生させて中央値が22となるPrologプログラムを作成しなさい。'(_乱数ならび) :-
        '1から99までを値域とする7つの整数を乱数を使って順に発生させて中央値が22となる'(0,0,0,_乱数ならび).

'1から99までを値域とする7つの整数を乱数を使って順に発生させて中央値が22となる'(1,3,3,[]) :- !.
'1から99までを値域とする7つの整数を乱数を使って順に発生させて中央値が22となる'(_22_1,_以下_1,_以上_1,[_乱数|R]) :-
        '1から99までを値域とする乱数'(_乱数),
        '1から99までを値域とする7つの整数を乱数を使って順に発生させて中央値が22となる'(_乱数,_22_1,_以下_1,_以上_1,_22_2,_以下_2,_以上_2),
        '1から99までを値域とする7つの整数を乱数を使って順に発生させて中央値が22となる'(_22_2,_以下_2,_以上_2,R),!.

'1から99までを値域とする7つの整数を乱数を使って順に発生させて中央値が22となる'(22,0,_以下,_以上,1,_以下,_以上) :- !.
'1から99までを値域とする7つの整数を乱数を使って順に発生させて中央値が22となる'(_乱数,_22,_以下_1,_以上_1,_22,_以下_2,_以上_1) :-
        '乱数が22以下で枠がまだある'(_乱数,_以下_1,_以下_2),!.
'1から99までを値域とする7つの整数を乱数を使って順に発生させて中央値が22となる'(_乱数,_22,_以下_1,_以上_1,_22,_以下_1,_以上_2) :-
        '乱数が22以上で枠がまだある'(_乱数,_以上_1,_以上_2),!.
'1から99までを値域とする7つの整数を乱数を使って順に発生させて中央値が22となる'(_,_22,_以下,_以上,_22,_以下,_以上) :-
        既に枠が埋まってしまっている場合は乱数は使用されない.

'乱数が22以下で枠がまだある'(_乱数,_以下_1,_以下_2) :-
        _乱数 =< 22,
        _以下_1 < 3,
        _以下_2 is _以下_1 + 1,!.

'乱数が22以上で枠がまだある'(_乱数,_以上_1,_以上_2) :-
        _乱数 >= 22,
        _以上_1 < 3,
        _以上_2 is _以上_1 + 1,!.

'1から99までを値域とする乱数'(_乱数) :-
        _乱数 is random(99) + 1.

既に枠が埋まってしまっている場合は乱数は使用されない.