このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1296387672/534
#  [1] 授業単元:プログラミング演習 
#  [2] 問題文:以下の関数を作成する。 
#  void zeroSuppres(char *src, char *dst, char flg) 
#  src=元の文字列、dst=格納先 
#  flg = 0ならば 
#  srcが"00000456"ならdstには"456" 
#  srcが"00.0456"ならdstには"0.0456" 
#  srcが"000000000"ならdstには"0" 
#  srcが"000560.000"ならdstには"560.000" 
#  srcが"000C560.000"ならdstには"0"←数字以外の文字出現 
#  srcが"000.0B560000"ならdstには"0.0"←数字以外の文字出現 
#  が格納される。 
#  flg = 1ならば 
#  srcが"00000456"ならdstには"\0\0\0\0\0456" 
#  srcが"00.0456"ならdstには"\00.0456" 
#  srcが"000000000"ならdstには"\0\0\0\0\0\0\0\00" 
#  srcが"000560.000"ならdstには"\0\0\0560.000" 
#  srcが"000C560.000"ならdstには"\0\00"←数字以外の文字出現 
#  srcが"000.5C60000"ならdstには"\0\00.5"←数字以外の文字出現 
#  が格納される 
#  

'_flgの指示に従って第二引数_srcを_dstに変換する'(_flg,_src,_dst) :-
        atom_chars(_src,L1),
        先頭からの0を取り除く(_flg,L1,L2),
        concat_atom(L2,_dst),!.

先頭からの0を取り除く(_,['0'],['0']) :- !.
先頭からの0を取り除く(_,[A|R1],[A|L0]) :-
        append(_,[A|_],['1','2','3','4','5','6','7','8','9']),
        append(L0,L1,R1),
        数字以外要素の出現(L1),!.
先頭からの0を取り除く(_,[A|R1],[A|R1]) :-
        append(_,[A|_],['1','2','3','4','5','6','7','8','9']),!.
先頭からの0を取り除く(_,['.'|R1],['0','.'|L0]) :-
        append(L0,L1,R1),
        数字以外文字の出現(L1),!.
先頭からの0を取り除く(_,['.'|R1],['0','.'|R1]) :- !.
先頭からの0を取り除く(0,L,['0']) :-
        数字以外文字の出現(L),!.
先頭からの0を取り除く(1,[A|R],[A|R]) :-
        数字以外文字の出現([A|R]),!.
先頭からの0を取り除く(0,['0'|R1],R2) :-
        先頭からの0を取り除く(R1,R2).
先頭からの0を取り除く(1,['0'|R1],['\\','0'|R2]) :-
        先頭からの0を取り除く(R1,R2).

数字以外文字の出現([A|_]) :-
        \+(append(_,[A|_],['0','1','2','3','4','5','6','7','8','9'])),!.