【Mind】文字列をハッシュ値に変える

前回のハッシュマップもどきは、ハッシュ関数をまったくw実装していなかったので まずは文字列をハッシュ値として使える数値に変える関数というか処理単語を作ってみました。
参考にしたページはこちらです。
http://www.jamboree.jp/cms/archives/190
リンク先ではRubyで実装されていますが、Mindで実装してみました。
意味もなくハッシュテーブルの最大値は素数にしています。
http://www.atmarkit.co.jp/news/analysis/200803/24/semi.html
「素数ゼミとハッシュテーブル」
こちらで、素数のテーブルエントリー数がイイという話を読んだので ^-^)>
というわけでMindのソースはこちらです

※
※ ハッシュ値計算
※
ハッシュテーブル最大値は 数値 101。
ハッシュ値計算とは (文字列->ハッシュ値)
計算元文字列は 文字列
ハッシュ値は 変数
重み数は 変数
計算元文字列に 入れ
ハッシュ値を クリアし 
重み数へ 1を 入れ
計算元文字列の 文字数で 回数指定して
重み数が 7より 大きい
ならば 重み数に 1を 入れ
つぎに
計算元文字列から 一文字切り出し 重み数を 掛けて
ハッシュ値を 増加し
重み数を 一つ増加し
繰り返し
ハッシュ値と ハッシュテーブル最大値の 余りを 返す。
※
※ テスト用プログラム
※
ハッシュ値を計算して結果表示とは (文字列->・)
複写して 表示し
ハッシュ値計算して ","を 表示し 数値表示し 改行する。
メインとは
"abc"で ハッシュ値を計算して結果表示し
"cba"で ハッシュ値を計算して結果表示し
"bca"で ハッシュ値を計算して結果表示し
"abcdefgh"で ハッシュ値を計算して結果表示し。

コメント

  1. まとめ【【Mind】文字列をハッ】

    前回のハッシュマップもどきは、ハッシュ関数をまったくw実装していなかったので まずは文字列をハッシュ