このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1320365280/662
#  【質問テンプレ】 
#  [1] 授業単元:プログラミング入門(C) 
#  [2] 問題文(含コード&リンク): 
#  無限ループを用い、 1〜100までの数値を任意に10回分だけ入力し、その度数分布を求めよ。 
#  ただし、for文は用いず、while文で。度数分布は5等分して表示せよ。(例えば1~20に4個 21~40に3個 41~60に2個 61~80に1個 81~100に0個) 
#  

'無限ループを用い、 1〜100までの数値を任意に10回分だけ入力し、その度数分布を求めよ。'(_1_20,_21_40,_41_60,_61_80,_81_100) :-
        '無限ループを用い、 1〜100までの数値を任意に10回分だけ入力し、その度数分布を求めよ。'([],[],[],[],[],[],_1_20,_21_40,_41_60,_61_80,_81_100),
        度数分布の表示(_1_20,_21_40,_41_60,_61_80,_81_100).

'無限ループを用い、 1〜100までの数値を任意に10回分だけ入力し、その度数分布を求めよ。'([_,_,_,_,_,_,_,_,_,_],_1_20,_21_40,_41_60,_61_80,_81_100,_1_20,_21_40,_41_60,_61_80,_81_100).
'無限ループを用い、 1〜100までの数値を任意に10回分だけ入力し、その度数分布を求めよ。'([_,_,_,_,_,_,_,_,_,_],_,_,_,_,_,_1_20,_21_40,_41_60,_61_80,_81_100) :-
        '無限ループを用い、 1〜100までの数値を任意に10回分だけ入力し、その度数分布を求めよ。'([],[],[],[],[],[],_1_20,_21_40,_41_60,_61_80,_81_100).
'無限ループを用い、 1〜100までの数値を任意に10回分だけ入力し、その度数分布を求めよ。'(Ln,L1,L2,L3,L4,L5,_1_20,_21_40,_41_60,_61_80,_81_100) :-
        '1〜100までの数値を任意に10回分だけ入力し度数分布を'(L1,L2,L3,L4,L5,L1_2,L2_2,L3_2,L4_2,L5_2),
        '無限ループを用い、 1〜100までの数値を任意に10回分だけ入力し、その度数分布を求めよ。'([_|Ln],L1_2,L2_2,L3_2,L4_2,L5_2,_1_20,_21_40,_41_60,_61_80,_81_100).

'1〜100までの数値を任意に10回分だけ入力し度数分布を'(L1,L2,L3,L4,L5,L1_2,L2_2,L3_2,L4_2,L5_2) :-
        _任意の数値 is random(100) + 1,
        _階級 is (_任意の数字 - 1) // 20 + 1,
        分布ならびの更新(_階級,L1,L2,L3,L4,L5,L1_2,L2_2,L3_2,L4_2,L5_2),

分布ならびの更新(1,L1,L2,L3,L4,L5,[_|L1],L2,L3,L4,L5).
分布ならびの更新(2,L1,L2,L3,L4,L5,L1,[_|L2],L3,L4,L5).
分布ならびの更新(3,L1,L2,L3,L4,L5,L1,L2,[_|L3],L4,L5).
分布ならびの更新(4,L1,L2,L3,L4,L5,L1,L2,L3,[_|L4],L5).
分布ならびの更新(5,L1,L2,L3,L4,L5,L1,L2,L3,L4,[_|L5]).

度数分布の表示(_1_20,_21_40,_41_60,_61_80,_81_100) :-
        for(1,N,5),
        nth1(N,[_1_20,_21_40,_41_60,_61_80,_81_100],L),
        度数表示(N,L),
        N = 5.

度数分布の表示(N,L) :-
        length(L,_度数),
        M1 is (N - 1) * 20 + 1,
        M2 is M * 20,
        writef('%t-%t %t個\n',[M1,M2,_度数]).