@blackglory/structures 0.10.4 → 0.10.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/es2015/index.min.mjs +2 -2
- package/dist/es2015/index.min.mjs.map +1 -1
- package/dist/es2015/index.mjs +40 -9
- package/dist/es2015/index.mjs.map +1 -1
- package/dist/es2015/index.umd.js +40 -9
- package/dist/es2015/index.umd.js.map +1 -1
- package/dist/es2015/index.umd.min.js +1 -1
- package/dist/es2015/index.umd.min.js.map +1 -1
- package/dist/es2018/index.min.mjs +2 -2
- package/dist/es2018/index.min.mjs.map +1 -1
- package/dist/es2018/index.mjs +40 -9
- package/dist/es2018/index.mjs.map +1 -1
- package/dist/es2018/index.umd.js +40 -9
- package/dist/es2018/index.umd.js.map +1 -1
- package/dist/es2018/index.umd.min.js +1 -1
- package/dist/es2018/index.umd.min.js.map +1 -1
- package/lib/es2015/bit-set.d.ts +3 -1
- package/lib/es2015/bit-set.js +39 -9
- package/lib/es2015/bit-set.js.map +1 -1
- package/lib/es2018/bit-set.d.ts +3 -1
- package/lib/es2018/bit-set.js +39 -9
- package/lib/es2018/bit-set.js.map +1 -1
- package/package.json +1 -1
package/dist/es2018/index.umd.js
CHANGED
|
@@ -16961,8 +16961,8 @@
|
|
|
16961
16961
|
|
|
16962
16962
|
class BitSet {
|
|
16963
16963
|
constructor() {
|
|
16964
|
+
this.array = new DynamicTypedArray(Uint8Array);
|
|
16964
16965
|
this.length = 0;
|
|
16965
|
-
this.array = new DynamicTypedArray(Uint8Array); // 经测试, 比Uint32Array快
|
|
16966
16966
|
}
|
|
16967
16967
|
get [Symbol.toStringTag]() {
|
|
16968
16968
|
return this.constructor.name;
|
|
@@ -16974,12 +16974,42 @@
|
|
|
16974
16974
|
return this.values();
|
|
16975
16975
|
}
|
|
16976
16976
|
*values() {
|
|
16977
|
-
|
|
16978
|
-
|
|
16979
|
-
|
|
16977
|
+
if (this.length > 0) {
|
|
16978
|
+
const maxArrayLength = Math.ceil(this.length / BitSet.bitsPerElement);
|
|
16979
|
+
const remainder = BitSet.bitsPerElement - (maxArrayLength * BitSet.bitsPerElement - this.length);
|
|
16980
|
+
const lastIndex = maxArrayLength - 1;
|
|
16981
|
+
for (let index = 0; index < lastIndex; index++) {
|
|
16982
|
+
const element = this.array.internalTypedArray[index];
|
|
16983
|
+
for (let bit = 0; bit < BitSet.bitsPerElement; bit++) {
|
|
16984
|
+
const mask = this.getMask(bit);
|
|
16985
|
+
if ((element & mask) === mask) {
|
|
16986
|
+
yield index * 8 + bit;
|
|
16987
|
+
}
|
|
16988
|
+
}
|
|
16989
|
+
}
|
|
16990
|
+
const lastElement = this.array.internalTypedArray[maxArrayLength - 1];
|
|
16991
|
+
for (let bit = 0; bit < remainder; bit++) {
|
|
16992
|
+
const mask = this.getMask(bit);
|
|
16993
|
+
if ((lastElement & mask) === mask) {
|
|
16994
|
+
yield lastIndex * 8 + bit;
|
|
16995
|
+
}
|
|
16980
16996
|
}
|
|
16981
16997
|
}
|
|
16982
16998
|
}
|
|
16999
|
+
_dumpBinaryStrings() {
|
|
17000
|
+
const result = [];
|
|
17001
|
+
const expectedBinaryStringLength = Uint8Array.BYTES_PER_ELEMENT * 8;
|
|
17002
|
+
for (let i = 0; i < this.array.length; i++) {
|
|
17003
|
+
const binary = this.array.internalTypedArray[i].toString(2);
|
|
17004
|
+
if (binary.length < expectedBinaryStringLength) {
|
|
17005
|
+
result.push('0'.repeat(expectedBinaryStringLength - binary.length) + binary);
|
|
17006
|
+
}
|
|
17007
|
+
else {
|
|
17008
|
+
result.push(binary);
|
|
17009
|
+
}
|
|
17010
|
+
}
|
|
17011
|
+
return result;
|
|
17012
|
+
}
|
|
16983
17013
|
has(value) {
|
|
16984
17014
|
var _a;
|
|
16985
17015
|
const { index, mask } = this.getPosition(value);
|
|
@@ -17005,17 +17035,18 @@
|
|
|
17005
17035
|
}
|
|
17006
17036
|
}
|
|
17007
17037
|
getPosition(value) {
|
|
17008
|
-
const
|
|
17009
|
-
const
|
|
17010
|
-
const
|
|
17011
|
-
const
|
|
17012
|
-
const mask = this.getMask(value);
|
|
17038
|
+
const remainder = value % BitSet.bitsPerElement;
|
|
17039
|
+
const quotient = (value - remainder) / BitSet.bitsPerElement;
|
|
17040
|
+
const index = quotient;
|
|
17041
|
+
const mask = this.getMask(remainder);
|
|
17013
17042
|
return { index, mask };
|
|
17014
17043
|
}
|
|
17044
|
+
// 输入一定是一个小于bitsPerElement的值, 取值范围是[0, bitsPerElement)
|
|
17015
17045
|
getMask(value) {
|
|
17016
17046
|
return 2 ** value;
|
|
17017
17047
|
}
|
|
17018
17048
|
}
|
|
17049
|
+
BitSet.bitsPerElement = Uint8Array.BYTES_PER_ELEMENT * 8;
|
|
17019
17050
|
|
|
17020
17051
|
exports.BadEventError = BadEventError;
|
|
17021
17052
|
exports.BitSet = BitSet;
|