@blackglory/structures 0.10.3 → 0.10.6
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/README.md +3 -0
- package/dist/es2015/index.min.mjs +2 -2
- package/dist/es2015/index.min.mjs.map +1 -1
- package/dist/es2015/index.mjs +50 -10
- package/dist/es2015/index.mjs.map +1 -1
- package/dist/es2015/index.umd.js +50 -10
- package/dist/es2015/index.umd.js.map +1 -1
- package/dist/es2015/index.umd.min.js +2 -2
- 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 +50 -10
- package/dist/es2018/index.mjs.map +1 -1
- package/dist/es2018/index.umd.js +50 -10
- package/dist/es2018/index.umd.js.map +1 -1
- package/dist/es2018/index.umd.min.js +2 -2
- package/dist/es2018/index.umd.min.js.map +1 -1
- package/lib/es2015/bit-set.d.ts +5 -1
- package/lib/es2015/bit-set.js +49 -10
- package/lib/es2015/bit-set.js.map +1 -1
- package/lib/es2018/bit-set.d.ts +5 -1
- package/lib/es2018/bit-set.js +49 -10
- package/lib/es2018/bit-set.js.map +1 -1
- package/package.json +1 -1
package/dist/es2015/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;
|
|
@@ -16970,9 +16970,48 @@
|
|
|
16970
16970
|
get size() {
|
|
16971
16971
|
return this.length;
|
|
16972
16972
|
}
|
|
16973
|
+
[Symbol.iterator]() {
|
|
16974
|
+
return this.values();
|
|
16975
|
+
}
|
|
16976
|
+
*values() {
|
|
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 * BitSet.bitsPerElement + 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 * BitSet.bitsPerElement + bit;
|
|
16995
|
+
}
|
|
16996
|
+
}
|
|
16997
|
+
}
|
|
16998
|
+
}
|
|
16999
|
+
_dumpBinaryStrings() {
|
|
17000
|
+
const result = [];
|
|
17001
|
+
for (let i = 0; i < this.array.length; i++) {
|
|
17002
|
+
const binary = this.array.internalTypedArray[i].toString(2);
|
|
17003
|
+
if (binary.length < BitSet.bitsPerElement) {
|
|
17004
|
+
result.push('0'.repeat(BitSet.bitsPerElement - binary.length) + binary);
|
|
17005
|
+
}
|
|
17006
|
+
else {
|
|
17007
|
+
result.push(binary);
|
|
17008
|
+
}
|
|
17009
|
+
}
|
|
17010
|
+
return result;
|
|
17011
|
+
}
|
|
16973
17012
|
has(value) {
|
|
16974
17013
|
var _a;
|
|
16975
|
-
const
|
|
17014
|
+
const [index, mask] = this.getPosition(value);
|
|
16976
17015
|
return (((_a = this.array.get(index)) !== null && _a !== void 0 ? _a : 0) & mask) === mask;
|
|
16977
17016
|
}
|
|
16978
17017
|
add(value) {
|
|
@@ -16981,12 +17020,12 @@
|
|
|
16981
17020
|
if (value >= this.length) {
|
|
16982
17021
|
this.length = value + 1;
|
|
16983
17022
|
}
|
|
16984
|
-
const
|
|
17023
|
+
const [index, mask] = this.getPosition(value);
|
|
16985
17024
|
this.array.set(index, ((_a = this.array.get(index)) !== null && _a !== void 0 ? _a : 0) | mask);
|
|
16986
17025
|
}
|
|
16987
17026
|
delete(value) {
|
|
16988
17027
|
var _a;
|
|
16989
|
-
const
|
|
17028
|
+
const [index, mask] = this.getPosition(value);
|
|
16990
17029
|
this.array.set(index, ((_a = this.array.get(index)) !== null && _a !== void 0 ? _a : 0) & ~mask);
|
|
16991
17030
|
}
|
|
16992
17031
|
clear() {
|
|
@@ -16995,17 +17034,18 @@
|
|
|
16995
17034
|
}
|
|
16996
17035
|
}
|
|
16997
17036
|
getPosition(value) {
|
|
16998
|
-
const
|
|
16999
|
-
const
|
|
17000
|
-
const
|
|
17001
|
-
const
|
|
17002
|
-
|
|
17003
|
-
return { index, mask };
|
|
17037
|
+
const remainder = value % BitSet.bitsPerElement;
|
|
17038
|
+
const quotient = (value - remainder) / BitSet.bitsPerElement;
|
|
17039
|
+
const index = quotient;
|
|
17040
|
+
const mask = this.getMask(remainder);
|
|
17041
|
+
return [index, mask];
|
|
17004
17042
|
}
|
|
17043
|
+
// 输入一定是一个小于bitsPerElement的值, 取值范围是[0, bitsPerElement)
|
|
17005
17044
|
getMask(value) {
|
|
17006
17045
|
return Math.pow(2, value);
|
|
17007
17046
|
}
|
|
17008
17047
|
}
|
|
17048
|
+
BitSet.bitsPerElement = Uint8Array.BYTES_PER_ELEMENT * 8;
|
|
17009
17049
|
|
|
17010
17050
|
exports.BadEventError = BadEventError;
|
|
17011
17051
|
exports.BitSet = BitSet;
|