@lazy-random/df-array
Version:
79 lines (78 loc) • 3.62 kB
JavaScript
!function(e, t) {
"object" == typeof exports && "undefined" != typeof module ? t(exports, require("@lazy-random/expect"), require("@lazy-random/util-distributions"), require("@lazy-random/array-algorithm"), require("@lazy-random/df-uniform"), require("@lazy-random/shared-lib")) : "function" == typeof define && define.amd ? define([ "exports", "@lazy-random/expect", "@lazy-random/util-distributions", "@lazy-random/array-algorithm", "@lazy-random/df-uniform", "@lazy-random/shared-lib" ], t) : t((e = "undefined" != typeof globalThis ? globalThis : e || self).LazyRandomDfArray = {}, e.expect, e.utilDistributions, e.arrayAlgorithm, e.dfUniform, e.sharedLib);
}(this, (function(e, t, r, n, i, a) {
"use strict";
function _handleStartEnd(e, r = 0, n, i) {
var a;
const l = e.length, d = !i;
return r = Math.max(Math.floor(r), 0), null != n && (n = Math.floor(n), d && t.expect(n).integer.gt(r + 1, `END(${n}) should greater than START(${r}+1)`).gt(0)),
n = Math.min(Math.max(0, null !== (a = n) && void 0 !== a ? a : l), l), d && t.expect(n, `END(${n})`).integer.gte(0).lte(l),
d && t.expect(r, `START(${r})`).integer.gte(0).lt(n), {
start: r,
end: n,
len: l
};
}
function dfArrayIndexOne(e, t, n = 0, i) {
return ({start: n, end: i} = _handleStartEnd(t, n, i)), n === i - 1 ? () => n : () => r.int(e, n, i);
}
function dfArrayShuffle(e, t, i) {
const randIndex = t => r.randIndex(e, t);
if (!i) {
let e;
return e = Buffer.isBuffer(t) ? e => Buffer.from(e) : e => e.slice(), () => n.swapAlgorithm2(e(t), !0, randIndex);
}
return () => n.swapAlgorithm2(t, !0, randIndex);
}
dfArrayShuffle.memoizable = !1, e.dfArrayFill = function dfArrayFill(e, r, n, l) {
let d;
{
let t = a.isUnset(r), f = a.isUnset(n);
d = f && t ? i.dfUniformByte(e) : l ? i.dfUniformFloat(e, r, n) : i.dfUniformInt(e, r, n),
r = void 0, n = void 0;
}
return t.expect(d).function(), e => {
let t = e.length;
for (;t--; ) e[t] = d();
return e;
};
}, e.dfArrayIndex = function dfArrayIndex(e, r, n = 1, i = 0, a) {
t.expect(n, "size").integer.gt(0), t.expect(r.length, "arr.length").integer.gt(0);
const l = dfArrayIndexOne(e, r, i, a);
let d;
({start: i, end: a, len: d} = _handleStartEnd(r, i, a, !0));
let f = Math.max(Math.min(a - i, d, n), 0);
return t.expect(f, `size_runtime(${f})`).lte(n).gt(0), n = f, () => {
f = n;
let e, t = [];
do {
let r = l();
e === r || t.includes(r) || (t.push(e = r), --f);
} while (f > 0);
return t;
};
}, e.dfArrayIndexOne = dfArrayIndexOne, e.dfArrayShuffle = dfArrayShuffle, e.dfArrayUnique = function dfArrayUnique(e, n, i, a, l, d) {
let f = n.slice();
i = Math.min(i || f.length, f.length), l = l || (t => r.randIndex(e, t)), a = !!a,
t.expect(i, "limit").integer.gt(0), t.expect(l, "fnRandIndex").function();
let o, u = i;
const s = function _fnClone(e) {
f = e.slice(), u = i, o = f.length;
};
return () => {
if (o = f.length, 0 === o || 0 == u--) {
let e = a;
if (d) {
let t = d(n, i, a, l);
Array.isArray(t) && t.length > 0 ? (s(t), e = null) : 1 == t ? e = !0 : void 0 !== t && (e = !1);
}
if (e) s(n); else if (null !== e) throw new RangeError(`can't call arrayUnique > ${i} times`);
}
const e = l(o);
return f.splice(e, 1)[0];
};
}, Object.defineProperty(e, "__esModule", {
value: !0
});
}));
//# sourceMappingURL=index.umd.production.min.cjs.map