var g_counter = function(maxsize) { var natArbitrary = jsc.nat(maxsize) , pairArbitrary = jsc.pair(jsc.asciichar, natArbitrary) , arrayArbitrary = jsc.array(pairArbitrary) return { generator: arrayArbitrary.generator.map(fromArray), shrink: arrayArbitrary.shrink.isomap(fromArray, toArray), show: function (m) { var m_payload = m.toJS().e return "{" + Object.keys(m_payload).map(function (k) { return k + ": " + natArbitrary.show(m_payload[k]); }).join(", ") + "}"; } } }
const skips = idxPairs.map(([i, j]) => [skip2(A, i, j), skip(b, i)]); return skips; } }); const show = ([A, b]) => `${JSON.stringify(A)} * x = ${JSON.stringify(b)}`; return { generator: jsc.utils.curried2(generator, arguments), shrink: jsc.utils.curried2(shrink, arguments), show: jsc.utils.curried2(show, arguments) }; }, digitStrings() { const digits = jsc.nat(9); const generator = jsc.generator.bless(size => { const n = jsc.random(1, Math.max(1, size)); const v = new Array(n); for (let i = 0; i < n; ++i) v[i] = digits.generator(); return v.join(''); }); const shrink = jsc.shrink.bless(s => { if (s.length <= 1) return []; else return seq.range(0, s.length).map(i => skip(s, i)).toArray(); });