From 20da19368e8c6b01c1310982edc3e1594e358903 Mon Sep 17 00:00:00 2001 From: Kasper Isager Date: Fri, 18 Nov 2016 22:41:52 +0100 Subject: [PATCH] Vector tweaks --- lib/vector.js | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/lib/vector.js b/lib/vector.js index 7529f7b..ff953aa 100644 --- a/lib/vector.js +++ b/lib/vector.js @@ -20,7 +20,7 @@ export default class Vector { let e = 0; for (let j = 0; j < n; j++) { - e |= (cs[i + j] ? 1 : 0) << n - j - 1; + e |= (cs[i + j] ? 1 : 0) << (n - j - 1); } c[c.length] = e; @@ -81,7 +81,7 @@ export default class Vector { let b = 7; for (let i = 0, n = c.length; i < n; i++) { - b ^= 31 * b + c[i] + (b << 6) + (b >> 2); + b ^= (31 * b) + c[i] + (b << 6) + (b >> 2); } return b ^ (b >> 32); @@ -94,7 +94,19 @@ export default class Vector { * @return {boolean} `true` if the vectors are equal, otherwise `false`. */ equals(v) { - return Vector.distance(this, v) === 0; + if (this.l !== v.l) { + return false; + } + + const c = this.c; + + for (let i = 0, n = c.length; i < n; i++) { + if (c[i] !== v.c[i]) { + return false; + } + } + + return true; } /** @@ -142,7 +154,7 @@ export default class Vector { * @return {Vector} */ static random(l) { - const c = Array(l); + const c = new Array(l); for (let i = 0; i < l; i++) { c[i] = (Math.random() + 0.5) | 0;