このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1354393458/861
#  
#  お題:たとえば整数20010307なら21370000のように0を右側に寄せ集めた整数を返す
#  


'たとえば整数20010307なら21370000のように0を右側に寄せ集めた整数を返す'(_整数,_0を右側に寄せ集めた整数) :-
        number_chars(_整数,_整数文字ならび),
        '0を右側に寄せ集めた'(_整数文字ならび,_0以外の文字ならび,_0の文字ならび),
        整数を返す(_0以外の文字ならび,_0の文字ならび,_0を右側に寄せ集めた整数).

'0を右側に寄せ集めた'(_整数文字ならび,_0以外の文字ならび,_0の文字ならび) :-
        findall('0',member('0',_整数文字ならび),_0の文字ならび),
        findall(_整数文字,(
                    member(_整数文字,_整数文字ならび),
                    \+(_整数文字='0')),
                _0以外の文字ならび).

整数を返す(_0以外のならび,_0のならび,_0を右側に寄せ集めた整数) :-
        append(_0以外のならび,_0のならび,_0を右側に寄せ集めたならび),
        number_chars(_0を右側に寄せ集めた整数,_0を右側に寄せ集めたならび).