私は配列の配列を持っています。内側の配列は 16 個のスロットで、それぞれに 0..15 の番号が付いています。単純な置換。
外側の配列に含まれる配列のいずれかに、テスト配列 (16 個の値の順列) と同じ値があるかどうかを確認したい。
私はこれを次のように簡単に行うことができます:
var containsArray = function (outer, inner) {
var len = inner.length;
for (var i=0; i<outer.length; i++) {
var n = outer[i];
var equal = true;
for (var x=0; x<len; x++) {
if (n[x] != inner[x]) {
equal = false;
break;
}
}
if (equal) return true;
}
return false;
}
しかし、より速い方法はありますか?
各順列に整数値 (実際には 64 ビット整数) を割り当てることはできますか?
スロットの各値は 0..15 で、4 ビットで表現できることを意味します。16 個のスロットがあり、これは合計 64 ビットの情報を意味します。
C# では、Int64 型を使用するこのアプローチを使用して、内側の配列 (または順列) のハッシュを計算して格納するのは簡単です。Javascriptには、これを高速にする64ビット整数演算がありますか?