なんか書いてみるかな?ってことで
ハッシュ値を計算してみました
注:blueleafさん作のlongint.dllを使用しています
#include "longint.hsp" #module #defcfunc calc_hash var source l=strlen(source) tmp01=LongInt(0) to_cmp=Longint(1)
dim v,l repeat l v(cnt)=peek(source,cnt) loop repeat l tmp01+=Longint(v.cnt)*to_cmp to_cmp*=31;注1 // logmes str(tmp01) loop
tmp01\=2039;注2 r=int(tmp01) // logmes str(tmp01) return r #global s1="abc--start" s2="def--start" s3="abc--begin" mes calc_hash(s1) mes calc_hash(s2) mes calc_hash(s3) stop |
注1:ハッシュ値は文字列の各要素に
31とか37を掛け続けた後、素数で除算して求めるみたいです
注2:文字コードの関係で¥が\になっています
ハッシュ値を計算できたはいいが
これをどんなデータ構造で管理するかは
今後の課題です
0 件のコメント:
コメントを投稿