このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1312201995/752
#  ../test/read.cgi/tech/1312201995/748,../test/read.cgi/tech/1312201995/751 
#  レスありがとうございます。 
#  オプションは無視していいです。すみませんでした。 
#  ・双方向循環リストの長さ(ダミーノードを除く)を求める関数 
#  ・双方向循環リストへの「一番先頭への挿入」と「削除」(削除ノードを直接指定)を出きる関数 
#  ・それらの関数を用いてのjosephusの問題を解くプログラムを作れという問題です。 
#   
#  よろしければよろしくお願いします。 
# 
# 

'双方向循環リストの長さ(ダミーノードを除く)を求める'(_長さ) :-
        先頭ノード(_先頭ノード),
        双方向循環リスト(_先頭ノード,_次のノード),
        '双方向循環リストの長さ(ダミーノードを除く)を求める'(_次のノード,_先頭ノード,[_],_長さ).

'双方向循環リストの長さ(ダミーノードを除く)を求める'(_先頭ノード,_先頭ノード,L,_長さ) :-
        length(L,_長さ),!.
'双方向循環リストの長さ(ダミーノードを除く)を求める'(_ノード_1,_先頭ノード,Ln,_長さ) :-
        双方向循環リスト(_ノード_1,_ノード_2),
        '双方向循環リストの長さ(ダミーノードを除く)を求める'(_ノード_2,_先頭ノード,[_|Ln],_長さ).