UNPKG

@lazy-random/array-algorithm

Version:
1 lines 2.79 kB
{"version":3,"file":"index.esm.mjs","sources":["../src/swapAlgorithm.ts","../src/array_rebase.ts"],"sourcesContent":["import { IArrayInput02 } from '@lazy-random/shared-lib';\nimport { arrayRandIndexByLength } from '@lazy-random/array-rand-index';\n\nexport function swapAlgorithm<T extends IArrayInput02<any>>(arr: T,\n\toverwrite?: boolean,\n\tfn: (n: number, ...argv: any[]) => number = arrayRandIndexByLength,\n)\n{\n\tlet i: number = arr.length;\n\t// @ts-ignore\n\tlet ret = (overwrite ? arr : arr.slice());\n\n\twhile (i)\n\t{\n\t\tlet idx: number = fn(i--);\n\n\t\tif (i === idx) continue;\n\n\t\tlet cache = ret[i];\n\t\tret[i] = ret[idx];\n\t\tret[idx] = cache;\n\n\t\t//console.log(i, idx, ret);\n\t}\n\n\treturn ret\n}\n\nexport function swapAlgorithm2<T extends IArrayInput02<any>>(arr: T,\n\toverwrite?: boolean,\n\tfn: (n: number, ...argv: any[]) => number = arrayRandIndexByLength,\n): T\n{\n\tlet i: number = arr.length;\n\t// @ts-ignore\n\tlet ret = (overwrite ? arr : arr.slice());\n\tlet len = i;\n\tlet j = Math.ceil(len / 2);\n\n\twhile (i)\n\t{\n\t\tlet idx: number = fn(len);\n\t\ti--;\n\n\t\tif (idx === i)\n\t\t{\n\t\t\tif (i < j)\n\t\t\t{\n\t\t\t\tidx = fn(len)\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tidx = fn(i)\n\t\t\t}\n\t\t}\n\n\t\tif (i === idx) continue;\n\n\t\tlet cache = ret[i];\n\t\tret[i] = ret[idx];\n\t\tret[idx] = cache;\n\n\t\t//console.log(i, idx, ret);\n\t}\n\n\treturn ret\n}\n","\n/**\n * back to original interval\n */\nexport function array_rebase(ret_b: number[], n_diff: number, min: number, max: number)\n{\n\tlet b_sum = 0;\n\n\tlet bool: boolean;\n\n\tlet i = ret_b.length;\n\n\tif (typeof min === 'number' || typeof max === 'number')\n\t{\n\t\twhile (i--)\n\t\t{\n\t\t\tlet v = ret_b[i];\n\t\t\tlet n = v + n_diff;\n\n\t\t\tif (n >= min && n <= max)\n\t\t\t{\n\t\t\t\tbool = true;\n\t\t\t\tret_b[i] = n;\n\n\t\t\t\tb_sum += n\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tbool = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\telse\n\t{\n\t\twhile (i--)\n\t\t{\n\t\t\tlet v = ret_b[i];\n\t\t\tlet n = v + n_diff;\n\n\t\t\tret_b[i] = n;\n\n\t\t\tb_sum += n\n\t\t}\n\n\t\tbool = true;\n\t}\n\n\treturn {\n\t\tbool,\n\t\tb_sum,\n\t};\n}\n"],"names":["overwrite","arr","slice","idx","i","cache","ret","swapAlgorithm2","fn","arrayRandIndexByLength","length","ceil","len","j","bool","ret_b","min","max","n_diff","n"],"mappings":";;;wBAScA,IAAAC,IACbA,EAAoBC;aAMK;IAExB,IAAAC;QACAC,MAAID,GAGuB;IAG5B,IAAAE,IAAUC,EAAAF;IAGLE,EAAAF,KAAAE,EAAAH;;SAQDG;;;AAKH,SAAAC,eAAAN,GAAAD,GAAAQ,IAAAC;EAGA,IAAAL,IAAAH,EAAAS,mCAKEN,YAOWO,KAAAC,IAAA;;IAEb,IAAAT,IAAIK,EAAAI;aAEJT,MAAIC,MAMLD,IAAAK,EADAJ,IAAAS,IACAD;;;;;;;;MC9DKE,cAEOC,EAAAL;EAIZ,IAAa,mBAARM,KAAQ,mBAAAC,SAIFb,OAAA;IAGT,QAAAW,EAASX,KAIJc;;MAgBLJ,KAAA;MACA;;SAXC,kBAGAK;;;;MAsBHJ,EAAAX;;;;;;;;;;"}