このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1328276597/534
#  [1] 授業単元: - 
#  [2] 問題文:http://ime.nu/judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0002&lang=jp 
#  
#  Digit Number
#  与えられた2つの整数 a と b の和の桁数を出力して終了するプログラムを作成して下さい。
#  
#  Input
#  複数のデータセットが与えられます。各データセットは1行に与えられます。各データセットは2つの整数 a と b が1つのスペースで区切られて与えられます。入力の終わりまで処理して下さい。a と b は非負の整数とします。
#  
#  Output
#  各データセットごとに、a + b の桁数を出力して下さい。
#  
#  Sample Input
#  5 7
#  1 99
#  1000 999
#  Output for the Sample Input
#  2
#  3
#  4
#  

'入力の終了まで、与えられた2つの整数 a と b の和の桁数を出力する' :-
        '与えられた2つの整数 a と b の'(_a,_b,_入力終了状態),
        '与えられた2つの整数 a と b の和の桁数を出力する'(_入力終了状態,_和の桁数).

'与えられた2つの整数 a と b の和の桁数を出力する'(end_of_file,_,_) :- !.
'与えられた2つの整数 a と b の和の桁数を出力する'(正常終了,_a,_b) :-
        '整数 a と b の和の桁数を'(_a,_b,_桁数),
        出力する(_桁数),
        '入力の終了まで、与えられた2つの整数 a と b の和の桁数を出力する'.

'与えられた2つの整数 a と b の和の桁数を'(_和の桁数) :-
        '与えられた2つの整数 a と b の'(_a,_b),
        '和の桁数を'(_a,_b,_和の桁数).

'与えられた2つの整数 a と b の'(_a,_b,_終了状態) :-
        readln(L),
        '与えられた2つの整数 a と b の終了検査'(L,_a,_b,_終了状態),!.
'与えられた2つの整数 a と b の'(_a,_b,_終了状態) :-
        write('入力エラー : 二つの整数を空白区切りで入力して下さい : '),
        '与えられた2つの整数 a と b の'(_a,_b,_終了状態).

'与えられた2つの整数 a と b の終了検査'([],_,_,end_of_file) :- !.
'与えられた2つの整数 a と b の終了検査'([_a,_b],_a,_b,正常終了) :-
        integer(_a),
        integer(_b),!.

'整数 a と b の和の桁数を'(_a,_b,_和の桁数) :-
        _和 is _a + _b,
        number_chars(_和,L),
        length(L,_桁数).

出力する(_桁数) :-
        writef('%t\n',[_桁数]).