このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1339338438/573
#  [1] 授業単元: STL  
#  [2] 問題文(含コード&リンク):  
#  問 二つの値xとyを使用して差を返す関数形式マクロdiff(x,y)を使用し, 
#  キーボードからint型の2つの数値n1とn2を入力した場合に、入力した2つの数値とその差を出力するmain関数のプログラムを作成しなさい。 
#  問 四季を表す列挙体seasonを定義し、キーボードから0,1,2,3を入力した場合に、 
#  それぞれ"Spring", "Summer", "Fall", "Winter"と表示するプログラムを作成しなさい。ただし、enum season {Spring, Summer, Fall, Winter};を使用し、キーボードから0,1,2,3以外の数字が入力された場合には、入力し直す処理を含めなさい。 
#  問 数字文字の出現回数の百分率を小数点以下1桁まで求め、 
#  '*'のグラフと共に表示するmain関数のプログラムを作成しなさい。 
#  問 キーボードから入力した行数と空白以外の文字数を求め, 
#  行数と文字数を表示するmain関数のプログラムを作成しなさい。ただし、文字入力は、全角文字はなく、半角文字だけであるとする。  
#  

'キーボードから入力した行数と空白以外の文字数を求め,行数と文字数を表示する。ただし、文字入力は、全角文字はなく、半角文字だけであるとする。' :-
        'キーボードから入力した'(Lines),
        '行数と空白以外の文字数を求め'(Lines,_行数,_空白以外の文字数),
        '行数と文字数を表示する'(_行数,_空白以外の文字数).

キーボードから入力した([]) :-
        at_end_of_stream(user_input).
キーボードから入力した([Line|R]) :-
        get_line(Line),
        キーボードから入力した(R).

行数と空白以外の文字数を求め(Lines,_行数,_空白以外の文字数) :-
        length(Lines,_行数),
        findsum(_一行の中にある空白以外の文字数,(
                    member(_行,Lines),
                    一行の中にある空白以外の文字数(_行,_一行の中にある空白以外の文字数)),
                _空白以外の文字数).

一行の中にある空白以外の文字数(Line,_一行の中にある空白以外の文字数) :-
        count(( sub_atom(Line,_,1,_,_文字),
                \+(_文字 = ' ')),
            _一行の中にある空白以外の文字数).

'行数と文字数を表示する'(_行数,_空白以外の文字数) :-
        writef('%t %t\n',[_行数,_空白以外の文字数]).