このディレクトリの索引

#  
#  以下は、
#  「DNS & BIND クックブック ネームサーバ管理者のためのレシピ集」Cricket Liu 著 伊藤高一監訳 田淵貴昭
#  訳 オライリー・ジャパン発行 オーム社発売 2003年4月 のp75から採りました。
#  <問題>
#  ネームサーバが特定の応答を一定の順序で返すように設定したい。
#  
#  cyclic
#      これがデフォルトで、ラウンドロビンといわれることもある。レコードが返される順序は応答の
#      度に循環され、前回の応答で最初に返されたレコードは、その次の応答では最後に移動される。
#  fixed
#      レコードをいつも同じ順番で返答する。
#  random
#      レコードをランダムな順番で返答する。
#  
#  上記の仕様を満たすように述語を定義しなさい。

:- dynamic(名前/1).

応答(cyclic,_名前) :-
        cyclic(_名前).
応答(fixed,_名前) :-
        fixed(_名前).
応答(random,_名前) :-
        random(_名前).

cyclic(_名前) :-
        retract(名前(_名前_1)),
        cyclic(_名前_1,_名前).
cyclic(_名前,_名前).
cyclic(_名前_1,_名前) :-
        assertz(名前(_名前_1)),
        cyclic(_名前).

fixed(_名前) :-
        名前(_名前).
fixed(_名前) :-
        fixed(_名前).

random(_名前) :-
        findall(_名前,(
                    名前(_名前)),
                L),
        length(L,Len),
        Len0 is random(Len),
        append(L0,[_名前|_],L).