10/07/05 15:39:40
>>233
% Prolog
分離連鎖の初期化(_ハッシュ表の長さ) :-
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])).