このディレクトリの索引
http://pc12.2ch.net/test/read.cgi/tech/1267796762/81
#  【 課題 】入力したテキストに含まれる文字を種類別に使用回数を表示し、降順にソートし出力するプログラムを作れ。  
#  【 形態 】1. Javaアプリケーション(main()で開始)  
#  【 GUI  】制限なし  
#  【 期限 】5月中  
#  【 Ver  】java version "1.6.0_17"  
#  【 補足 】使用する文字は半角アルファベットのみです。 
# 
# 

文字種(英小文字,a,z).
文字種(英大文字,'A','Z').

入力したテキストに含まれる文字を種類別に使用回数を表示し、降順にソートし出力する(_テキストファイル,_出力ファイル) :-
        findall(_文字種,文字種(_文字種,_,_),_文字種ならび),
        get_chars(_テキストファイル,Chars),
        文字を種類別に使用回数を表示し(Chars,_文字種ならび,L),
        降順にソートし出力する(_出力ファイル,Chars).

文字を種類別に使用回数を表示し(_,[],[]) :- !.
文字を種類別に使用回数を表示し(Chars,[_文字種|R1],[[_使用回数,_文字種]|R2]) :-
        count((member(A,Chars),文字種(_文字種,C1,C2),A @>= C1,A @=< C2),_使用回数),
        write_formatted('%t %t回\n',[_文字種,_使用回数]),
        文字を種類別に使用回数を表示し(Chars,R1,R2).

降順にソートし出力する(_出力ファイル,L) :-
        降順にソートし(L,L2),
        open(_出力ファイル,write,Output),
        出力する(Output,L2),
        close(Output),!.

降順にソートし(L,L2) :- sort(L,L1),reverse(L1,L2),!.

出力する(Output,[]) :- !.
出力する(Output,[[_使用回数,_文字種]|R]) :- write_formatted(Output,'%t %t回\n',[_文字種,_使用回数]),出力する(Output,R).