このディレクトリの索引
#  出題場所:: http://toro.2ch.net/test/read.cgi/tech/1357191974/435
#  お題:1から100をチャンパーノウン定数での出現順に(出現位置が同じ場合は 
#  元のデータの順に)表示する。

'1から100をチャンパーノウン定数での出現順に(出現位置が同じ場合は元のデータの順に)表示する。' :-
        '1から100までのチャンパーノウン定数'(_チャンパーノウン定数),
        '1から100をチャンパーノウン定数での出現順に(出現位置が同じ場合は元のデータの順に)'(_チャンパーノウン定数,_整列した_開始位置_数値定数ならび),
        表示する(_整列した_開始位置_数値定数ならび).

'1から100までのチャンパーノウン定数'(_チャンパーノウン定数) :-
        findall(_数値定数,(
                    between(1,100,_数値),
                    atom_number(_数値定数,_数値)),
                _数値定数ならび),
        atomic_list_concat(['0.'|_数値定数ならび],_チャンパーノウン定数).

'1から100をチャンパーノウン定数での出現順に(出現位置が同じ場合は元のデータの順に)'(_チャンパーノウン定数,_整列した_開始位置_数値ならび) :-
        findall([_開始位置,_数値],(
                    between(1,100,_数値),
                    atom_number(_数値定数,_数値),
                    sub_atom(_チャンパーノウン定数,_開始位置,_,_,_数値定数)),
                 _開始位置_数値ならび),
        sort(_開始位置_数値ならび,_整列した_開始位置_数値ならび).

表示する(_整列した_開始位置_数値ならび) :-
        forall(member(_数値,_整列した_開始位置_数値ならび),writef('%t\n',[_数値])).