Javascriptでハッシュ関数を作成しようとしましたが、その1つのバージョンが2文字の文字列で異常な動作をしていました。Javascriptハッシュ短い文字列での異常な動作
function hash(seed) {
var genseed = 0;
for(i=0;i<seed.length;++i) {
genseed += seed.charCodeAt(i)**((seed.length-1)-i);
}
console.log(genseed)
}
ハッシュ( "AB")やハッシュ( "AX")のような2文字の文字列に対してハッシュを呼び出すと、全く同じ結果になります。はい、私はハッシュの衝突について知っていますが、ここでは、最初の文字が同じであれば、2番目の文字は何も変わらないので、無視されているようです。なぜこれはどうして起こりますか?
'(seed.length-1)-i'とは何ですか? –
もっと複雑な式の代わりに '** i'を使ってみませんか? – Barmar
@OliverCharlesworth seed.lengthは、入力文字列内の文字数です。私はforループがすでに実行されている回数です(このシナリオでは、とにかく) –