このディレクトリの索引
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_lilne(Line),
        '1 全文字の合計文字数'(Line),
        '2 数字の文字数'(Line),
        '3 英大文字の文字数'(Line),
        '4 英小文字の文字数'(Line),
        '5 空白の文字数'(Line),
        '6 その他の文字の文字数'(Line),!.

'1 全文字の合計文字数'(Line) :-
        sub_atom(Line,_,Len,_,Line),
        write_formatted('全文字の合計文字数は %t 文字です\n',[Len]).

'2 数字の文字数'(Line) :-
        count((sub_atom(Line,_,1,_,Char),Char @>= '0',Char @=< '9'),Count),
        write_formatted('数字の文字数は %t 文字です\n',[Count]).

'3 英大文字の文字数'(Line) :-
        count((sub_atom(Line,_,1,_,Char),Char @>= 'A',Char @=< 'Z'),Count),
        write_formatted('英大文字の文字数は %t 文字です\n',[Count]).

'4 英小文字の文字数'(Line) :-
        count((sub_atom(Line,_,1,_,Char),Char @>= 'a',Char @=< 'z'),Count),
        write_formatted('英個文字の文字数は %t 文字です\n',[Count]).

'5 空白の文字数'(Line) :-
        count((sub_atom(Line,_,1,_,' ')),Count),
        write_formatted('空白文字の文字数は %t 文字です\n',[Count]).

'6 その他の文字の文字数'(Line) :-

        count((
                    sub_atom(Line,_,1,_,Char),
                    \+((Char @>= '0',Char @=< '9')),
                    \+((Char @>= 'A',Char @=< 'Z')),
                    \+((Char @>= 'a',Char @=< 'z')),
                    \+(Char=' ')),
                Count),
        write_formatted('その他の文字の文字数は %t 文字です\n',[Count]).