このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1305867431/12
#  [1]c言語  
#  [2]英文字を読み込み、その一つ一つの文字の個数を求めるプログラム。  
#   
#  実行結果  
#  英文字 BBACC  
#  変換後 B2A1C2

英文字を読み込み、その一つ一つの文字の個数を求める :-
        英文字を読み込み(_英文字列),
        その一つ一つの文字の個数を求める(_英文字列,_その一つ一つの文字の個数),
        表示する(その一つ一つの文字の個数).

英文字を読み込み(_英文字列) :-
        write('英文字列を入力してください : '),
        get_line(_英文字列),
        英文字読み込み診断(_英文字列),!.
英文字を読み込み(_英文字列) :-
        英文字を読み込み(_英文字列).

英文字読み込み診断(_英文字列) :-
        atom_chars(_英文字列,Chars),
        全て英文字(Chars),!.
英文字読み込み診断(_文字列) :-
        writef('読み込まれた文字列 %t に英文字以外の文字が含まれています。\n再入力をお願いします\n',[_文字列]),fail.

全て英文字([]).
全て英文字([A|R]) :-
        member(A,['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z',a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z]),
        全て英文字(R).

その一つ一つの文字の個数を求める(_英文字列,_その一つ一つの文字の個数) :-
        atom_chars(_英文字列,Chars),
        setof(_文字,member(_文字,Chars),L1),
        findall(_文字の個数,(
                    member(_文字,L1),
                    count(member(_文字,Chars),Count),
                    concat_atom([_文字,Count],_文字の個数)),
                L2),
        concat_atom(L2,_その一つ一つの文字の個数).

表示する(_その一つ一つの文字の個数) :-
        writef('%t\n',[_その一つ一つの文字の個数]).