このディレクトリの索引
http://pc12.2ch.net/test/read.cgi/tech/1276810079/504
#  [1]授業単元:プログラミング演習 
#  [2]問題文;離散探索木(26進)と外部ハッシュ法の比較(探索関数) 
#   キー:   文字列 
#   使用ファイル: wordE100KR.dat 
#   上記ファイルを読み込み、通常の配列に格納する。 
#   この配列から要素を読み込み、分離連鎖法および離散探索木(26進)を生成する。 
#   格納された要素と同一の要素集合すなわち、配列に格納された用語集合に対して、1万語毎に探索を行い、照合回数、および探索時間を測定する。 
#   結果として、照合回数について20個のデータ(2×10)、同様に探索時間について20個のデータ(2×10)が得られる。 
#   これらのデータをExcelに格納し、表、グラフを作成し、分析せよ。 
#  [3]環境 
#  [3.1]OS;windowsXP 
#  [3.2]コンパイラ名とバージョン:gcc  
#  [3.3] 言語:C/C++どちらでも可  
#  [4]期限;7月8日 
#   
#  使用ファイルはhttp://ime.nu/rg550.hp.infoseek.co.jp/cgi-bin/joyful/main.htmにあります。 
#  丸投げで申し訳ありません。よろしくお願いします。 
# 

分離連鎖の初期化(_ハッシュ表の長さ) :-
        abolish(分離連鎖/2),
        abolish(ハッシュ表の長さ/1),
        assertz(ハッシュ表の長さ(_ハッシュ表の長さ)),
        M is _ハッシュ表の長さ - 1,
        for(0,N,M),
        assertz(分離連鎖(N,[])),
        N = M,!.
分離連鎖法による文字列の検索(_文字列,_付加情報) :-
        atom_codes(_文字列,Codes),
        加算(Codes,Y),
        ハッシュ表の長さ(_ハッシュ表の長さ),
        _ハッシュ値 is truncate(Y) mod _ハッシュ表の長さ,
        分離連鎖(_ハッシュ値,L),
        append(_,[[_文字列|_付加情報]|_],L).

分離連鎖法による文字列の追加(_文字列,_付加情報) :-
        atom_codes(_文字列,Codes),
        加算(Codes,Y),
        ハッシュ表の長さ(_ハッシュ表の長さ),
        _ハッシュ値 is truncate(Y) mod _ハッシュ表の長さ,
        retract(分離連鎖(_ハッシュ値,L)),
        asserta(分離連鎖(_ハッシュ値,[[_文字列|_付加情報]|L])).