このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1086272325/751
#  INT_MAXより小さいユニークIDの最も効率のよい生成器は? 
# 

'INT_MAXより小さいユニークIDの最も効率のよい生成器は'(_INT_MAX,_ID) :-
        'INT_MAXより小さいユニークIDの最も効率のよい非決定性の生成器は'(_INT_MAX,_ID),!.

'INT_MAXより小さいユニークIDの最も効率のよい非決定性の生成器は'(_INT_MAX,_ID) :-
        _ID is (random mod (_INT_MAX - 1)) + 1,
        number_chars(_ID,Chars),
        atom_chars(Atom,['$'|Chars]),
        \+(clause(Atom,true)),
        asserta(Atom).
'INT_MAXより小さいユニークIDの最も効率のよい非決定性の生成器は'(_INT_MAX,_ID) :-
        'INT_MAXより小さいユニークIDの最も効率のよい非決定性の生成器は'(_INT_MAX,_ID).

生成器の初期化(_INT_MAX) :-
        M is _INT_MAX - 1,
        for(1,N,M),
        concat_atom['$',N],Atom),
        retract(Atom),
        N = M.