このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1276873238/652
#  問題 
#  整数nが与えられたとき、1からnの数すべてを1桁に分解して集計せよ。 
#  例 
#  n=15のとき 
#  1+2+3+4+5+6+7+8+9+(1+0)+(1+1)+(1+2)+(1+3)+(1+4)+(1+5) = 66 
# 
# 

'整数nが与えられたとき、1からnの数すべてを1桁に分解して集計せよ。'(_n,_集計値) :-
        一桁ずつ四項に分解した加算文字列ならび(_n,_一桁ずつ四項に分解した加算文字列ならび),
        atomic_list_concat(_一桁ずつ四項に分解した加算式文字列ならび,'+',_評価式文字列),
        atom_to_term(_評価式文字列,_評価式,_),
        _集計値 is _評価式.

一桁ずつ四項に分解した加算文字列ならび(_n,_一桁ずつ四項に分解した加算式文字列ならび) :-
        findall(_一桁ずつ四項に分解した加算式文字列,(
                    between(1,_n,_整数),
                    number_chars(_整数,_一桁ずつ四項に分解した数字ならび),
                    atomic_list_concat(_一桁ずつ四項に分解した数字ならび,'+',_一桁ずつ四項に分解した加算式文字列)),
              _一桁ずつ四項に分解した加算式文字列ならび).