このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1320365280/712
#  [1] 授業単元: C言語実習 
#  [2] 問題文(含コード&リンク): 
#  整数値を読み取り,4桁毎に 兆,億,万 を挿入して表示せよ. 
#   
#  例 
#  入力:114514 
#  出力:11万4514 
#  入力:810 
#  出力:810 
#   
#  

'整数値を読み取り,4桁毎に 兆,億,万 を挿入して表示する' :-
       整数値を読み取り(_整数値),
        '4桁毎に 兆,億,万 を挿入して表示する'(_整数値).

'4桁毎に 兆,億,万 を挿入して表示する'(_整数値) :-
        number_chars(_整数値,Chars),
        '4桁毎に 兆,億,万 を挿入して'([[兆,12],[億,8],[万,4]],Chars,Chars2),
        表示する(Chars2).

'4桁毎に 兆,億,万 を挿入して'([],Chars_1,Chars_2) :-
        頭部のゼロならびを取り除く(Chars_1,Chars_2),!.
'4桁毎に 兆,億,万 を挿入して'([[_単位,_桁]|R],Chars_1,Chars_2) :-
        length(L2,_桁),
        append(L1,L2,Chars_1),
        頭部のゼロならびを取り除く(L1,L1_2),
        \+(L1_2 = []),
        '4桁毎に 兆,億,万 を挿入して'(R,L2,Chars_1_2),
        append(L1_2,[_単位|Chars_1_2],Chars_2),!.
'4桁毎に 兆,億,万 を挿入して'([[_,_桁]|R],Chars_1,Chars_2) :-
        length(L2,_桁),
        '4桁毎に 兆,億,万 を挿入して'(R,L2,Chars_2),!.
'4桁毎に 兆,億,万 を挿入して'([_|R],Chars_1,Chars_2) :-
        '4桁毎に 兆,億,万 を挿入して'(R,Chars_1,Chars_2).        

頭部のゼロならびを取り除く([0,0,0,0],[]) :- !.
頭部のゼロならびを取り除く([0,0,0|R],R) :-!.
頭部のゼロならびを取り除く([0,0|R],R) :-!.
頭部のゼロならびを取り除く([0|R],R) :-!.

整数値を読み取り(_整数値) :-
        writef('整数を入力して下さい : '),
        get_line(Line),
        整数値読み取り診断(Line,_整数値),!.
整数値を読み取り(_整数値) :-
        整数値を読み取り(_整数値).

整数値を読み取り診断(Line,_整数値) :-
        atom_to_term(Line,_整数値,_),
        integer(_整数値),!.
整数値を読み取り診断(Line,_整数値) :-
        writef('入力された %t からは整数値が得られません。再入力をお願いします。\n',[Line]),
        fail.

表示する(_単位を挿入された整数ならび) :-
        concat_atom(_単位を挿入された整数ならび,_表示文字列),
        writef('%t\n',[_表示文字列]).

%  
%  いつも通り文字ならびに変換した結果迷走した。
%  こんな問題は単純に整数のまま処理した方がいい。 http://nojiriko.asia/prolog/c153_712_1.html
%