{"version":3,"file":"index.cjs","sources":["../src/_multicombinations.js","../src/multicombinations.js"],"sourcesContent":["import {list} from '@iterable-iterator/list';\nimport {nrepeat} from '@iterable-iterator/repeat';\n\n/**\n * Yields all k-multicombinations of {0, 1, ..., n-1}.\n *\n * @param {number} n\n * @param {number} r\n * @returns {IterableIterator<number[]>}\n */\nexport default function* multicombinations(n, r) {\n\tif (n === 0 && r > 0) return;\n\n\tconst indices = list(nrepeat(0, r));\n\n\tyield indices;\n\n\twhile (true) {\n\t\tlet i = r - 1;\n\n\t\t// eslint-disable-next-line no-constant-condition\n\t\twhile (true) {\n\t\t\tif (i < 0) return;\n\n\t\t\tif (indices[i] !== n - 1) {\n\t\t\t\tconst pivot = ++indices[i];\n\n\t\t\t\tfor (++i; i < r; ++i) indices[i] = pivot;\n\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\t--i;\n\t\t}\n\n\t\tyield indices;\n\t}\n}\n","import {list} from '@iterable-iterator/list';\nimport {map, pick} from '@iterable-iterator/map';\n\nimport _multicombinations from './_multicombinations.js';\n\n/**\n * Yields all combinations, with repetitions, of each possible choice of\n * <code>r</code> elements of the input iterable.\n *\n * @example\n * // A B C\n * multicombinations('ABC', 1)\n *\n * @example\n * // 00 01 02 11 12 22\n * multicombinations(range(3), 2)\n *\n * @param {Iterable} iterable - The input iterable.\n * @param {number} r - The size of the combinations to generate.\n * @returns {IterableIterator}\n */\nconst multicombinations = (iterable, r) => {\n\tconst pool = list(iterable);\n\treturn map(\n\t\t(indices) => list(pick(pool, indices)),\n\t\t_multicombinations(pool.length, r),\n\t);\n};\n\nexport default multicombinations;\n"],"names":["multicombinations","n","r","indices","list","nrepeat","i","pivot","_context","iterable","pool","map","pick","_multicombinations","length"],"mappings":"8IAUyBA,YAAAA,EAAkBC,EAAGC,iGACnC,IAAND,GAAWC,EAAI,oDAInB,OAFMC,EAAUC,OAAKC,UAAQ,EAAGH,aAE1BC,EALQ,OAQTG,EAAIJ,EAAI,cAIPI,EAAI,yDAEJH,EAAQG,KAAOL,EAAI,mBAGtB,IAFMM,IAAUJ,EAAQG,KAEjBA,EAAGA,EAAIJ,IAAKI,EAAGH,EAAQG,GAAKC,EAjBxB,sCAsBVD,EAtBUE,uBAyBb,iBAAML,EAzBO,qHCWW,SAACM,EAAUP,GACpC,IAAMQ,EAAON,OAAKK,GAClB,OAAOE,MACN,SAACR,UAAYC,OAAKQ,OAAKF,EAAMP,KAC7BU,EAAmBH,EAAKI,OAAQZ"}