このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1322562648/166
#  [1] 授業単元:2分探索  
#  [2] 問題文(含コード&リンク): 
#  2分探索を呼び出すmain関数を作成し、実際の動作を確認せよ。 
#  ただし各データの値は構造体配列の初期設定で設定するものとする。 
#  また、プログラムは以下のように動作するものとする。 
#  Please input a key: 8 
#    Found! Key=8, Name=Hanada 
#  Please input a key: 24 
#    Found! Key=24, Name=Nishida 
#  Please input a key: 6 
#    Not Found! 
#  Please input a key:  
#  ・ 
#  ・ 
#   
#  

鍵付き整列済みならびの二分探索(_整列済みならび,_鍵,_取り出しデータ) :-
        ならびの二分(_整列済みならび,L1,L2),
        鍵付き整列済みならびの二分探索(_鍵,L1,L2,_取り出しデータ).

鍵付き整列済みならびの二分探索(_鍵,L1,[(_鍵,_取り出しデータ)|_],_取り出しデータ) :- !.
鍵付き整列済みならびの探索(_鍵,L1,[(A,_)|R],_取り出しデータ) :-
        _鍵 @> A,
        鍵付き整列済みならびの二分探索(R,_鍵,_取り出しデータ).
鍵付き整列済みならびの探索(_鍵,L1,[(A,_)|R],_取り出しデータ) :-
        _鍵 @< A,
        鍵付き整列済みならびの二分探索(L1,_鍵,_取り出しデータ).

ならびの二分(L,L1,L2) :-
        length(L,Len),
        Len1 is Len // 2,
        length(L1,Len1),
        append(L1,L2,L).