このディレクトリの索引
http://pc12.2ch.net/test/read.cgi/tech/1248012902/463 
# 【課題】 
#  http://ime.nu/www51.tok2.com/home/rg550/cgi-bin/hosoku/img0047.zip 
# 【課題1】 
# 実行例のようにキーボードから文字列を読み込み、文字型の配列に一文字づつ格納 
# した後、整列し(順番はどちらでもかまいません)、出力するプログラムを 
# 作成しなさい。 
# 【課題2】 
# 0から9までの整数乱数を100個発生させ、実行例のようにその出現分布を棒グラフと 
# 値で出力するプログラムを作成しなさい。また、100個の乱数の平均値も合わせて 
# 出力しなさい。 
# ただし、0から9 それぞれの個数を数えるための変数に必ず配列を用いてください。 
# (出現個数カウント用の変数を10個用意してはいけません。) 例えば、出現個数 
# カウント用の配列 count[] を用意すると、 count[0] に0が出現した回数が 
# 格納される。もし0が10回出現した場合、count[0]=10となる。) 

% 課題1
'実行例のようにキーボードから文字列を読み込み、文字型の配列に一文字づつ格納した 後、整列し(順番はどちらでもかまいません)、出力する' :- 
    get_chars(_文字ならび), 
    sort(_文字ならび,_整列した文字ならび), 
    atom_chars(_整列した文字列,_整列した文字ならび), 
    write_formatted('%t\n',[_整列した文字列]).

% 課題2
'0から9までの整数乱数を100個発生させ、実行例のようにその出現分布を棒グラフと値 で出力する' :- 
    findall([N,0,[]],for(0,N,9),_出現個数カウント用ならび), 
    '0から9までの整数乱数を100個発生させ'(1,L1), 
    'その出現分布を棒グラフと値で出力する'(L1,_出現個数カウント用ならび). 

'0から9までの整数乱数を100個発生させ'(N,[]) :- N > 100,!. 
'0から9までの整数乱数を100個発生させ'(N,[_乱整数|R]) :- 
    _乱整数 is random mod 10, 
    N2 is N + 1, 
    '0から9までの整数乱数を100個発生させ'(N2,R). 

'その出現分布を棒グラフと値で出力する'([],L) :- 
    'グラフと値で出力'(L),!. 
'その出現分布を棒グラフと値で出力する'([N|R],L) :- 
    member([N,_カウント,L1],L), 
    _カウント2 is _カウント + 1, 
    ならびの置換([N,_カウント,L1],[N,_カウント2,[_|L1]],L,L2),
    'その出現分布を棒グラフと値で出力する'(R,L2). 

グラフと値で出力([]). 
グラフと値で出力([[N,C,L]|R]) :- 
    all(L,'*'), 
    write_formatted(' %t: %t %t\n',[N,L,C]), 
    グラフと値で出力(R).