このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1289913298/273
#  [1] 授業単元:プログラミング 
#  [2] 問題文 
#  問題1.文字列を入力し、入力された文字列について、次の1~6のすべてを表示するプログラムを作 
#  成しなさい。 
#  1 全文字の合計文字数 
#  2 数字の文字数 
#  3 英大文字の文字数 
#  4 英小文字の文字数 
#  5 空白の文字数 
#  6 その他の文字の文字数 
#  ただし、 
#  ・ 下記の実行結果のように、それらの数値を表示しなさい。 
#  ・ データの読み込みは getchar 関数を使うこと。 
#    

'文字列を入力し、入力された文字列について、次の1~6のすべてを表示するプログラム' :-
        get_char(Char),
        文字の種類別出現数(Char,[],[],[],[],[],[]).

文字の種類別出現数('\n',_全文字の合計文字数ならび表現,_数字の文字数ならび表現,_英大文字の文字数ならび表現,_英小文字の文字数ならび表現,_空白文字数ならび表現,_その他の文字の文字数ならび表現) :-
        length(_全文字の合計文字数ならび表現,N1),
        write_formatted('全文字の合計文字数ならび表現は %t 文字です\n',[N1]),
        length(_数字の文字数ならび表現,N2),
        write_formatted('数字の文字数ならび表現は %t 文字です\n',[N2]),
        length(_英大文字の文字数ならび表現,N3),
        write_formatted('英大文字の文字数ならび表現は %t 文字です\n',[N3]),
        length(_小文字の文字数ならび表現,N4),
        write_formatted('小文字の文字数ならび表現は %t 文字です\n',[N4]),
        length(_空白文字数ならび表現,N5),
        write_formatted('空白文字数ならび表現は %t 文字です\n',[N5]),
        length(_その他の文字の文字数ならび表現,N6),
        write_formatted('その他の文字の文字数ならび表現は %t 文字です\n',[N6]),!.
文字の種類別出現数(Char,_全文字の合計文字数ならび表現,_数字の文字数ならび表現,_英大文字の文字数ならび表現,_英小文字の文字数ならび表現,_空白文字数ならび表現,_その他の文字の文字数ならび表現) :-
        Char @>= '0',Char @=< '9',
        get_char(Char2),
        文字の種類別出現数(Char2,[_|_全文字の合計文字数ならび表現],[_|_数字の文字数ならび表現],_英大文字の文字数ならび表現,_英小文字の文字数ならび表現,_空白文字数ならび表現,_その他の文字の文字数ならび表現),!.
文字の種類別出現数(Char,_全文字の合計文字数ならび表現,_数字の文字数ならび表現,_英大文字の文字数ならび表現,_英小文字の文字数ならび表現,_空白文字数ならび表現,_その他の文字の文字数ならび表現) :-
        Char @>= 'A',Char @=< 'Z',
        get_char(Char2),
        文字の種類別出現数(Char2,[_|_全文字の合計文字数ならび表現],_数字の文字数ならび表現,[_|_英大文字の文字数ならび表現],_英小文字の文字数ならび表現,_空白文字数ならび表現,_その他の文字の文字数ならび表現),!.
文字の種類別出現数(Char,_全文字の合計文字数ならび表現,_数字の文字数ならび表現,_英大文字の文字数ならび表現,_英小文字の文字数ならび表現,_空白文字数ならび表現,_その他の文字の文字数ならび表現) :-
        Char @>= 'a',Char @=< 'z',
        get_char(Char2),
        文字の種類別出現数(Char2,[_|_全文字の合計文字数ならび表現],_数字の文字数ならび表現,_英大文字の文字数ならび表現,[_|_英小文字の文字数ならび表現],_空白文字数ならび表現,_その他の文字の文字数ならび表現),!.
文字の種類別出現数(' ',_全文字の合計文字数ならび表現,_数字の文字数ならび表現,_英大文字の文字数ならび表現,_英小文字の文字数ならび表現,_空白文字数ならび表現,_その他の文字の文字数ならび表現) :-
        get_char(Char2),
        文字の種類別出現数(Char2,[_|_全文字の合計文字数ならび表現],_数字の文字数ならび表現,_英大文字の文字数ならび表現,_英小文字の文字数ならび表現,[_|_空白文字数ならび表現],_その他の文字の文字数ならび表現),!.
文字の種類別出現数(_,_全文字の合計文字数ならび表現,_数字の文字数ならび表現,_英大文字の文字数ならび表現,_英小文字の文字数ならび表現,_空白文字数ならび表現,_その他の文字の文字数ならび表現) :-
        get_char(Char2),
        文字の種類別出現数(Char2,[_|_全文字の合計文字数ならび表現],_数字の文字数ならび表現,_英大文字の文字数ならび表現,_英小文字の文字数ならび表現,_空白文字数ならび表現,[_|_その他の文字の文字数ならび表現]),!.