cubing 0.29.2 → 0.31.0
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/dist/esm/alg/index.js +1 -2
- package/dist/esm/bluetooth/index.js +8 -9
- package/dist/esm/bluetooth/index.js.map +2 -2
- package/dist/esm/{chunk-RH4WZIGC.js → chunk-5QXVR3FK.js} +2 -2
- package/dist/esm/{chunk-RH4WZIGC.js.map → chunk-5QXVR3FK.js.map} +0 -0
- package/dist/esm/{chunk-WNZXZ4MW.js → chunk-7LJHXZJM.js} +6 -8
- package/dist/esm/{chunk-WNZXZ4MW.js.map → chunk-7LJHXZJM.js.map} +2 -2
- package/dist/esm/{chunk-OT7AIIFN.js → chunk-CUIME76I.js} +3 -3
- package/dist/esm/chunk-CUIME76I.js.map +7 -0
- package/dist/esm/{chunk-NUMCMGLU.js → chunk-J5IQUWXC.js} +2 -2
- package/dist/esm/{chunk-NUMCMGLU.js.map → chunk-J5IQUWXC.js.map} +0 -0
- package/dist/esm/{chunk-J5KJ2WWA.js → chunk-JQLCWEVU.js} +44 -31
- package/dist/esm/chunk-JQLCWEVU.js.map +7 -0
- package/dist/esm/{chunk-7OIUETFU.js → chunk-RBZINRTT.js} +213 -106
- package/dist/esm/chunk-RBZINRTT.js.map +7 -0
- package/dist/esm/{chunk-EOEJDDXN.js → chunk-SNLVO6OQ.js} +256 -31
- package/dist/esm/chunk-SNLVO6OQ.js.map +7 -0
- package/dist/esm/{chunk-YD2TMJI2.js → chunk-SYSXHJ4V.js} +137 -183
- package/dist/esm/chunk-SYSXHJ4V.js.map +7 -0
- package/dist/esm/{chunk-POCUG6QW.js → chunk-UAHLC2BK.js} +3 -5
- package/dist/esm/{chunk-POCUG6QW.js.map → chunk-UAHLC2BK.js.map} +2 -2
- package/dist/esm/{chunk-RIXFKOD6.js → chunk-V67YQOIN.js} +4 -4
- package/dist/esm/{chunk-RIXFKOD6.js.map → chunk-V67YQOIN.js.map} +2 -2
- package/dist/esm/kpuzzle/index.js +2 -3
- package/dist/esm/notation/index.js +2 -3
- package/dist/esm/protocol/index.js +4 -5
- package/dist/esm/puzzle-geometry/index.js +6 -19
- package/dist/esm/puzzle-geometry/index.js.map +2 -2
- package/dist/esm/puzzles/index.js +4 -5
- package/dist/esm/{puzzles-dynamic-3x3x3-KIG5A6QR.js → puzzles-dynamic-3x3x3-ZKMODX2P.js} +1 -3
- package/dist/esm/{puzzles-dynamic-3x3x3-KIG5A6QR.js.map → puzzles-dynamic-3x3x3-ZKMODX2P.js.map} +1 -1
- package/dist/esm/{puzzles-dynamic-4x4x4-PEDAPUZK.js → puzzles-dynamic-4x4x4-DT42HVIY.js} +1 -3
- package/dist/esm/{puzzles-dynamic-4x4x4-PEDAPUZK.js.map → puzzles-dynamic-4x4x4-DT42HVIY.js.map} +1 -1
- package/dist/esm/{puzzles-dynamic-side-events-3K26JTOG.js → puzzles-dynamic-side-events-HMUBMHA5.js} +1 -3
- package/dist/esm/{puzzles-dynamic-side-events-3K26JTOG.js.map → puzzles-dynamic-side-events-HMUBMHA5.js.map} +1 -1
- package/dist/esm/{puzzles-dynamic-unofficial-WWJ4NJMX.js → puzzles-dynamic-unofficial-QXSDLTK5.js} +1 -3
- package/dist/esm/{puzzles-dynamic-unofficial-WWJ4NJMX.js.map → puzzles-dynamic-unofficial-QXSDLTK5.js.map} +1 -1
- package/dist/esm/scramble/index.js +2 -3
- package/dist/esm/search/index.js +6 -7
- package/dist/esm/{search-dynamic-sgs-side-events-AE3TLLPA.js → search-dynamic-sgs-side-events-KVUAIBGE.js} +6 -7
- package/dist/esm/{search-dynamic-sgs-side-events-AE3TLLPA.js.map → search-dynamic-sgs-side-events-KVUAIBGE.js.map} +1 -1
- package/dist/esm/{search-dynamic-sgs-unofficial-JUXMNMNO.js → search-dynamic-sgs-unofficial-7ICOL4T7.js} +6 -7
- package/dist/esm/{search-dynamic-sgs-unofficial-JUXMNMNO.js.map → search-dynamic-sgs-unofficial-7ICOL4T7.js.map} +1 -1
- package/dist/esm/{search-dynamic-solve-3x3x3-SA75BI5I.js → search-dynamic-solve-3x3x3-DDVSUP2C.js} +275 -292
- package/dist/esm/search-dynamic-solve-3x3x3-DDVSUP2C.js.map +7 -0
- package/dist/esm/{search-dynamic-solve-4x4x4-ALKH43DT.js → search-dynamic-solve-4x4x4-GGDX7YYZ.js} +6 -7
- package/dist/esm/{search-dynamic-solve-4x4x4-ALKH43DT.js.map → search-dynamic-solve-4x4x4-GGDX7YYZ.js.map} +1 -1
- package/dist/esm/{search-dynamic-solve-fto-5B5ZESQC.js → search-dynamic-solve-fto-MA4X6JEE.js} +6 -17
- package/dist/esm/search-dynamic-solve-fto-MA4X6JEE.js.map +7 -0
- package/dist/esm/{search-dynamic-solve-kilominx-OY4VIARG.js → search-dynamic-solve-kilominx-TVKK4KDH.js} +2 -3
- package/dist/esm/search-dynamic-solve-kilominx-TVKK4KDH.js.map +7 -0
- package/dist/esm/{search-dynamic-solve-master_tetraminx-GE2BTRGI.js → search-dynamic-solve-master_tetraminx-YKINTRUU.js} +4 -11
- package/dist/esm/search-dynamic-solve-master_tetraminx-YKINTRUU.js.map +7 -0
- package/dist/esm/{search-dynamic-solve-sq1-W6PSSLR6.js → search-dynamic-solve-sq1-W33UXTDZ.js} +1 -2
- package/dist/esm/{search-dynamic-solve-sq1-W6PSSLR6.js.map → search-dynamic-solve-sq1-W33UXTDZ.js.map} +1 -1
- package/dist/esm/{search-worker-inside-generated-string-7HYFSSPW.js → search-worker-inside-generated-string-I4T4KADX.js} +28 -30
- package/dist/esm/search-worker-inside-generated-string-I4T4KADX.js.map +7 -0
- package/dist/esm/{search-worker-js-entry-SNUA3SOE.js → search-worker-js-entry-KWGCJXGS.js} +34 -41
- package/dist/esm/search-worker-js-entry-KWGCJXGS.js.map +7 -0
- package/dist/esm/{search-worker-ts-entry-LNB7KNFY.js → search-worker-ts-entry-J533AM5E.js} +2 -3
- package/dist/esm/{search-worker-ts-entry-LNB7KNFY.js.map → search-worker-ts-entry-J533AM5E.js.map} +1 -1
- package/dist/esm/stream/index.js +1 -2
- package/dist/esm/stream/index.js.map +2 -2
- package/dist/esm/twisty/index.js +450 -254
- package/dist/esm/twisty/index.js.map +4 -4
- package/dist/esm/{twisty-dynamic-3d-PU74EKRA.js → twisty-dynamic-3d-OAYMJ6OD.js} +125 -107
- package/dist/esm/twisty-dynamic-3d-OAYMJ6OD.js.map +7 -0
- package/dist/types/{Alg-137fb0d5.d.ts → Alg-60b374e8.d.ts} +25 -26
- package/dist/types/{KState-a73111d7.d.ts → KState-958b873c.d.ts} +1 -1
- package/dist/types/{TwizzleLink-ce20e840.d.ts → TwizzleLink-e873f6e5.d.ts} +77 -54
- package/dist/types/alg/index.d.ts +31 -9
- package/dist/types/bluetooth/index.d.ts +4 -4
- package/dist/types/{bluetooth-puzzle-8a678993.d.ts → bluetooth-puzzle-cc8eeaae.d.ts} +2 -2
- package/dist/types/kpuzzle/index.d.ts +2 -2
- package/dist/types/notation/index.d.ts +1 -1
- package/dist/types/{outside-e55f28a0.d.ts → outside-15f39b79.d.ts} +2 -2
- package/dist/types/{parseAlg-a28f7568.d.ts → parseAlg-3c77c4b3.d.ts} +1 -1
- package/dist/types/protocol/index.d.ts +2 -2
- package/dist/types/puzzle-geometry/index.d.ts +3 -3
- package/dist/types/puzzles/index.d.ts +5 -5
- package/dist/types/scramble/index.d.ts +3 -3
- package/dist/types/search/index.d.ts +3 -3
- package/dist/types/stream/index.d.ts +3 -3
- package/dist/types/twisty/index.d.ts +6 -6
- package/package.json +3 -2
- package/dist/esm/chunk-7OIUETFU.js.map +0 -7
- package/dist/esm/chunk-EOEJDDXN.js.map +0 -7
- package/dist/esm/chunk-J5KJ2WWA.js.map +0 -7
- package/dist/esm/chunk-OT7AIIFN.js.map +0 -7
- package/dist/esm/chunk-SBZRVSPK.js +0 -30
- package/dist/esm/chunk-SBZRVSPK.js.map +0 -7
- package/dist/esm/chunk-YD2TMJI2.js.map +0 -7
- package/dist/esm/search-dynamic-solve-3x3x3-SA75BI5I.js.map +0 -7
- package/dist/esm/search-dynamic-solve-fto-5B5ZESQC.js.map +0 -7
- package/dist/esm/search-dynamic-solve-kilominx-OY4VIARG.js.map +0 -7
- package/dist/esm/search-dynamic-solve-master_tetraminx-GE2BTRGI.js.map +0 -7
- package/dist/esm/search-worker-inside-generated-string-7HYFSSPW.js.map +0 -7
- package/dist/esm/search-worker-js-entry-SNUA3SOE.js.map +0 -7
- package/dist/esm/twisty-dynamic-3d-PU74EKRA.js.map +0 -7
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/cubing/vendor/min2phase/3x3x3-min2phase.js"],
|
|
4
|
-
"sourcesContent": ["var $intern_3 = { 3: 1 };\nvar $intern_9 = 4194303;\nvar $intern_10 = 1048575;\nvar $intern_11 = 524288;\nvar $intern_20 = 65535;\nvar $intern_26 = { 11: 1, 3: 1 };\nvar $intern_27 = { 17: 1, 3: 1 };\nvar $intern_28 = 14540032;\nvar $intern_29 = 286331153;\nvar $intern_30 = { 10: 1, 3: 1 };\nvar _;\nvar prototypesByTypeId_0 = {};\nfunction typeMarkerFn() {}\n\nfunction portableObjCreate(obj) {\n function F() {}\n\n F.prototype = obj || {};\n return new F();\n}\n\nfunction maybeGetClassLiteralFromPlaceHolder_0(entry) {\n return entry instanceof Array ? entry[0] : null;\n}\n\nfunction defineClass(typeId, superTypeId, castableTypeMap) {\n var prototypesByTypeId = prototypesByTypeId_0;\n var createSubclassPrototype = createSubclassPrototype_0;\n var maybeGetClassLiteralFromPlaceHolder =\n maybeGetClassLiteralFromPlaceHolder_0;\n var prototype_0 = prototypesByTypeId[typeId];\n var clazz = maybeGetClassLiteralFromPlaceHolder(prototype_0);\n if (prototype_0 && !clazz) {\n _ = prototype_0;\n } else {\n _ = prototypesByTypeId[typeId] = !superTypeId\n ? {}\n : createSubclassPrototype(superTypeId);\n _.castableTypeMap$ = castableTypeMap;\n _.constructor = _;\n !superTypeId && (_.typeMarker$ = typeMarkerFn);\n }\n // rome-ignore lint(js/noArguments): Legacy code\n for (var i = 3; i < arguments.length; ++i) {\n // rome-ignore lint(js/noArguments): Legacy code\n arguments[i].prototype = _;\n }\n clazz && (_.___clazz$ = clazz);\n}\n\nfunction createSubclassPrototype_0(superTypeId) {\n var prototypesByTypeId = prototypesByTypeId_0;\n return portableObjCreate(prototypesByTypeId[superTypeId]);\n}\n\nfunction Object_0() {}\n\ndefineClass(1, null, {}, Object_0);\n\nfunction narrow_byte(x_0) {\n return (x_0 << 24) >> 24;\n}\n\nfunction Class() {\n this.typeName = null;\n this.simpleName = null;\n this.packageName = null;\n this.compoundName = null;\n this.canonicalName = null;\n this.typeId = null;\n this.arrayLiterals = null;\n}\n\nfunction createClassObject(packageName, compoundClassName) {\n var clazz;\n clazz = new Class();\n clazz.packageName = packageName;\n clazz.compoundName = compoundClassName;\n return clazz;\n}\n\nfunction createForClass(packageName, compoundClassName, typeId) {\n var clazz;\n clazz = createClassObject(packageName, compoundClassName);\n maybeSetClassLiteral(typeId, clazz);\n return clazz;\n}\n\nfunction createForInterface(packageName, compoundClassName) {\n var clazz;\n clazz = createClassObject(packageName, compoundClassName);\n clazz.modifiers = 2;\n return clazz;\n}\n\nfunction createForPrimitive(className, primitiveTypeId) {\n var clazz;\n clazz = createClassObject(\"\", className);\n clazz.typeId = primitiveTypeId;\n clazz.modifiers = 1;\n return clazz;\n}\n\nfunction getClassLiteralForArray_0(leafClass, dimensions) {\n var arrayLiterals = (leafClass.arrayLiterals = leafClass.arrayLiterals || []);\n return (\n arrayLiterals[dimensions] ||\n (arrayLiterals[dimensions] =\n leafClass.createClassLiteralForArray(dimensions))\n );\n}\n\nfunction getPrototypeForClass(clazz) {\n if (clazz.isPrimitive()) {\n return null;\n }\n var typeId = clazz.typeId;\n var prototype_0 = prototypesByTypeId_0[typeId];\n return prototype_0;\n}\n\nfunction maybeSetClassLiteral(typeId, clazz) {\n if (!typeId) {\n return;\n }\n clazz.typeId = typeId;\n var prototype_0 = getPrototypeForClass(clazz);\n if (!prototype_0) {\n prototypesByTypeId_0[typeId] = [clazz];\n return;\n }\n prototype_0.___clazz$ = clazz;\n}\n\ndefineClass(79, 1, {}, Class);\n_.createClassLiteralForArray = function createClassLiteralForArray(dimensions) {\n var clazz;\n clazz = new Class();\n clazz.modifiers = 4;\n dimensions > 1\n ? (clazz.componentType = getClassLiteralForArray_0(this, dimensions - 1))\n : (clazz.componentType = this);\n return clazz;\n};\n_.isPrimitive = function isPrimitive() {\n return (this.modifiers & 1) !== 0;\n};\n\nfunction getClassLiteralForArray(clazz, dimensions) {\n return getClassLiteralForArray_0(clazz, dimensions);\n}\n\nfunction initDim(\n leafClassLiteral,\n castableTypeMap,\n elementTypeId,\n length_0,\n elementTypeCategory,\n dimensions,\n) {\n var result;\n result = initializeArrayElementsWithDefaults(elementTypeCategory, length_0);\n initValues(\n getClassLiteralForArray(leafClassLiteral, dimensions),\n castableTypeMap,\n elementTypeId,\n elementTypeCategory,\n result,\n );\n return result;\n}\n\nfunction initDims(\n leafClassLiteral,\n castableTypeMapExprs,\n elementTypeIds,\n leafElementTypeCategory,\n dimExprs,\n count,\n) {\n return initDims_0(\n leafClassLiteral,\n castableTypeMapExprs,\n elementTypeIds,\n leafElementTypeCategory,\n dimExprs,\n 0,\n count,\n );\n}\n\nfunction initDims_0(\n leafClassLiteral,\n castableTypeMapExprs,\n elementTypeIds,\n leafElementTypeCategory,\n dimExprs,\n index_0,\n count,\n) {\n var elementTypeCategory;\n var i;\n var isLastDim;\n var length_0;\n var result;\n length_0 = dimExprs[index_0];\n isLastDim = index_0 === count - 1;\n elementTypeCategory = isLastDim ? leafElementTypeCategory : 0;\n result = initializeArrayElementsWithDefaults(elementTypeCategory, length_0);\n initValues(\n getClassLiteralForArray(leafClassLiteral, count - index_0),\n castableTypeMapExprs[index_0],\n elementTypeIds[index_0],\n elementTypeCategory,\n result,\n );\n if (!isLastDim) {\n ++index_0;\n for (i = 0; i < length_0; ++i) {\n result[i] = initDims_0(\n leafClassLiteral,\n castableTypeMapExprs,\n elementTypeIds,\n leafElementTypeCategory,\n dimExprs,\n index_0,\n count,\n );\n }\n }\n return result;\n}\n\nfunction initValues(\n arrayClass,\n castableTypeMap,\n elementTypeId,\n elementTypeCategory,\n array,\n) {\n array.___clazz$ = arrayClass;\n array.castableTypeMap$ = castableTypeMap;\n array.typeMarker$ = typeMarkerFn;\n array.__elementTypeId$ = elementTypeId;\n array.__elementTypeCategory$ = elementTypeCategory;\n return array;\n}\n\nfunction initializeArrayElementsWithDefaults(elementTypeCategory, length_0) {\n var array = new Array(length_0);\n var initValue;\n switch (elementTypeCategory) {\n case 6: {\n initValue = { l: 0, m: 0, h: 0 };\n break;\n }\n case 7: {\n initValue = 0;\n break;\n }\n case 8: {\n initValue = false;\n break;\n }\n default:\n return array;\n }\n for (var i = 0; i < length_0; ++i) {\n array[i] = initValue;\n }\n return array;\n}\n\nfunction create(value_0) {\n var a0;\n var a1;\n var a2;\n a0 = value_0 & $intern_9;\n a1 = (value_0 >> 22) & $intern_9;\n a2 = value_0 < 0 ? $intern_10 : 0;\n return create0(a0, a1, a2);\n}\n\nfunction create0(l, m, h) {\n return { l: l, m: m, h: h };\n}\n\nfunction add_1(a, b) {\n var sum0;\n var sum1;\n var sum2;\n sum0 = a.l + b.l;\n sum1 = a.m + b.m + (sum0 >> 22);\n sum2 = a.h + b.h + (sum1 >> 22);\n return { l: sum0 & $intern_9, m: sum1 & $intern_9, h: sum2 & $intern_10 };\n}\n\nfunction and(a, b) {\n return { l: a.l & b.l, m: a.m & b.m, h: a.h & b.h };\n}\n\nfunction fromInt(value_0) {\n var rebase;\n var result;\n if (value_0 > -129 && value_0 < 128) {\n rebase = value_0 + 128;\n boxedValues == null &&\n (boxedValues = initDim(\n Lcom_google_gwt_lang_LongLibBase$LongEmul_2_classLit,\n $intern_3,\n 293,\n 256,\n 0,\n 1,\n ));\n result = boxedValues[rebase];\n !result && (result = boxedValues[rebase] = create(value_0));\n return result;\n }\n return create(value_0);\n}\n\nfunction gte(a, b) {\n var signa;\n var signb;\n signa = a.h >> 19;\n signb = b.h >> 19;\n return signa === 0\n ? signb !== 0 ||\n a.h > b.h ||\n (a.h === b.h && a.m > b.m) ||\n (a.h === b.h && a.m === b.m && a.l >= b.l)\n : !(\n signb === 0 ||\n a.h < b.h ||\n (a.h === b.h && a.m < b.m) ||\n (a.h === b.h && a.m === b.m && a.l < b.l)\n );\n}\n\nfunction neq(a, b) {\n return a.l !== b.l || a.m !== b.m || a.h !== b.h;\n}\n\nfunction or(a, b) {\n return { l: a.l | b.l, m: a.m | b.m, h: a.h | b.h };\n}\n\nfunction shl(a, n) {\n var res0;\n var res1;\n var res2;\n n &= 63;\n if (n < 22) {\n res0 = a.l << n;\n res1 = (a.m << n) | (a.l >> (22 - n));\n res2 = (a.h << n) | (a.m >> (22 - n));\n } else if (n < 44) {\n res0 = 0;\n res1 = a.l << (n - 22);\n res2 = (a.m << (n - 22)) | (a.l >> (44 - n));\n } else {\n res0 = 0;\n res1 = 0;\n res2 = a.l << (n - 44);\n }\n return { l: res0 & $intern_9, m: res1 & $intern_9, h: res2 & $intern_10 };\n}\n\nfunction shr(a, n) {\n var a2;\n var negative;\n var res0;\n var res1;\n var res2;\n n &= 63;\n a2 = a.h;\n negative = (a2 & $intern_11) !== 0;\n negative && (a2 |= -1048576);\n if (n < 22) {\n res2 = a2 >> n;\n res1 = (a.m >> n) | (a2 << (22 - n));\n res0 = (a.l >> n) | (a.m << (22 - n));\n } else if (n < 44) {\n res2 = negative ? $intern_10 : 0;\n res1 = a2 >> (n - 22);\n res0 = (a.m >> (n - 22)) | (a2 << (44 - n));\n } else {\n res2 = negative ? $intern_10 : 0;\n res1 = negative ? $intern_9 : 0;\n res0 = a2 >> (n - 44);\n }\n return { l: res0 & $intern_9, m: res1 & $intern_9, h: res2 & $intern_10 };\n}\n\nfunction sub_0(a, b) {\n var sum0;\n var sum1;\n var sum2;\n sum0 = a.l - b.l;\n sum1 = a.m - b.m + (sum0 >> 22);\n sum2 = a.h - b.h + (sum1 >> 22);\n return { l: sum0 & $intern_9, m: sum1 & $intern_9, h: sum2 & $intern_10 };\n}\n\nfunction toInt(a) {\n return a.l | (a.m << 22);\n}\n\nvar boxedValues;\n\nfunction AbstractStringBuilder(string) {\n this.string = string;\n}\n\nfunction max_0(x_0, y_0) {\n return x_0 > y_0 ? x_0 : y_0;\n}\n\nfunction min_0(x_0, y_0) {\n return x_0 < y_0 ? x_0 : y_0;\n}\n\nfunction $indexOf_0(this$static, str) {\n return this$static.indexOf(str);\n}\n\nfunction _String(value_0) {\n return __valueOf(value_0, 0, value_0.length);\n}\n\nfunction __valueOf(x_0, start_0, end) {\n var s = \"\";\n for (var batchStart = start_0; batchStart < end; ) {\n var batchEnd = Math.min(batchStart + 10000, end);\n s += String.fromCharCode.apply(null, x_0.slice(batchStart, batchEnd));\n batchStart = batchEnd;\n }\n return s;\n}\n\nfunction fromCodePoint(codePoint) {\n return String.fromCharCode(codePoint & $intern_20);\n}\n\nvar Ljava_lang_String_2_classLit = createForClass(\"java.lang\", \"String\", 2);\n\nfunction $append(this$static) {\n this$static.string += \" \";\n return this$static;\n}\n\nfunction $append_1(this$static, x_0) {\n this$static.string += x_0;\n return this$static;\n}\n\nfunction StringBuffer() {\n AbstractStringBuilder.call(this, \"\");\n}\n\nfunction equals_7(array1, array2) {\n var i;\n if (array1 === array2) {\n return true;\n }\n if (array1.length !== array2.length) {\n return false;\n }\n for (i = 0; i < array1.length; ++i) {\n if (array1[i] !== array2[i]) {\n return false;\n }\n }\n return true;\n}\n\nlet $clinit_CoordCube_ran = false;\nfunction $clinit_CoordCube() {\n if ($clinit_CoordCube_ran) {\n return;\n }\n $clinit_CoordCube_ran = true;\n UDSliceMove = initDims(\n C_classLit,\n [$intern_3, $intern_26],\n [11, 0],\n 7,\n [495, 18],\n 2,\n );\n TwistMove = initDims(\n C_classLit,\n [$intern_3, $intern_26],\n [11, 0],\n 7,\n [324, 18],\n 2,\n );\n FlipMove = initDims(\n C_classLit,\n [$intern_3, $intern_26],\n [11, 0],\n 7,\n [336, 18],\n 2,\n );\n UDSliceConj = initDims(\n C_classLit,\n [$intern_3, $intern_26],\n [11, 0],\n 7,\n [495, 8],\n 2,\n );\n UDSliceTwistPrun = initDim(I_classLit, $intern_27, 0, 20048, 7, 1);\n UDSliceFlipPrun = initDim(I_classLit, $intern_27, 0, 20791, 7, 1);\n TwistFlipPrun = initDim(I_classLit, $intern_27, 0, 82945, 7, 1);\n CPermMove = initDims(\n C_classLit,\n [$intern_3, $intern_26],\n [11, 0],\n 7,\n [2768, 10],\n 2,\n );\n EPermMove = initDims(\n C_classLit,\n [$intern_3, $intern_26],\n [11, 0],\n 7,\n [2768, 10],\n 2,\n );\n MPermMove = initDims(\n C_classLit,\n [$intern_3, $intern_26],\n [11, 0],\n 7,\n [24, 10],\n 2,\n );\n MPermConj = initDims(\n C_classLit,\n [$intern_3, $intern_26],\n [11, 0],\n 7,\n [24, 16],\n 2,\n );\n CCombPConj = initDims(\n C_classLit,\n [$intern_3, $intern_26],\n [11, 0],\n 7,\n [140, 16],\n 2,\n );\n MCPermPrun = initDim(I_classLit, $intern_27, 0, 8305, 7, 1);\n EPermCCombPPrun = initDim(I_classLit, $intern_27, 0, 48441, 7, 1);\n}\n\nfunction $doMovePrun(this$static, cc, m) {\n this$static.slice_0 = UDSliceMove[cc.slice_0][m];\n this$static.flip =\n FlipMove[cc.flip][($clinit_CubieCube(), Sym8Move)[(m << 3) | cc.fsym]];\n this$static.fsym = (this$static.flip & 7) ^ cc.fsym;\n this$static.flip >>= 3;\n this$static.twist = TwistMove[cc.twist][Sym8Move[(m << 3) | cc.tsym]];\n this$static.tsym = (this$static.twist & 7) ^ cc.tsym;\n this$static.twist >>= 3;\n this$static.prun = max_0(\n max_0(\n getPruning(\n UDSliceTwistPrun,\n this$static.twist * 495 +\n UDSliceConj[this$static.slice_0][this$static.tsym],\n ),\n getPruning(\n UDSliceFlipPrun,\n this$static.flip * 495 +\n UDSliceConj[this$static.slice_0][this$static.fsym],\n ),\n ),\n getPruning(\n TwistFlipPrun,\n (this$static.twist << 11) |\n FlipS2RF[\n (this$static.flip << 3) | (this$static.fsym ^ this$static.tsym)\n ],\n ),\n );\n return this$static.prun;\n}\n\nfunction $doMovePrunConj(this$static, cc, m) {\n m = ($clinit_CubieCube(), SymMove_0)[3][m];\n this$static.flipc =\n FlipMove[cc.flipc >> 3][Sym8Move[(m << 3) | (cc.flipc & 7)]] ^\n (cc.flipc & 7);\n this$static.twistc =\n TwistMove[cc.twistc >> 3][Sym8Move[(m << 3) | (cc.twistc & 7)]] ^\n (cc.twistc & 7);\n return getPruning(\n TwistFlipPrun,\n ((this$static.twistc >> 3) << 11) |\n FlipS2RF[this$static.flipc ^ (this$static.twistc & 7)],\n );\n}\n\nfunction $setWithPrun(this$static, cc, depth) {\n var pc;\n this$static.twist = ($clinit_CubieCube(), TwistR2S)[$getTwist(cc)];\n this$static.flip = FlipR2S[$getFlip(cc)];\n this$static.tsym = this$static.twist & 7;\n this$static.twist = this$static.twist >> 3;\n this$static.prun = getPruning(\n TwistFlipPrun,\n (this$static.twist << 11) | FlipS2RF[this$static.flip ^ this$static.tsym],\n );\n if (this$static.prun > depth) {\n return false;\n }\n this$static.fsym = this$static.flip & 7;\n this$static.flip = this$static.flip >> 3;\n this$static.slice_0 = 494 - getComb(cc.ea, 8, true);\n this$static.prun = max_0(\n this$static.prun,\n max_0(\n getPruning(\n UDSliceTwistPrun,\n this$static.twist * 495 +\n UDSliceConj[this$static.slice_0][this$static.tsym],\n ),\n getPruning(\n UDSliceFlipPrun,\n this$static.flip * 495 +\n UDSliceConj[this$static.slice_0][this$static.fsym],\n ),\n ),\n );\n if (this$static.prun > depth) {\n return false;\n }\n pc = new CubieCube();\n CornConjugate(cc, 1, pc);\n EdgeConjugate(cc, 1, pc);\n this$static.twistc = TwistR2S[$getTwist(pc)];\n this$static.flipc = FlipR2S[$getFlip(pc)];\n this$static.prun = max_0(\n this$static.prun,\n getPruning(\n TwistFlipPrun,\n ((this$static.twistc >> 3) << 11) |\n FlipS2RF[this$static.flipc ^ (this$static.twistc & 7)],\n ),\n );\n return this$static.prun <= depth;\n}\n\nfunction CoordCube() {\n $clinit_CoordCube();\n}\n\nfunction getPruning(table, index_0) {\n $clinit_CoordCube();\n return (table[index_0 >> 3] >> (index_0 << 2)) & 15;\n}\n\nfunction init_0(fullInit) {\n $clinit_CoordCube();\n if (initLevel === 2 || (initLevel === 1 && !fullInit)) {\n return;\n }\n if (initLevel === 0) {\n initPermSym2Raw();\n initCPermMove();\n initEPermMove();\n initMPermMoveConj();\n initCombPMoveConj();\n $clinit_CubieCube();\n initSym2Raw(\n 2048,\n FlipS2R,\n FlipR2S,\n (SymStateFlip = initDim(C_classLit, $intern_26, 0, 336, 7, 1)),\n 0,\n );\n initSym2Raw(\n 2187,\n TwistS2R,\n TwistR2S,\n (SymStateTwist = initDim(C_classLit, $intern_26, 0, 324, 7, 1)),\n 1,\n );\n initFlipMove();\n initTwistMove();\n initUDSliceMoveConj();\n }\n initRawSymPrun(\n MCPermPrun,\n MPermMove,\n MPermConj,\n CPermMove,\n ($clinit_CubieCube(), SymStatePerm),\n 584244,\n fullInit,\n );\n initRawSymPrun(\n EPermCCombPPrun,\n CCombPMove,\n CCombPConj,\n EPermMove,\n SymStatePerm,\n 514084,\n fullInit,\n );\n initRawSymPrun(\n UDSliceTwistPrun,\n UDSliceMove,\n UDSliceConj,\n TwistMove,\n SymStateTwist,\n 431619,\n fullInit,\n );\n initRawSymPrun(\n UDSliceFlipPrun,\n UDSliceMove,\n UDSliceConj,\n FlipMove,\n SymStateFlip,\n 431619,\n fullInit,\n );\n initRawSymPrun(\n TwistFlipPrun,\n null,\n null,\n TwistMove,\n SymStateTwist,\n 103939,\n fullInit,\n );\n initLevel = fullInit ? 2 : 1;\n}\n\nfunction initCPermMove() {\n var c;\n var d;\n var i;\n var j;\n c = new CubieCube();\n d = new CubieCube();\n for (i = 0; i < 2768; i++) {\n $setCPerm(c, ($clinit_CubieCube(), EPermS2R)[i]);\n for (j = 0; j < 10; j++) {\n CornMult(c, moveCube[($clinit_Util(), ud2std)[j]], d);\n CPermMove[i][j] =\n ESym2CSym(EPermR2S[getNPerm(d.ca, 8, false)]) & $intern_20;\n }\n }\n}\n\nfunction initCombPMoveConj() {\n var c;\n var d;\n var i;\n var j;\n var j0;\n c = new CubieCube();\n d = new CubieCube();\n CCombPMove = initDims(\n C_classLit,\n [$intern_3, $intern_26],\n [11, 0],\n 7,\n [140, 10],\n 2,\n );\n for (i = 0; i < 140; i++) {\n setComb(c.ca, i % 70, 0, false);\n for (j0 = 0; j0 < 10; j0++) {\n CornMult(\n c,\n ($clinit_CubieCube(), moveCube)[($clinit_Util(), ud2std)[j0]],\n d,\n );\n CCombPMove[i][j0] =\n (getComb(d.ca, 0, false) + 70 * (((165 >> j0) & 1) ^ ~~(i / 70))) &\n $intern_20;\n }\n for (j = 0; j < 16; j++) {\n CornConjugate(c, ($clinit_CubieCube(), SymMultInv)[0][j], d);\n CCombPConj[i][j] =\n (getComb(d.ca, 0, false) + 70 * ~~(i / 70)) & $intern_20;\n }\n }\n}\n\nfunction initEPermMove() {\n var c;\n var d;\n var i;\n var j;\n c = new CubieCube();\n d = new CubieCube();\n for (i = 0; i < 2768; i++) {\n $setEPerm(c, ($clinit_CubieCube(), EPermS2R)[i]);\n for (j = 0; j < 10; j++) {\n EdgeMult(c, moveCube[($clinit_Util(), ud2std)[j]], d);\n EPermMove[i][j] = EPermR2S[getNPerm(d.ea, 8, true)];\n }\n }\n}\n\nfunction initFlipMove() {\n var c;\n var d;\n var i;\n var j;\n c = new CubieCube();\n d = new CubieCube();\n for (i = 0; i < 336; i++) {\n $setFlip(c, ($clinit_CubieCube(), FlipS2R)[i]);\n for (j = 0; j < 18; j++) {\n EdgeMult(c, moveCube[j], d);\n FlipMove[i][j] = FlipR2S[$getFlip(d)];\n }\n }\n}\n\nfunction initMPermMoveConj() {\n var c;\n var d;\n var i;\n var j;\n var j0;\n c = new CubieCube();\n d = new CubieCube();\n for (i = 0; i < 24; i++) {\n setNPerm(c.ea, i, 12, true);\n for (j0 = 0; j0 < 10; j0++) {\n EdgeMult(\n c,\n ($clinit_CubieCube(), moveCube)[($clinit_Util(), ud2std)[j0]],\n d,\n );\n MPermMove[i][j0] = (getNPerm(d.ea, 12, true) % 24) & $intern_20;\n }\n for (j = 0; j < 16; j++) {\n EdgeConjugate(c, ($clinit_CubieCube(), SymMultInv)[0][j], d);\n MPermConj[i][j] = (getNPerm(d.ea, 12, true) % 24) & $intern_20;\n }\n }\n}\n\nfunction initRawSymPrun(\n PrunTable,\n RawMove,\n RawConj,\n SymMove,\n SymState,\n PrunFlag,\n fullInit,\n) {\n var INV_DEPTH;\n var ISTFP;\n var IS_PHASE2;\n var MAX_DEPTH;\n var MIN_DEPTH;\n var NEXT_AXIS_MAGIC;\n var N_MOVES;\n var N_RAW;\n var N_SIZE;\n var SEARCH_DEPTH;\n var SYM_E2C_MAGIC;\n var SYM_MASK;\n var SYM_SHIFT;\n var check;\n var depth;\n var flip;\n var fsym;\n var i;\n var i0;\n var idx;\n var idxx;\n var inv;\n var j;\n var m;\n var mask;\n var prun;\n var raw;\n var rawx;\n var selArrMask;\n var select;\n var sym;\n var symState;\n var symx;\n var val;\n var val0;\n var xorVal;\n SYM_SHIFT = PrunFlag & 15;\n SYM_E2C_MAGIC = ((PrunFlag >> 4) & 1) === 1 ? $intern_28 : 0;\n IS_PHASE2 = ((PrunFlag >> 5) & 1) === 1;\n INV_DEPTH = (PrunFlag >> 8) & 15;\n MAX_DEPTH = (PrunFlag >> 12) & 15;\n MIN_DEPTH = (PrunFlag >> 16) & 15;\n SEARCH_DEPTH = fullInit ? MAX_DEPTH : MIN_DEPTH;\n SYM_MASK = (1 << SYM_SHIFT) - 1;\n ISTFP = RawMove === null;\n N_RAW = ISTFP ? 2048 : RawMove.length;\n N_SIZE = N_RAW * SymMove.length;\n N_MOVES = IS_PHASE2 ? 10 : 18;\n NEXT_AXIS_MAGIC = N_MOVES === 10 ? 66 : 599186;\n depth = ((PrunTable[N_SIZE >> 3] >> (N_SIZE << 2)) & 15) - 1;\n\n if (depth === -1) {\n for (i = 0; i < ~~(N_SIZE / 8) + 1; i++) {\n PrunTable[i] = $intern_29;\n }\n PrunTable[0] ^= 1;\n depth = 0;\n }\n while (depth < SEARCH_DEPTH) {\n mask = ((depth + 1) * $intern_29) ^ -1;\n for (i0 = 0; i0 < PrunTable.length; i0++) {\n val0 = PrunTable[i0] ^ mask;\n val0 &= val0 >> 1;\n PrunTable[i0] += val0 & (val0 >> 2) & $intern_29;\n }\n inv = depth > INV_DEPTH;\n select = inv ? depth + 2 : depth;\n selArrMask = select * $intern_29;\n check = inv ? depth : depth + 2;\n ++depth;\n xorVal = depth ^ (depth + 1);\n val = 0;\n for (i = 0; i < N_SIZE; ++i, val >>= 4) {\n if ((i & 7) === 0) {\n val = PrunTable[i >> 3];\n if (\n (((val ^ selArrMask) - $intern_29) &\n ~(val ^ selArrMask) &\n -2004318072) ===\n 0\n ) {\n i += 7;\n continue;\n }\n }\n if ((val & 15) !== select) {\n continue;\n }\n raw = i % N_RAW;\n sym = ~~(i / N_RAW);\n flip = 0;\n fsym = 0;\n if (ISTFP) {\n flip = ($clinit_CubieCube(), FlipR2S)[raw];\n fsym = flip & 7;\n flip >>= 3;\n }\n for (m = 0; m < N_MOVES; m++) {\n symx = SymMove[sym][m];\n ISTFP\n ? (rawx = ($clinit_CubieCube(), FlipS2RF)[\n FlipMove[flip][Sym8Move[(m << 3) | fsym]] ^\n fsym ^\n (symx & SYM_MASK)\n ])\n : (rawx = RawConj[RawMove[raw][m]][symx & SYM_MASK]);\n symx >>= SYM_SHIFT;\n idx = symx * N_RAW + rawx;\n prun = (PrunTable[idx >> 3] >> (idx << 2)) & 15;\n if (prun !== check) {\n prun < depth - 1 && (m += (NEXT_AXIS_MAGIC >> m) & 3);\n continue;\n }\n if (inv) {\n PrunTable[i >> 3] ^= xorVal << (i << 2);\n break;\n }\n PrunTable[idx >> 3] ^= xorVal << (idx << 2);\n for (j = 1, symState = SymState[symx]; (symState >>= 1) !== 0; j++) {\n if ((symState & 1) !== 1) {\n continue;\n }\n idxx = symx * N_RAW;\n ISTFP\n ? (idxx += ($clinit_CubieCube(), FlipS2RF)[FlipR2S[rawx] ^ j])\n : (idxx += RawConj[rawx][j ^ ((SYM_E2C_MAGIC >> (j << 1)) & 3)]);\n if (((PrunTable[idxx >> 3] >> (idxx << 2)) & 15) === check) {\n PrunTable[idxx >> 3] ^= xorVal << (idxx << 2);\n }\n }\n }\n }\n }\n}\n\nfunction initTwistMove() {\n var c;\n var d;\n var i;\n var j;\n c = new CubieCube();\n d = new CubieCube();\n for (i = 0; i < 324; i++) {\n $setTwist(c, ($clinit_CubieCube(), TwistS2R)[i]);\n for (j = 0; j < 18; j++) {\n CornMult(c, moveCube[j], d);\n TwistMove[i][j] = TwistR2S[$getTwist(d)];\n }\n }\n}\n\nfunction initUDSliceMoveConj() {\n var c;\n var d;\n var i;\n var i0;\n var j;\n var j0;\n var k;\n var udslice;\n c = new CubieCube();\n d = new CubieCube();\n for (i0 = 0; i0 < 495; i0++) {\n setComb(c.ea, 494 - i0, 8, true);\n for (j0 = 0; j0 < 18; j0 += 3) {\n EdgeMult(c, ($clinit_CubieCube(), moveCube)[j0], d);\n UDSliceMove[i0][j0] = (494 - getComb(d.ea, 8, true)) & $intern_20;\n }\n for (j = 0; j < 16; j += 2) {\n EdgeConjugate(c, ($clinit_CubieCube(), SymMultInv)[0][j], d);\n UDSliceConj[i0][j >> 1] = (494 - getComb(d.ea, 8, true)) & $intern_20;\n }\n }\n for (i = 0; i < 495; i++) {\n for (j = 0; j < 18; j += 3) {\n udslice = UDSliceMove[i][j];\n for (k = 1; k < 3; k++) {\n udslice = UDSliceMove[udslice][j];\n UDSliceMove[i][j + k] = udslice & $intern_20;\n }\n }\n }\n}\n\ndefineClass(31, 1, { 31: 1 }, CoordCube);\n_.flip = 0;\n_.flipc = 0;\n_.fsym = 0;\n_.prun = 0;\n_.slice_0 = 0;\n_.tsym = 0;\n_.twist = 0;\n_.twistc = 0;\nvar CCombPConj;\nvar CCombPMove;\nvar CPermMove;\nvar EPermCCombPPrun;\nvar EPermMove;\nvar FlipMove;\nvar MCPermPrun;\nvar MPermConj;\nvar MPermMove;\nvar TwistFlipPrun;\nvar TwistMove;\nvar UDSliceConj;\nvar UDSliceFlipPrun;\nvar UDSliceMove;\nvar UDSliceTwistPrun;\nvar initLevel = 0;\nvar Lorg_cubing_min2phase_client_CoordCube_2_classLit = createForClass(\n \"org.cubing.min2phase.client\",\n \"CoordCube\",\n 31,\n);\nlet $clinit_CubieCube_ran = false;\nfunction $clinit_CubieCube() {\n if ($clinit_CubieCube_ran) {\n return;\n }\n $clinit_CubieCube_ran = true;\n CubeSym = initDim(\n Lorg_cubing_min2phase_client_CubieCube_2_classLit,\n $intern_3,\n 7,\n 16,\n 0,\n 1,\n );\n moveCube = initDim(\n Lorg_cubing_min2phase_client_CubieCube_2_classLit,\n $intern_3,\n 7,\n 18,\n 0,\n 1,\n );\n moveCubeSym = initDim(J_classLit, $intern_3, 0, 18, 6, 1);\n firstMoveSym = initDim(I_classLit, $intern_27, 0, 48, 7, 1);\n SymMult = initDims(\n I_classLit,\n [$intern_3, $intern_27],\n [17, 0],\n 7,\n [16, 16],\n 2,\n );\n SymMultInv = initDims(\n I_classLit,\n [$intern_3, $intern_27],\n [17, 0],\n 7,\n [16, 16],\n 2,\n );\n SymMove_0 = initDims(\n I_classLit,\n [$intern_3, $intern_27],\n [17, 0],\n 7,\n [16, 18],\n 2,\n );\n Sym8Move = initDim(I_classLit, $intern_27, 0, 144, 7, 1);\n SymMoveUD = initDims(\n I_classLit,\n [$intern_3, $intern_27],\n [17, 0],\n 7,\n [16, 18],\n 2,\n );\n FlipS2R = initDim(C_classLit, $intern_26, 0, 336, 7, 1);\n TwistS2R = initDim(C_classLit, $intern_26, 0, 324, 7, 1);\n EPermS2R = initDim(C_classLit, $intern_26, 0, 2768, 7, 1);\n Perm2CombP = initDim(B_classLit, $intern_30, 0, 2768, 7, 1);\n PermInvEdgeSym = initDim(C_classLit, $intern_26, 0, 2768, 7, 1);\n MPermInv = initDim(B_classLit, $intern_30, 0, 24, 7, 1);\n FlipR2S = initDim(C_classLit, $intern_26, 0, 2048, 7, 1);\n TwistR2S = initDim(C_classLit, $intern_26, 0, 2187, 7, 1);\n EPermR2S = initDim(C_classLit, $intern_26, 0, 40320, 7, 1);\n FlipS2RF = initDim(C_classLit, $intern_26, 0, 2688, 7, 1);\n urf1 = new CubieCube_0(2531, 1373, 67026819, 1367);\n urf2 = new CubieCube_0(2089, 1906, 322752913, 2040);\n urfMove = initValues(getClassLiteralForArray(\n B_classLit,\n 2,\n ), $intern_3, 10, 0, [\n initValues(getClassLiteralForArray(B_classLit, 1), $intern_30, 0, 7, [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,\n ]),\n initValues(getClassLiteralForArray(B_classLit, 1), $intern_30, 0, 7, [\n 6, 7, 8, 0, 1, 2, 3, 4, 5, 15, 16, 17, 9, 10, 11, 12, 13, 14,\n ]),\n initValues(getClassLiteralForArray(B_classLit, 1), $intern_30, 0, 7, [\n 3, 4, 5, 6, 7, 8, 0, 1, 2, 12, 13, 14, 15, 16, 17, 9, 10, 11,\n ]),\n initValues(getClassLiteralForArray(B_classLit, 1), $intern_30, 0, 7, [\n 2, 1, 0, 5, 4, 3, 8, 7, 6, 11, 10, 9, 14, 13, 12, 17, 16, 15,\n ]),\n initValues(getClassLiteralForArray(B_classLit, 1), $intern_30, 0, 7, [\n 8, 7, 6, 2, 1, 0, 5, 4, 3, 17, 16, 15, 11, 10, 9, 14, 13, 12,\n ]),\n initValues(getClassLiteralForArray(B_classLit, 1), $intern_30, 0, 7, [\n 5, 4, 3, 8, 7, 6, 2, 1, 0, 14, 13, 12, 17, 16, 15, 11, 10, 9,\n ]),\n ]);\n initMove();\n initSym();\n}\n\nfunction $$init(this$static) {\n this$static.ca = initValues(getClassLiteralForArray(\n B_classLit,\n 1,\n ), $intern_30, 0, 7, [0, 1, 2, 3, 4, 5, 6, 7]);\n this$static.ea = initValues(getClassLiteralForArray(\n B_classLit,\n 1,\n ), $intern_30, 0, 7, [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22]);\n}\n\nfunction $URFConjugate(this$static) {\n !this$static.temps && (this$static.temps = new CubieCube());\n CornMult(urf2, this$static, this$static.temps);\n CornMult(this$static.temps, urf1, this$static);\n EdgeMult(urf2, this$static, this$static.temps);\n EdgeMult(this$static.temps, urf1, this$static);\n}\n\nfunction $copy(this$static, c) {\n var i;\n var i0;\n for (i0 = 0; i0 < 8; i0++) {\n this$static.ca[i0] = c.ca[i0];\n }\n for (i = 0; i < 12; i++) {\n this$static.ea[i] = c.ea[i];\n }\n}\n\nfunction $getCPermSym(this$static) {\n return ESym2CSym(EPermR2S[getNPerm(this$static.ca, 8, false)]);\n}\n\nfunction $getEPermSym(this$static) {\n return EPermR2S[getNPerm(this$static.ea, 8, true)];\n}\n\nfunction $getFlip(this$static) {\n var i;\n var idx;\n idx = 0;\n for (i = 0; i < 11; i++) {\n idx = (idx << 1) | (this$static.ea[i] & 1);\n }\n return idx;\n}\n\nfunction $getTwist(this$static) {\n var i;\n var idx;\n idx = 0;\n for (i = 0; i < 7; i++) {\n idx += (idx << 1) + (this$static.ca[i] >> 3);\n }\n return idx;\n}\n\nfunction $invCubieCube(this$static) {\n var corn;\n var edge;\n !this$static.temps && (this$static.temps = new CubieCube());\n for (edge = 0; edge < 12; edge++) {\n this$static.temps.ea[this$static.ea[edge] >> 1] =\n (((edge << 1) | (this$static.ea[edge] & 1)) << 24) >> 24;\n }\n for (corn = 0; corn < 8; corn++) {\n this$static.temps.ca[this$static.ca[corn] & 7] =\n ((corn | ((32 >> (this$static.ca[corn] >> 3)) & 24)) << 24) >> 24;\n }\n $copy(this$static, this$static.temps);\n}\n\nfunction $selfSymmetry(this$static) {\n var c;\n var cperm;\n var cpermx;\n var d;\n var i;\n var sym;\n var urfInv;\n c = new CubieCube_1(this$static);\n d = new CubieCube();\n cperm = ESym2CSym(EPermR2S[getNPerm(c.ca, 8, false)]) >> 4;\n sym = { l: 0, m: 0, h: 0 };\n for (urfInv = 0; urfInv < 6; urfInv++) {\n cpermx = ESym2CSym(EPermR2S[getNPerm(c.ca, 8, false)]) >> 4;\n if (cperm === cpermx) {\n for (i = 0; i < 16; i++) {\n CornConjugate(c, SymMultInv[0][i], d);\n if (equals_7(d.ca, this$static.ca)) {\n EdgeConjugate(c, SymMultInv[0][i], d);\n equals_7(d.ea, this$static.ea) &&\n (sym = or(\n sym,\n shl(\n { l: 1, m: 0, h: 0 },\n ((urfInv << 4) | i) < 48 ? (urfInv << 4) | i : 48,\n ),\n ));\n }\n }\n }\n $URFConjugate(c);\n urfInv % 3 === 2 && $invCubieCube(c);\n }\n return sym;\n}\n\nfunction $setCPerm(this$static, idx) {\n setNPerm(this$static.ca, idx, 8, false);\n}\n\nfunction $setEPerm(this$static, idx) {\n setNPerm(this$static.ea, idx, 8, true);\n}\n\nfunction $setFlip(this$static, idx) {\n var i;\n var parity;\n var val;\n parity = 0;\n for (i = 10; i >= 0; --i, idx >>= 1) {\n parity ^= val = idx & 1;\n this$static.ea[i] = (((this$static.ea[i] & -2) | val) << 24) >> 24;\n }\n this$static.ea[11] = (((this$static.ea[11] & -2) | parity) << 24) >> 24;\n}\n\nfunction $setTwist(this$static, idx) {\n var i;\n var twst;\n var val;\n twst = 15;\n for (i = 6; i >= 0; --i, idx = ~~(idx / 3)) {\n twst -= val = idx % 3;\n this$static.ca[i] = (((this$static.ca[i] & 7) | (val << 3)) << 24) >> 24;\n }\n this$static.ca[7] =\n (((this$static.ca[7] & 7) | ((twst % 3) << 3)) << 24) >> 24;\n}\n\nfunction $verify(this$static) {\n var c;\n var cornMask;\n var e;\n var edgeMask;\n var sum;\n sum = 0;\n edgeMask = 0;\n for (e = 0; e < 12; e++) {\n edgeMask |= 1 << (this$static.ea[e] >> 1);\n sum ^= this$static.ea[e] & 1;\n }\n if (edgeMask !== 4095) {\n return -2;\n }\n if (sum !== 0) {\n return -3;\n }\n cornMask = 0;\n sum = 0;\n for (c = 0; c < 8; c++) {\n cornMask |= 1 << (this$static.ca[c] & 7);\n sum += this$static.ca[c] >> 3;\n }\n if (cornMask !== 255) {\n return -4;\n }\n if (sum % 3 !== 0) {\n return -5;\n }\n if (\n (getNParity(getNPerm(this$static.ea, 12, true), 12) ^\n getNParity(getNPerm(this$static.ca, 8, false), 8)) !==\n 0\n ) {\n return -6;\n }\n return 0;\n}\n\nfunction CornConjugate(a, idx, b) {\n $clinit_CubieCube();\n var corn;\n var ori;\n var oriA;\n var oriB;\n var s;\n var sinv;\n sinv = CubeSym[SymMultInv[0][idx]];\n s = CubeSym[idx];\n for (corn = 0; corn < 8; corn++) {\n oriA = sinv.ca[a.ca[s.ca[corn] & 7] & 7] >> 3;\n oriB = a.ca[s.ca[corn] & 7] >> 3;\n ori = oriA < 3 ? oriB : (3 - oriB) % 3;\n b.ca[corn] =\n (((sinv.ca[a.ca[s.ca[corn] & 7] & 7] & 7) | (ori << 3)) << 24) >> 24;\n }\n}\n\nfunction CornMult(a, b, prod) {\n $clinit_CubieCube();\n var corn;\n var oriA;\n var oriB;\n for (corn = 0; corn < 8; corn++) {\n oriA = a.ca[b.ca[corn] & 7] >> 3;\n oriB = b.ca[corn] >> 3;\n prod.ca[corn] =\n (((a.ca[b.ca[corn] & 7] & 7) | (((oriA + oriB) % 3) << 3)) << 24) >> 24;\n }\n}\n\nfunction CornMultFull(a, b, prod) {\n var corn;\n var ori;\n var oriA;\n var oriB;\n for (corn = 0; corn < 8; corn++) {\n oriA = a.ca[b.ca[corn] & 7] >> 3;\n oriB = b.ca[corn] >> 3;\n ori = oriA + (oriA < 3 ? oriB : 6 - oriB);\n ori = (ori % 3) + (oriA < 3 === oriB < 3 ? 0 : 3);\n prod.ca[corn] = (((a.ca[b.ca[corn] & 7] & 7) | (ori << 3)) << 24) >> 24;\n }\n}\n\nfunction CubieCube() {\n $clinit_CubieCube();\n $$init(this);\n}\n\nfunction CubieCube_0(cperm, twist, eperm, flip) {\n $$init(this);\n setNPerm(this.ca, cperm, 8, false);\n $setTwist(this, twist);\n setNPerm(this.ea, eperm, 12, true);\n $setFlip(this, flip);\n}\n\nfunction CubieCube_1(c) {\n $$init(this);\n $copy(this, c);\n}\n\nfunction ESym2CSym(idx) {\n $clinit_CubieCube();\n return idx ^ (($intern_28 >> ((idx & 15) << 1)) & 3);\n}\n\nfunction EdgeConjugate(a, idx, b) {\n $clinit_CubieCube();\n var ed;\n var s;\n var sinv;\n sinv = CubeSym[SymMultInv[0][idx]];\n s = CubeSym[idx];\n for (ed = 0; ed < 12; ed++) {\n b.ea[ed] =\n ((sinv.ea[a.ea[s.ea[ed] >> 1] >> 1] ^\n (a.ea[s.ea[ed] >> 1] & 1) ^\n (s.ea[ed] & 1)) <<\n 24) >>\n 24;\n }\n}\n\nfunction EdgeMult(a, b, prod) {\n $clinit_CubieCube();\n var ed;\n for (ed = 0; ed < 12; ed++) {\n prod.ea[ed] = ((a.ea[b.ea[ed] >> 1] ^ (b.ea[ed] & 1)) << 24) >> 24;\n }\n}\n\nfunction getPermSymInv(idx, sym, isCorner) {\n $clinit_CubieCube();\n var idxi;\n idxi = PermInvEdgeSym[idx];\n isCorner && (idxi = idxi ^ (($intern_28 >> ((idxi & 15) << 1)) & 3));\n return (idxi & 65520) | SymMult[idxi & 15][sym];\n}\n\nfunction getSkipMoves() {\n $clinit_CubieCube();\n // var i, ret;\n // ret = 0;\n // for (i = 1; neq((ssym = shr(ssym, 1)), { l: 0, m: 0, h: 0 }); i++) {\n // eq(and(ssym, { l: 1, m: 0, h: 0 }), { l: 1, m: 0, h: 0 }) &&\n // (ret |= firstMoveSym[i]);\n // }\n return 0;\n}\n\nfunction initMove() {\n var a;\n var p;\n moveCube[0] = new CubieCube_0(15120, 0, 119750400, 0);\n moveCube[3] = new CubieCube_0(21021, 1494, 323403417, 0);\n moveCube[6] = new CubieCube_0(8064, 1236, 29441808, 550);\n moveCube[9] = new CubieCube_0(9, 0, 5880, 0);\n moveCube[12] = new CubieCube_0(1230, 412, 2949660, 0);\n moveCube[15] = new CubieCube_0(224, 137, 328552, 137);\n for (a = 0; a < 18; a += 3) {\n for (p = 0; p < 2; p++) {\n moveCube[a + p + 1] = new CubieCube();\n EdgeMult(moveCube[a + p], moveCube[a], moveCube[a + p + 1]);\n CornMult(moveCube[a + p], moveCube[a], moveCube[a + p + 1]);\n }\n }\n}\n\nfunction initPermSym2Raw() {\n $clinit_CubieCube();\n var cc;\n var i;\n var i0;\n initSym2Raw(\n 40320,\n EPermS2R,\n EPermR2S,\n (SymStatePerm = initDim(C_classLit, $intern_26, 0, 2768, 7, 1)),\n 2,\n );\n cc = new CubieCube();\n for (i0 = 0; i0 < 2768; i0++) {\n $setEPerm(cc, EPermS2R[i0]);\n Perm2CombP[i0] =\n ((getComb(cc.ea, 0, true) + getNParity(EPermS2R[i0], 8) * 70) << 24) >>\n 24;\n $invCubieCube(cc);\n PermInvEdgeSym[i0] = EPermR2S[getNPerm(cc.ea, 8, true)];\n }\n for (i = 0; i < 24; i++) {\n setNPerm(cc.ea, i, 12, true);\n $invCubieCube(cc);\n MPermInv[i] = ((getNPerm(cc.ea, 12, true) % 24) << 24) >> 24;\n }\n}\n\nfunction initSym() {\n var c;\n var d;\n var f2;\n var i;\n var i0;\n var i1;\n var i2;\n var j;\n var j0;\n var j1;\n var k;\n var lr2;\n var m;\n var s;\n var t;\n var u4;\n c = new CubieCube();\n d = new CubieCube();\n f2 = new CubieCube_0(28783, 0, 259268407, 0);\n u4 = new CubieCube_0(15138, 0, 119765538, 7);\n lr2 = new CubieCube_0(5167, 0, 83473207, 0);\n for (i0 = 0; i0 < 8; i0++) {\n lr2.ca[i0] = narrow_byte(lr2.ca[i0] | 24);\n }\n for (i1 = 0; i1 < 16; i1++) {\n CubeSym[i1] = new CubieCube_1(c);\n CornMultFull(c, u4, d);\n EdgeMult(c, u4, d);\n t = d;\n d = c;\n c = t;\n if (i1 % 4 === 3) {\n CornMultFull(t, lr2, d);\n EdgeMult(t, lr2, d);\n t = d;\n d = c;\n c = t;\n }\n if (i1 % 8 === 7) {\n CornMultFull(t, f2, d);\n EdgeMult(t, f2, d);\n t = d;\n d = c;\n c = t;\n }\n }\n for (i2 = 0; i2 < 16; i2++) {\n for (j0 = 0; j0 < 16; j0++) {\n CornMultFull(CubeSym[i2], CubeSym[j0], c);\n for (k = 0; k < 16; k++) {\n if (equals_7(CubeSym[k].ca, c.ca)) {\n SymMult[i2][j0] = k;\n SymMultInv[k][j0] = i2;\n break;\n }\n }\n }\n }\n for (j1 = 0; j1 < 18; j1++) {\n for (s = 0; s < 16; s++) {\n CornConjugate(moveCube[j1], SymMultInv[0][s], c);\n for (m = 0; m < 18; m++) {\n if (equals_7(moveCube[m].ca, c.ca)) {\n SymMove_0[s][j1] = m;\n SymMoveUD[s][($clinit_Util(), std2ud)[j1]] = std2ud[m];\n break;\n }\n }\n s % 2 === 0 && (Sym8Move[(j1 << 3) | (s >> 1)] = SymMove_0[s][j1]);\n }\n }\n for (i = 0; i < 18; i++) {\n moveCubeSym[i] = $selfSymmetry(moveCube[i]);\n j = i;\n for (s = 0; s < 48; s++) {\n SymMove_0[s % 16][j] < i && (firstMoveSym[s] |= 1 << i);\n s % 16 === 15 && (j = urfMove[2][j]);\n }\n }\n}\n\nfunction initSym2Raw(N_RAW, Sym2Raw, Raw2Sym, SymState, coord) {\n $clinit_CubieCube();\n var c;\n var count;\n var d;\n var i;\n var idx;\n var isEdge;\n var s;\n var symIdx;\n var sym_inc;\n c = new CubieCube();\n d = new CubieCube();\n count = 0;\n idx = 0;\n sym_inc = coord >= 2 ? 1 : 2;\n isEdge = coord !== 1;\n for (i = 0; i < N_RAW; i++) {\n if (Raw2Sym[i] !== 0) {\n continue;\n }\n switch (coord) {\n case 0: {\n $setFlip(c, i);\n break;\n }\n case 1: {\n $setTwist(c, i);\n break;\n }\n case 2:\n setNPerm(c.ea, i, 8, true);\n }\n for (s = 0; s < 16; s += sym_inc) {\n isEdge ? EdgeConjugate(c, s, d) : CornConjugate(c, s, d);\n switch (coord) {\n case 0: {\n idx = $getFlip(d);\n break;\n }\n case 1: {\n idx = $getTwist(d);\n break;\n }\n case 2:\n idx = getNPerm(d.ea, 8, true);\n }\n coord === 0 && (FlipS2RF[(count << 3) | (s >> 1)] = idx & $intern_20);\n idx === i &&\n (SymState[count] =\n (SymState[count] | (1 << ~~(s / sym_inc))) & $intern_20);\n symIdx = ~~(((count << 4) | s) / sym_inc);\n Raw2Sym[idx] = symIdx & $intern_20;\n }\n Sym2Raw[count++] = i & $intern_20;\n }\n return count;\n}\n\nvar CubeSym;\nvar EPermR2S;\nvar EPermS2R;\nvar FlipR2S;\nvar FlipS2R;\nvar FlipS2RF;\nvar MPermInv;\nvar Perm2CombP;\nvar PermInvEdgeSym;\nvar Sym8Move;\nvar SymMove_0;\nvar SymMoveUD;\nvar SymMult;\nvar SymMultInv;\nvar SymStateFlip;\nvar SymStatePerm;\nvar SymStateTwist;\nvar TwistR2S;\nvar TwistS2R;\nvar firstMoveSym;\nvar moveCube;\nvar moveCubeSym;\nvar urf1;\nvar urf2;\nvar urfMove;\nvar Lorg_cubing_min2phase_client_CubieCube_2_classLit = createForClass(\n \"org.cubing.min2phase.client\",\n \"CubieCube\",\n 7,\n);\n\nfunction $initPhase2(\n this$static,\n p2corn,\n p2csym,\n p2edge,\n p2esym,\n p2mid,\n edgei,\n corni,\n) {\n var depth2;\n var i;\n var i0;\n var prun;\n var ret;\n prun = max_0(\n getPruning(\n ($clinit_CoordCube(), EPermCCombPPrun),\n (edgei >> 4) * 140 +\n CCombPConj[($clinit_CubieCube(), Perm2CombP)[corni >> 4] & 255][\n SymMultInv[edgei & 15][corni & 15]\n ],\n ),\n max_0(\n getPruning(\n EPermCCombPPrun,\n p2edge * 140 +\n CCombPConj[Perm2CombP[p2corn] & 255][SymMultInv[p2esym][p2csym]],\n ),\n getPruning(MCPermPrun, p2corn * 24 + MPermConj[p2mid][p2csym]),\n ),\n );\n if (prun > this$static.maxDep2) {\n return prun - this$static.maxDep2;\n }\n for (depth2 = this$static.maxDep2; depth2 >= prun; depth2--) {\n ret = $phase2(\n this$static,\n p2edge,\n p2esym,\n p2corn,\n p2csym,\n p2mid,\n depth2,\n this$static.depth1,\n 10,\n );\n if (ret < 0) {\n break;\n }\n depth2 -= ret;\n this$static.solLen = 0;\n this$static.solution = new Util$Solution();\n $setArgs(\n this$static.solution,\n this$static.verbose,\n this$static.urfIdx,\n this$static.depth1,\n );\n for (i0 = 0; i0 < this$static.depth1 + depth2; i0++) {\n $appendSolMove(this$static.solution, this$static.move[i0]);\n }\n for (i = this$static.preMoveLen - 1; i >= 0; i--) {\n $appendSolMove(this$static.solution, this$static.preMoves[i]);\n }\n this$static.solLen = this$static.solution.length_0;\n }\n if (depth2 !== this$static.maxDep2) {\n this$static.maxDep2 = min_0(\n MAX_DEPTH2,\n this$static.solLen - this$static.length1 - 1,\n );\n return gte(this$static.probe, this$static.probeMin) ? 0 : 1;\n }\n return 1;\n}\n\nfunction $initPhase2Pre(this$static) {\n var corni;\n var edgei;\n var i;\n var lastMove;\n var lastPre;\n var m;\n var p2corn;\n var p2csym;\n var p2edge;\n var p2esym;\n var p2mid;\n var p2switch;\n var p2switchMask;\n var p2switchMax;\n var ret;\n this$static.isRec = false;\n if (\n gte(\n this$static.probe,\n !this$static.solution ? this$static.probeMax : this$static.probeMin,\n )\n ) {\n return 0;\n }\n this$static.probe = add_1(this$static.probe, { l: 1, m: 0, h: 0 });\n for (i = this$static.valid1; i < this$static.depth1; i++) {\n CornMult(\n this$static.phase1Cubie[i],\n ($clinit_CubieCube(), moveCube)[this$static.move[i]],\n this$static.phase1Cubie[i + 1],\n );\n EdgeMult(\n this$static.phase1Cubie[i],\n moveCube[this$static.move[i]],\n this$static.phase1Cubie[i + 1],\n );\n }\n this$static.valid1 = this$static.depth1;\n p2corn = $getCPermSym(this$static.phase1Cubie[this$static.depth1]);\n p2csym = p2corn & 15;\n p2corn >>= 4;\n p2edge = $getEPermSym(this$static.phase1Cubie[this$static.depth1]);\n p2esym = p2edge & 15;\n p2edge >>= 4;\n p2mid =\n getNPerm(this$static.phase1Cubie[this$static.depth1].ea, 12, true) % 24;\n edgei = getPermSymInv(p2edge, p2esym, false);\n corni = getPermSymInv(p2corn, p2csym, true);\n lastMove =\n this$static.depth1 === 0 ? -1 : this$static.move[this$static.depth1 - 1];\n lastPre =\n this$static.preMoveLen === 0\n ? -1\n : this$static.preMoves[this$static.preMoveLen - 1];\n ret = 0;\n p2switchMax =\n (this$static.preMoveLen === 0 ? 1 : 2) * (this$static.depth1 === 0 ? 1 : 2);\n for (\n p2switch = 0, p2switchMask = (1 << p2switchMax) - 1;\n p2switch < p2switchMax;\n p2switch++\n ) {\n if (((p2switchMask >> p2switch) & 1) !== 0) {\n p2switchMask &= ~(1 << p2switch);\n ret = $initPhase2(\n this$static,\n p2corn,\n p2csym,\n p2edge,\n p2esym,\n p2mid,\n edgei,\n corni,\n );\n if (ret === 0 || ret > 2) {\n break;\n } else {\n ret === 2 && (p2switchMask &= 4 << p2switch);\n }\n }\n if (p2switchMask === 0) {\n break;\n }\n if ((p2switch & 1) === 0 && this$static.depth1 > 0) {\n m = ($clinit_Util(), std2ud)[~~(lastMove / 3) * 3 + 1];\n this$static.move[this$static.depth1 - 1] =\n ud2std[m] * 2 - this$static.move[this$static.depth1 - 1];\n p2mid = ($clinit_CoordCube(), MPermMove)[p2mid][m];\n p2corn = CPermMove[p2corn][($clinit_CubieCube(), SymMoveUD)[p2csym][m]];\n p2csym = SymMult[p2corn & 15][p2csym];\n p2corn >>= 4;\n p2edge = EPermMove[p2edge][SymMoveUD[p2esym][m]];\n p2esym = SymMult[p2edge & 15][p2esym];\n p2edge >>= 4;\n corni = getPermSymInv(p2corn, p2csym, true);\n edgei = getPermSymInv(p2edge, p2esym, false);\n } else if (this$static.preMoveLen > 0) {\n m = ($clinit_Util(), std2ud)[~~(lastPre / 3) * 3 + 1];\n this$static.preMoves[this$static.preMoveLen - 1] =\n ud2std[m] * 2 - this$static.preMoves[this$static.preMoveLen - 1];\n p2mid = ($clinit_CubieCube(), MPermInv)[\n ($clinit_CoordCube(), MPermMove)[MPermInv[p2mid]][m]\n ];\n p2corn = CPermMove[corni >> 4][SymMoveUD[corni & 15][m]];\n corni = (p2corn & -16) | SymMult[p2corn & 15][corni & 15];\n p2corn = getPermSymInv(corni >> 4, corni & 15, true);\n p2csym = p2corn & 15;\n p2corn >>= 4;\n p2edge = EPermMove[edgei >> 4][SymMoveUD[edgei & 15][m]];\n edgei = (p2edge & -16) | SymMult[p2edge & 15][edgei & 15];\n p2edge = getPermSymInv(edgei >> 4, edgei & 15, false);\n p2esym = p2edge & 15;\n p2edge >>= 4;\n }\n }\n this$static.depth1 > 0 &&\n (this$static.move[this$static.depth1 - 1] = lastMove);\n this$static.preMoveLen > 0 &&\n (this$static.preMoves[this$static.preMoveLen - 1] = lastPre);\n return ret === 0 ? 0 : 2;\n}\n\nfunction $initSearch(this$static) {\n var i;\n this$static.conjMask = 0;\n this$static.selfSym = $selfSymmetry(this$static.cc);\n this$static.conjMask |= neq(and(shr(this$static.selfSym, 16), {\n l: $intern_20,\n m: 0,\n h: 0,\n }), { l: 0, m: 0, h: 0 })\n ? 18\n : 0;\n this$static.conjMask |= neq(and(shr(this$static.selfSym, 32), {\n l: $intern_20,\n m: 0,\n h: 0,\n }), { l: 0, m: 0, h: 0 })\n ? 36\n : 0;\n this$static.conjMask |= neq(and(shr(this$static.selfSym, 48), {\n l: $intern_20,\n m: 0,\n h: 0,\n }), { l: 0, m: 0, h: 0 })\n ? 56\n : 0;\n this$static.selfSym = and(this$static.selfSym, {\n l: $intern_9,\n m: $intern_9,\n h: 15,\n });\n this$static.maxPreMoves = this$static.conjMask > 7 ? 0 : 20;\n for (i = 0; i < 6; i++) {\n $copy(this$static.urfCubieCube[i], this$static.cc);\n $setWithPrun(this$static.urfCoordCube[i], this$static.urfCubieCube[i], 20);\n $URFConjugate(this$static.cc);\n i % 3 === 2 && $invCubieCube(this$static.cc);\n }\n}\n\nfunction $phase1(this$static, node, ssym, maxl, lm) {\n var axis_0;\n var m;\n var power;\n var prun;\n var ret;\n var skipMoves;\n if (node.prun === 0 && maxl < 5) {\n if (this$static.allowShorter || maxl === 0) {\n this$static.depth1 -= maxl;\n ret = $initPhase2Pre(this$static);\n this$static.depth1 += maxl;\n return ret;\n } else {\n return 1;\n }\n }\n skipMoves = getSkipMoves(fromInt(ssym));\n for (axis_0 = 0; axis_0 < 18; axis_0 += 3) {\n if (axis_0 === lm || axis_0 === lm - 9) {\n continue;\n }\n for (power = 0; power < 3; power++) {\n m = axis_0 + power;\n if (\n (this$static.isRec &&\n m !== this$static.move[this$static.depth1 - maxl]) ||\n (skipMoves !== 0 && (skipMoves & (1 << m)) !== 0)\n ) {\n continue;\n }\n prun = $doMovePrun(this$static.nodeUD[maxl], node, m);\n if (prun > maxl) {\n break;\n } else if (prun === maxl) {\n continue;\n }\n prun = $doMovePrunConj(this$static.nodeUD[maxl], node, m);\n if (prun > maxl) {\n break;\n } else if (prun === maxl) {\n continue;\n }\n this$static.move[this$static.depth1 - maxl] = m;\n this$static.valid1 = min_0(this$static.valid1, this$static.depth1 - maxl);\n ret = $phase1(\n this$static,\n this$static.nodeUD[maxl],\n ssym & toInt(($clinit_CubieCube(), moveCubeSym)[m]),\n maxl - 1,\n axis_0,\n );\n if (ret === 0) {\n return 0;\n } else if (ret >= 2) {\n break;\n }\n }\n }\n return 1;\n}\n\nfunction $phase1PreMoves(this$static, maxl, lm, cc, ssym) {\n var m;\n var ret;\n var skipMoves;\n this$static.preMoveLen = this$static.maxPreMoves - maxl;\n if (\n this$static.isRec\n ? this$static.depth1 === this$static.length1 - this$static.preMoveLen\n : this$static.preMoveLen === 0 || ((225207 >> lm) & 1) === 0\n ) {\n this$static.depth1 = this$static.length1 - this$static.preMoveLen;\n this$static.phase1Cubie[0] = cc;\n this$static.allowShorter =\n this$static.depth1 === MIN_P1LENGTH_PRE && this$static.preMoveLen !== 0;\n if (\n $setWithPrun(\n this$static.nodeUD[this$static.depth1 + 1],\n cc,\n this$static.depth1,\n ) &&\n $phase1(\n this$static,\n this$static.nodeUD[this$static.depth1 + 1],\n ssym,\n this$static.depth1,\n -1,\n ) === 0\n ) {\n return 0;\n }\n }\n if (\n maxl === 0 ||\n this$static.preMoveLen + MIN_P1LENGTH_PRE >= this$static.length1\n ) {\n return 1;\n }\n skipMoves = getSkipMoves(fromInt(ssym));\n (maxl === 1 ||\n this$static.preMoveLen + 1 + MIN_P1LENGTH_PRE >= this$static.length1) &&\n (skipMoves |= 225207);\n lm = ~~(lm / 3) * 3;\n for (m = 0; m < 18; m++) {\n if (m === lm || m === lm - 9 || m === lm + 9) {\n m += 2;\n continue;\n }\n if (\n (this$static.isRec &&\n m !== this$static.preMoves[this$static.maxPreMoves - maxl]) ||\n (skipMoves & (1 << m)) !== 0\n ) {\n continue;\n }\n CornMult(\n ($clinit_CubieCube(), moveCube)[m],\n cc,\n this$static.preMoveCubes[maxl],\n );\n EdgeMult(moveCube[m], cc, this$static.preMoveCubes[maxl]);\n this$static.preMoves[this$static.maxPreMoves - maxl] = m;\n ret = $phase1PreMoves(\n this$static,\n maxl - 1,\n m,\n this$static.preMoveCubes[maxl],\n ssym & toInt(moveCubeSym[m]),\n );\n if (ret === 0) {\n return 0;\n }\n }\n return 1;\n}\n\nfunction $phase2(this$static, edge, esym, corn, csym, mid, maxl, depth, lm) {\n var corni;\n var cornx;\n var csymx;\n var edgei;\n var edgex;\n var esymx;\n var m;\n var midx;\n var moveMask;\n var prun;\n var ret;\n if (edge === 0 && corn === 0 && mid === 0) {\n return maxl;\n }\n moveMask = ($clinit_Util(), ckmv2bit)[lm];\n for (m = 0; m < 10; m++) {\n if (((moveMask >> m) & 1) !== 0) {\n m += (66 >> m) & 3;\n continue;\n }\n midx = ($clinit_CoordCube(), MPermMove)[mid][m];\n cornx = CPermMove[corn][($clinit_CubieCube(), SymMoveUD)[csym][m]];\n csymx = SymMult[cornx & 15][csym];\n cornx >>= 4;\n edgex = EPermMove[edge][SymMoveUD[esym][m]];\n esymx = SymMult[edgex & 15][esym];\n edgex >>= 4;\n edgei = getPermSymInv(edgex, esymx, false);\n corni = getPermSymInv(cornx, csymx, true);\n prun = getPruning(\n EPermCCombPPrun,\n (edgei >> 4) * 140 +\n CCombPConj[Perm2CombP[corni >> 4] & 255][\n SymMultInv[edgei & 15][corni & 15]\n ],\n );\n if (prun > maxl + 1) {\n return maxl - prun + 1;\n } else if (prun >= maxl) {\n m += (66 >> m) & 3 & (maxl - prun);\n continue;\n }\n prun = max_0(\n getPruning(MCPermPrun, cornx * 24 + MPermConj[midx][csymx]),\n getPruning(\n EPermCCombPPrun,\n edgex * 140 +\n CCombPConj[Perm2CombP[cornx] & 255][SymMultInv[esymx][csymx]],\n ),\n );\n if (prun >= maxl) {\n m += (66 >> m) & 3 & (maxl - prun);\n continue;\n }\n ret = $phase2(\n this$static,\n edgex,\n esymx,\n cornx,\n csymx,\n midx,\n maxl - 1,\n depth + 1,\n m,\n );\n if (ret >= 0) {\n this$static.move[depth] = ud2std[m];\n return ret;\n }\n if (ret < -2) {\n break;\n }\n ret < -1 && (m += (66 >> m) & 3);\n }\n return -1;\n}\n\nfunction $search(this$static) {\n for (\n this$static.length1 = this$static.isRec ? this$static.length1 : 0;\n this$static.length1 < this$static.solLen;\n this$static.length1++\n ) {\n this$static.maxDep2 = min_0(\n MAX_DEPTH2,\n this$static.solLen - this$static.length1 - 1,\n );\n for (\n this$static.urfIdx = this$static.isRec ? this$static.urfIdx : 0;\n this$static.urfIdx < 6;\n this$static.urfIdx++\n ) {\n if ((this$static.conjMask & (1 << this$static.urfIdx)) !== 0) {\n continue;\n }\n if (\n $phase1PreMoves(\n this$static,\n this$static.maxPreMoves,\n -30,\n this$static.urfCubieCube[this$static.urfIdx],\n toInt(and(this$static.selfSym, { l: $intern_20, m: 0, h: 0 })),\n ) === 0\n ) {\n return !this$static.solution\n ? \"Error 8\"\n : $toString_2(this$static.solution);\n }\n }\n }\n return !this$static.solution ? \"Error 7\" : $toString_2(this$static.solution);\n}\n\nfunction $solution(this$static, facelets) {\n var check;\n check = $verify_0(this$static, facelets);\n if (check !== 0) {\n return `Error ${check < 0 ? -check : check}`;\n }\n this$static.solLen = 22;\n this$static.probe = { l: 0, m: 0, h: 0 };\n this$static.probeMax = { l: 3531008, m: 23, h: 0 };\n this$static.probeMin = { l: 0, m: 0, h: 0 };\n this$static.verbose = 0;\n this$static.solution = null;\n this$static.isRec = false;\n init_0(false);\n $initSearch(this$static);\n return $search(this$static);\n}\n\nfunction $verify_0(this$static, facelets) {\n var center;\n var count;\n var f;\n var i;\n count = 0;\n f = initDim(B_classLit, $intern_30, 0, 54, 7, 1);\n // try {\n center = _String(\n initValues(getClassLiteralForArray(C_classLit, 1), $intern_26, 0, 7, [\n facelets.charCodeAt(4),\n facelets.charCodeAt(13),\n facelets.charCodeAt(22),\n facelets.charCodeAt(31),\n facelets.charCodeAt(40),\n facelets.charCodeAt(49),\n ]),\n );\n for (i = 0; i < 54; i++) {\n f[i] =\n ($indexOf_0(center, fromCodePoint(facelets.charCodeAt(i))) << 24) >> 24;\n if (f[i] === -1) {\n return -1;\n }\n count += 1 << (f[i] << 2);\n }\n // } catch ($e0) {\n // $e0 = wrap($e0);\n // if (instanceOf($e0, 9)) {\n // return -1;\n // } else throw unwrap($e0);\n // }\n if (count !== 10066329) {\n return -1;\n }\n toCubieCube(f, this$static.cc);\n return $verify(this$static.cc);\n}\n\nfunction Search() {\n var i;\n var i0;\n var i1;\n this.move = initDim(I_classLit, $intern_27, 0, 31, 7, 1);\n this.nodeUD = initDim(\n Lorg_cubing_min2phase_client_CoordCube_2_classLit,\n $intern_3,\n 31,\n 21,\n 0,\n 1,\n );\n this.nodeRL = initDim(\n Lorg_cubing_min2phase_client_CoordCube_2_classLit,\n $intern_3,\n 31,\n 21,\n 0,\n 1,\n );\n this.nodeFB = initDim(\n Lorg_cubing_min2phase_client_CoordCube_2_classLit,\n $intern_3,\n 31,\n 21,\n 0,\n 1,\n );\n this.cc = new CubieCube();\n this.urfCubieCube = initDim(\n Lorg_cubing_min2phase_client_CubieCube_2_classLit,\n $intern_3,\n 7,\n 6,\n 0,\n 1,\n );\n this.urfCoordCube = initDim(\n Lorg_cubing_min2phase_client_CoordCube_2_classLit,\n $intern_3,\n 31,\n 6,\n 0,\n 1,\n );\n this.phase1Cubie = initDim(\n Lorg_cubing_min2phase_client_CubieCube_2_classLit,\n $intern_3,\n 7,\n 21,\n 0,\n 1,\n );\n this.preMoveCubes = initDim(\n Lorg_cubing_min2phase_client_CubieCube_2_classLit,\n $intern_3,\n 7,\n 21,\n 0,\n 1,\n );\n this.preMoves = initDim(I_classLit, $intern_27, 0, 20, 7, 1);\n for (i0 = 0; i0 < 21; i0++) {\n this.nodeUD[i0] = new CoordCube();\n this.nodeRL[i0] = new CoordCube();\n this.nodeFB[i0] = new CoordCube();\n this.phase1Cubie[i0] = new CubieCube();\n }\n for (i1 = 0; i1 < 6; i1++) {\n this.urfCubieCube[i1] = new CubieCube();\n this.urfCoordCube[i1] = new CoordCube();\n }\n for (i = 0; i < 20; i++) {\n this.preMoveCubes[i + 1] = new CubieCube();\n }\n}\n\ndefineClass(72, 1, {}, Search);\n_.allowShorter = false;\n_.conjMask = 0;\n_.depth1 = 0;\n_.isRec = false;\n_.length1 = 0;\n_.maxDep2 = 0;\n_.maxPreMoves = 0;\n_.preMoveLen = 0;\n_.probe = { l: 0, m: 0, h: 0 };\n_.probeMax = { l: 0, m: 0, h: 0 };\n_.probeMin = { l: 0, m: 0, h: 0 };\n_.selfSym = { l: 0, m: 0, h: 0 };\n_.solLen = 0;\n_.urfIdx = 0;\n_.valid1 = 0;\n_.verbose = 0;\nvar MAX_DEPTH2 = 12;\nvar MIN_P1LENGTH_PRE = 7;\nlet $clinit_Util_ran = false;\nfunction $clinit_Util() {\n if ($clinit_Util_ran) {\n return;\n }\n $clinit_Util_ran = true;\n var i;\n var i0;\n var i1;\n var ix;\n var j;\n var jx;\n cornerFacelet = initValues(getClassLiteralForArray(\n B_classLit,\n 2,\n ), $intern_3, 10, 0, [\n initValues(getClassLiteralForArray(B_classLit, 1), $intern_30, 0, 7, [\n 8, 9, 20,\n ]),\n initValues(getClassLiteralForArray(B_classLit, 1), $intern_30, 0, 7, [\n 6, 18, 38,\n ]),\n initValues(getClassLiteralForArray(B_classLit, 1), $intern_30, 0, 7, [\n 0, 36, 47,\n ]),\n initValues(getClassLiteralForArray(B_classLit, 1), $intern_30, 0, 7, [\n 2, 45, 11,\n ]),\n initValues(getClassLiteralForArray(B_classLit, 1), $intern_30, 0, 7, [\n 29, 26, 15,\n ]),\n initValues(getClassLiteralForArray(B_classLit, 1), $intern_30, 0, 7, [\n 27, 44, 24,\n ]),\n initValues(getClassLiteralForArray(B_classLit, 1), $intern_30, 0, 7, [\n 33, 53, 42,\n ]),\n initValues(getClassLiteralForArray(B_classLit, 1), $intern_30, 0, 7, [\n 35, 17, 51,\n ]),\n ]);\n edgeFacelet = initValues(getClassLiteralForArray(\n B_classLit,\n 2,\n ), $intern_3, 10, 0, [\n initValues(getClassLiteralForArray(B_classLit, 1), $intern_30, 0, 7, [\n 5, 10,\n ]),\n initValues(getClassLiteralForArray(B_classLit, 1), $intern_30, 0, 7, [\n 7, 19,\n ]),\n initValues(getClassLiteralForArray(B_classLit, 1), $intern_30, 0, 7, [\n 3, 37,\n ]),\n initValues(getClassLiteralForArray(B_classLit, 1), $intern_30, 0, 7, [\n 1, 46,\n ]),\n initValues(getClassLiteralForArray(B_classLit, 1), $intern_30, 0, 7, [\n 32, 16,\n ]),\n initValues(getClassLiteralForArray(B_classLit, 1), $intern_30, 0, 7, [\n 28, 25,\n ]),\n initValues(getClassLiteralForArray(B_classLit, 1), $intern_30, 0, 7, [\n 30, 43,\n ]),\n initValues(getClassLiteralForArray(B_classLit, 1), $intern_30, 0, 7, [\n 34, 52,\n ]),\n initValues(getClassLiteralForArray(B_classLit, 1), $intern_30, 0, 7, [\n 23, 12,\n ]),\n initValues(getClassLiteralForArray(B_classLit, 1), $intern_30, 0, 7, [\n 21, 41,\n ]),\n initValues(getClassLiteralForArray(B_classLit, 1), $intern_30, 0, 7, [\n 50, 39,\n ]),\n initValues(getClassLiteralForArray(B_classLit, 1), $intern_30, 0, 7, [\n 48, 14,\n ]),\n ]);\n Cnk = initDims(I_classLit, [$intern_3, $intern_27], [17, 0], 7, [13, 13], 2);\n move2str = initValues(getClassLiteralForArray(\n Ljava_lang_String_2_classLit,\n 1,\n ), $intern_3, 2, 4, [\n \"U \",\n \"U2\",\n \"U'\",\n \"R \",\n \"R2\",\n \"R'\",\n \"F \",\n \"F2\",\n \"F'\",\n \"D \",\n \"D2\",\n \"D'\",\n \"L \",\n \"L2\",\n \"L'\",\n \"B \",\n \"B2\",\n \"B'\",\n ]);\n ud2std = initValues(getClassLiteralForArray(\n I_classLit,\n 1,\n ), $intern_27, 0, 7, [\n 0, 1, 2, 4, 7, 9, 10, 11, 13, 16, 3, 5, 6, 8, 12, 14, 15, 17,\n ]);\n std2ud = initDim(I_classLit, $intern_27, 0, 18, 7, 1);\n ckmv2bit = initDim(I_classLit, $intern_27, 0, 11, 7, 1);\n for (i0 = 0; i0 < 18; i0++) {\n std2ud[ud2std[i0]] = i0;\n }\n for (i1 = 0; i1 < 10; i1++) {\n ix = ~~(ud2std[i1] / 3);\n ckmv2bit[i1] = 0;\n for (j = 0; j < 10; j++) {\n jx = ~~(ud2std[j] / 3);\n ckmv2bit[i1] |=\n (ix === jx || (ix % 3 === jx % 3 && ix >= jx) ? 1 : 0) << j;\n }\n }\n ckmv2bit[10] = 0;\n for (i = 0; i < 13; i++) {\n Cnk[i][0] = Cnk[i][i] = 1;\n for (j = 1; j < i; j++) {\n Cnk[i][j] = Cnk[i - 1][j - 1] + Cnk[i - 1][j];\n }\n }\n}\n\nfunction getComb(arr, mask, isEdge) {\n $clinit_Util();\n var end;\n var i;\n var idxC;\n var perm;\n var r;\n end = arr.length - 1;\n idxC = 0;\n r = 4;\n for (i = end; i >= 0; i--) {\n perm = getVal(arr[i], isEdge);\n (perm & 12) === mask && (idxC += Cnk[i][r--]);\n }\n return idxC;\n}\n\nfunction getNParity(idx, n) {\n $clinit_Util();\n var i;\n var p;\n p = 0;\n for (i = n - 2; i >= 0; i--) {\n p ^= idx % (n - i);\n idx = ~~(idx / (n - i));\n }\n return p & 1;\n}\n\nfunction getNPerm(arr, n, isEdge) {\n $clinit_Util();\n var i;\n var idx;\n var v;\n var val;\n idx = 0;\n val = { l: 1323536, m: 2777561, h: 1043915 };\n for (i = 0; i < n - 1; i++) {\n v = getVal(arr[i], isEdge) << 2;\n idx = (n - i) * idx + toInt(and(shr(val, v), { l: 15, m: 0, h: 0 }));\n val = sub_0(val, shl({ l: 1118480, m: 279620, h: 69905 }, v));\n }\n return idx;\n}\n\nfunction getVal(val0, isEdge) {\n return isEdge ? val0 >> 1 : val0 & 7;\n}\n\nfunction setComb(arr, idxC, mask, isEdge) {\n $clinit_Util();\n var end;\n var fill;\n var i;\n var r;\n end = arr.length - 1;\n r = 4;\n fill = end;\n for (i = end; i >= 0; i--) {\n if (idxC >= Cnk[i][r]) {\n idxC -= Cnk[i][r--];\n arr[i] = setVal(arr[i], r | mask, isEdge);\n } else {\n (fill & 12) === mask && (fill -= 4);\n arr[i] = setVal(arr[i], fill--, isEdge);\n }\n }\n}\n\nfunction setNPerm(arr, idx, n, isEdge) {\n $clinit_Util();\n var extract;\n var i;\n var m;\n var p;\n var v;\n var val;\n val = { l: 1323536, m: 2777561, h: 1043915 };\n extract = { l: 0, m: 0, h: 0 };\n for (p = 2; p <= n; p++) {\n extract = or(shl(extract, 4), fromInt(idx % p));\n idx = ~~(idx / p);\n }\n for (i = 0; i < n - 1; i++) {\n v = (toInt(extract) & 15) << 2;\n extract = shr(extract, 4);\n arr[i] = setVal(\n arr[i],\n toInt(and(shr(val, v), { l: 15, m: 0, h: 0 })),\n isEdge,\n );\n m = sub_0(shl({ l: 1, m: 0, h: 0 }, v), { l: 1, m: 0, h: 0 });\n val = or(\n and(val, m),\n and(shr(val, 4), {\n l: ~m.l & $intern_9,\n m: ~m.m & $intern_9,\n h: ~m.h & $intern_10,\n }),\n );\n }\n arr[n - 1] = setVal(\n arr[n - 1],\n toInt(and(val, { l: 15, m: 0, h: 0 })),\n isEdge,\n );\n}\n\nfunction setVal(val0, val, isEdge) {\n return ((isEdge ? (val << 1) | (val0 & 1) : val | (val0 & -8)) << 24) >> 24;\n}\n\nfunction toCubieCube(f, ccRet) {\n $clinit_Util();\n var col1;\n var col2;\n var i;\n var i0;\n var i1;\n var i2;\n var j;\n var ori;\n for (i0 = 0; i0 < 8; i0++) {\n ccRet.ca[i0] = 0;\n }\n for (i1 = 0; i1 < 12; i1++) {\n ccRet.ea[i1] = 0;\n }\n for (i2 = 0; i2 < 8; i2++) {\n for (ori = 0; ori < 3; ori++) {\n if (f[cornerFacelet[i2][ori]] === 0 || f[cornerFacelet[i2][ori]] === 3) {\n break;\n }\n }\n col1 = f[cornerFacelet[i2][(ori + 1) % 3]];\n col2 = f[cornerFacelet[i2][(ori + 2) % 3]];\n for (j = 0; j < 8; j++) {\n if (\n col1 === ~~(cornerFacelet[j][1] / 9) &&\n col2 === ~~(cornerFacelet[j][2] / 9)\n ) {\n ccRet.ca[i2] = narrow_byte(((ori % 3) << 3) | j);\n break;\n }\n }\n }\n for (i = 0; i < 12; i++) {\n for (j = 0; j < 12; j++) {\n if (\n f[edgeFacelet[i][0]] === ~~(edgeFacelet[j][0] / 9) &&\n f[edgeFacelet[i][1]] === ~~(edgeFacelet[j][1] / 9)\n ) {\n ccRet.ea[i] = narrow_byte(j << 1);\n break;\n }\n if (\n f[edgeFacelet[i][0]] === ~~(edgeFacelet[j][1] / 9) &&\n f[edgeFacelet[i][1]] === ~~(edgeFacelet[j][0] / 9)\n ) {\n ccRet.ea[i] = narrow_byte((j << 1) | 1);\n break;\n }\n }\n }\n}\n\nvar Cnk;\nvar ckmv2bit;\nvar cornerFacelet;\nvar edgeFacelet;\nvar move2str;\nvar std2ud;\nvar ud2std;\nfunction $appendSolMove(this$static, curMove) {\n var axisCur;\n var axisLast;\n var pow_0;\n if (this$static.length_0 === 0) {\n this$static.moves[this$static.length_0++] = curMove;\n return;\n }\n axisCur = ~~(curMove / 3);\n axisLast = ~~(this$static.moves[this$static.length_0 - 1] / 3);\n if (axisCur === axisLast) {\n pow_0 =\n ((curMove % 3) + (this$static.moves[this$static.length_0 - 1] % 3) + 1) %\n 4;\n pow_0 === 3\n ? --this$static.length_0\n : (this$static.moves[this$static.length_0 - 1] = axisCur * 3 + pow_0);\n return;\n }\n if (\n this$static.length_0 > 1 &&\n axisCur % 3 === axisLast % 3 &&\n axisCur === ~~(this$static.moves[this$static.length_0 - 2] / 3)\n ) {\n pow_0 =\n ((curMove % 3) + (this$static.moves[this$static.length_0 - 2] % 3) + 1) %\n 4;\n if (pow_0 === 3) {\n this$static.moves[this$static.length_0 - 2] =\n this$static.moves[this$static.length_0 - 1];\n --this$static.length_0;\n } else {\n this$static.moves[this$static.length_0 - 2] = axisCur * 3 + pow_0;\n }\n return;\n }\n this$static.moves[this$static.length_0++] = curMove;\n}\n\nfunction $setArgs(this$static, verbose, urfIdx, depth1) {\n this$static.verbose = verbose;\n this$static.urfIdx = urfIdx;\n this$static.depth1 = depth1;\n}\n\nfunction $toString_2(this$static) {\n var s;\n var sb;\n var urf;\n sb = new StringBuffer();\n urf =\n (this$static.verbose & 2) !== 0\n ? (this$static.urfIdx + 3) % 6\n : this$static.urfIdx;\n if (urf < 3) {\n for (s = 0; s < this$static.length_0; s++) {\n (this$static.verbose & 1) !== 0 &&\n s === this$static.depth1 &&\n ((sb.string += \". \"), sb);\n $append(\n $append_1(\n sb,\n ($clinit_Util(), move2str)[\n ($clinit_CubieCube(), urfMove)[urf][this$static.moves[s]]\n ],\n ),\n );\n }\n } else {\n for (s = this$static.length_0 - 1; s >= 0; s--) {\n $append(\n $append_1(\n sb,\n ($clinit_Util(), move2str)[\n ($clinit_CubieCube(), urfMove)[urf][this$static.moves[s]]\n ],\n ),\n );\n (this$static.verbose & 1) !== 0 &&\n s === this$static.depth1 &&\n ((sb.string += \". \"), sb);\n }\n }\n return sb.string;\n}\n\nfunction Util$Solution() {\n this.moves = initDim(I_classLit, $intern_27, 0, 31, 7, 1);\n}\n\ndefineClass(150, 1, {}, Util$Solution);\n_.depth1 = 0;\n_.length_0 = 0;\n_.urfIdx = 0;\n_.verbose = 0;\nvar I_classLit = createForPrimitive(\"int\", \"I\");\ncreateForClass(\"com.google.gwt.lang\", \"CollapsedPropertyHolder\", 252);\n\ncreateForClass(\"com.google.gwt.lang\", \"JavaClassHierarchySetupUtil\", 254);\nconst Lcom_google_gwt_lang_LongLibBase$LongEmul_2_classLit = createForClass(\n \"com.google.gwt.lang\",\n \"LongLibBase/LongEmul\",\n null,\n);\ncreateForClass(\"com.google.gwt.lang\", \"ModuleUtils\", 257);\nvar B_classLit = createForPrimitive(\"byte\", \"B\");\nvar J_classLit = createForPrimitive(\"long\", \"J\");\nvar C_classLit = createForPrimitive(\"char\", \"C\");\ncreateForClass(\"com.google.gwt.user.client.rpc\", \"XsrfToken\", null),\n createForInterface(\"java.util\", \"Map/Entry\");\n\nexport const initialize = function () {\n init_0(false);\n};\nexport const solveState = function (s) {\n return $solution(new Search(), s);\n};\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/cubing/vendor/xyzzy/fto-solver.js"],
|
|
4
|
-
"sourcesContent": ["/* ftosolver.js - An FTO solver\nversion 0.5.1 (2021-04-20)\n\nCopyright (c) 2016, 2020, 2021\n\nFrom https://gist.github.com/torchlight/9a5c53da09d8e090756a228f4b5f3471\nOriginally MIT licensed, added to `cubing.js` under the GPL license by permission from the author (@torchlight/xyzzy).\n\nCompatibility note:\nThis is targeted at Firefox / Spidermonkey releases from 2019 and onwards. It might not run on older\nJavaScript engines. Recent Chrome / Node releases should also work, but are not tested as much.\n*/\n\nimport { randomUIntBelowFactory } from \"../random-uint-below\";\n\n/* Helper functions */\n\nfunction counter(A) {\n let counts = [];\n for (let a of A) {\n counts[a] = (counts[a] || 0) + 1;\n }\n return counts;\n}\n\n/* Combinatoric functions */\n\nfunction factorial(n) {\n if (n < 2) {\n return n;\n }\n let f = 1;\n for (let i = 2; i <= n; i++) {\n f *= i;\n }\n return f;\n}\n\nfunction C(n, k) {\n if (k < 0 || k > n) {\n return 0;\n }\n if (k === 0 || k === n) {\n return 1;\n }\n let c = 1;\n for (let i = 0; i < k; i++) {\n c = ((c * (n - i)) / (i + 1)) | 0;\n }\n return c;\n}\n\nfunction C4(n, k0, k1, k2, k3 = n - k0 - k1 - k2) {\n return C(n, k0 + k1) * C(k0 + k1, k0) * C(k2 + k3, k2);\n}\n\nfunction permutation_to_index(perm) {\n perm = perm.slice();\n let n = perm.length;\n let f = factorial(n - 1);\n let ind = 0;\n while (n > 1) {\n n--;\n // invariant: f === factorial(n)\n // also, perm stores meaningful values up to perm[n]\n let e = perm[0];\n ind += e * f;\n for (let i = 0; i < n; i++) {\n let x = perm[i + 1];\n perm[i] = x - (x > e);\n }\n f /= n;\n }\n return ind;\n}\n\nfunction index_to_permutation(ind, n) {\n let perm = [];\n let f = factorial(n - 1);\n for (let i = 0; i < n; i++) {\n perm[i] = (ind / f) | 0;\n ind %= f;\n f /= n - 1 - i;\n }\n for (let i = n - 2; i >= 0; i--) {\n for (let j = i + 1; j < n; j++) {\n perm[j] += +(perm[j] >= perm[i]);\n }\n }\n return perm;\n}\n\nfunction permutation_parity(A) {\n let n = A.length;\n let parity = 0;\n for (let i = 0; i < n - 1; i++) {\n for (let j = i; j < n; j++) {\n if (A[i] > A[j]) {\n parity ^= 1;\n }\n }\n }\n return parity;\n}\n\nfunction index_to_evenpermutation(ind, n) {\n let perm = [];\n let f = factorial(n - 1) / 2;\n let parity = 0;\n for (let i = 0; i < n - 1; i++) {\n perm[i] = (ind / f) | 0;\n ind %= f;\n f /= n - 1 - i;\n }\n perm[n - 1] = 0;\n for (let i = n - 2; i >= 0; i--) {\n for (let j = i + 1; j < n; j++) {\n if (perm[j] >= perm[i]) {\n perm[j]++;\n } else {\n parity ^= 1;\n }\n }\n }\n if (parity === 1) {\n [perm[n - 2], perm[n - 1]] = [perm[n - 1], perm[n - 2]];\n }\n return perm;\n}\n\nfunction evenpermutation_to_index(perm) {\n return permutation_to_index(perm) >> 1;\n}\n\nlet [evenpermutation8_to_index, index_to_evenpermutation8] = (() => {\n let index_in_set_bits = new Int8Array(256 * 8);\n let look_up_set_bits = new Int8Array(256 * 8);\n for (let i = 0; i < 256; i++) {\n for (let j = 0, counter = 0; j < 8; j++) {\n if (((i >>> j) & 1) === 0) {\n continue;\n }\n index_in_set_bits[(j << 8) | i] = counter;\n look_up_set_bits[(counter << 8) | i] = j;\n counter++;\n }\n }\n\n function evenpermutation8_to_index(perm) {\n let unused = 0xff; // track which values in 0..7 haven't been used so far\n let f = 2520; // = 7!/2\n let ind = 0;\n for (let i = 0; i < 6; i++) {\n let v = perm[i];\n ind += index_in_set_bits[unused | (v << 8)] * f;\n unused &= ~(1 << v);\n f /= 7 - i;\n }\n return ind;\n }\n\n // note: this is *not* a drop-in replacement for index_to_evenpermutation!\n function index_to_evenpermutation8(ind, perm) {\n let unused = 0xff;\n let f = 2520; // = 7!/2\n let parity = 0;\n for (let i = 0; i < 6; i++) {\n let a = (ind / f) | 0;\n ind -= a * f;\n parity ^= a & 1;\n let v = look_up_set_bits[unused | (a << 8)];\n perm[i] = v;\n unused &= ~(1 << v);\n f /= 7 - i;\n }\n // the last two elements are uniquely determined by the others\n perm[6] = look_up_set_bits[unused | (parity << 8)];\n perm[7] = look_up_set_bits[unused | ((parity ^ 1) << 8)];\n return perm;\n }\n\n return [evenpermutation8_to_index, index_to_evenpermutation8];\n})();\n\nfunction random_permutation(n, randomUintBelow) {\n let p = [0];\n for (let i = 1; i < n; i++) {\n let r = randomUintBelow(i + 1);\n p[i] = p[r];\n p[r] = i;\n }\n return p;\n}\n\nfunction random_even_permutation(n, randomUintBelow) {\n let p = random_permutation(n, randomUintBelow);\n if (permutation_parity(p) === 1) {\n [p[0], p[1]] = [p[1], p[0]];\n }\n return p;\n}\n\nfunction comb_to_index(l) {\n let bits = l.length;\n let ones = 0;\n for (let i = 0; i < bits; i++) {\n ones += +(l[i] === 1);\n }\n let zeros = bits - ones;\n if (zeros === 0 || ones === 0 || bits === 1) {\n return 0;\n }\n let b = C(bits - 1, ones);\n let ind = 0;\n for (let i = 0; zeros > 0 && ones > 0 && bits > 1; i++) {\n bits--;\n if (l[i] === 0) {\n b = (b * --zeros) / bits;\n } else {\n // l[i] === 1\n ind += b;\n b = (b * ones--) / bits;\n }\n }\n return ind;\n}\n\nfunction index_to_comb(ind, ones, bits) {\n let zeros = bits - ones;\n let b = C(bits - 1, ones);\n let l = [];\n let n = bits - 1;\n for (let i = 0; i < n; i++) {\n bits--;\n if (ind < b) {\n l.push(0);\n b = (b * --zeros) / bits;\n } else {\n l.push(1);\n ind -= b;\n b = (b * ones--) / bits;\n }\n }\n l.push(ones);\n return l;\n}\n\n// this is \"incorrect\" for n=0 but that's out of scope\nfunction ctz(n) {\n n |= 0;\n return 31 - Math.clz32(n ^ (n - 1));\n}\n\nlet comb_lookup_tables = {};\nfunction generate_comb_lookup_tables(n, k) {\n // 2 <= n <= 28, 0 <= k <= n\n n |= 0;\n k |= 0;\n let key = `${n} ${k}`;\n if (comb_lookup_tables[key]) {\n return comb_lookup_tables[key];\n }\n let total = C(n, k);\n let index_to_comb_table = new Uint32Array(total);\n let comb_to_index_table = new Uint32Array(1 << n).fill(-1);\n for (let i = 0, c = (1 << k) - 1; i < total; i++) {\n index_to_comb_table[i] = c;\n comb_to_index_table[c] = i;\n let t = c | (c - 1);\n c = (t + 1) | (((~t & -~t) - 1) >> (ctz(c) + 1));\n }\n return (comb_lookup_tables[key] = [index_to_comb_table, comb_to_index_table]);\n}\n\nfunction popcount(n) {\n n |= 0;\n let c = 0;\n while (n !== 0) {\n n &= n - 1;\n c++;\n }\n return c;\n}\n\nfunction spread_bits(n) {\n n &= 0xffff;\n n = (n | (n << 8)) & 0x00ff00ff;\n n = (n | (n << 4)) & 0x0f0f0f0f;\n n = (n | (n << 2)) & 0x33333333;\n n = (n | (n << 1)) & 0x55555555;\n return n;\n}\n\nfunction interleave_bits(x, y) {\n return spread_bits(x) | (spread_bits(y) << 1);\n}\n\nlet comb4_lookup_tables = {};\nfunction generate_comb4_lookup_tables(n, k0, k1, k2, k3) {\n // 3 <= n <= 14\n // 0 <= k0,k1,k2,k3 <= n\n // n = k0 + k1 + k2 + k3\n // WARNING: This does not return the combinations in sorted order.\n // (but if only two of k0,k1,k2,k3 are nonzero, then they will be sorted)\n n |= 0;\n k0 |= 0;\n k1 |= 0;\n k2 |= 0;\n k3 |= 0;\n if (n !== k0 + k1 + k2 + k3) {\n throw new Error(\"generate_comb4_lookup_tables: invalid parameters\");\n }\n let key = [n, k0, k1, k2, k3].join(\" \");\n if (comb4_lookup_tables[key]) {\n return comb4_lookup_tables[key];\n }\n let [itcl, ctil] = generate_comb_lookup_tables(n, k1 + k3);\n let [itch, ctih] = generate_comb_lookup_tables(n, k2 + k3);\n let total = C4(n, k0, k1, k2, k3);\n let index_to_comb4_table = new Uint32Array(total);\n let comb4_to_index_table = new Uint32Array(4 ** n).fill(-1);\n for (let i = 0, index = 0; i < itch.length; i++) {\n let ch = itch[i];\n for (let j = 0; j < itcl.length; j++) {\n let cl = itcl[j];\n if (popcount(cl & ch) === k3) {\n let c = interleave_bits(cl, ch);\n index_to_comb4_table[index] = c;\n comb4_to_index_table[c] = index;\n index++;\n }\n }\n }\n return (comb4_lookup_tables[key] = [\n index_to_comb4_table,\n comb4_to_index_table,\n ]);\n}\n\nfunction compose(A, B) {\n let C = [];\n for (let i = 0; i < B.length; i++) {\n C[i] = A[B[i]];\n }\n return C;\n}\n\nfunction compose3(A, B, C) {\n let D = [];\n for (let i = 0; i < C.length; i++) {\n D[i] = A[B[C[i]]];\n }\n return D;\n}\n\nfunction compose_o(A, B) {\n let p = compose(A[0], B[0]);\n let o = [];\n let n = B[0].length;\n for (let i = 0; i < n; i++) {\n o[i] = A[1][B[0][i]] ^ B[1][i];\n }\n return [p, o];\n}\n\n/*\nfunction permutation_from_cycle(cycle, n)\n{\n\tlet perm = [];\n\tfor (let i = 0; i < n; i++) {perm[i] = i};\n\tfor (let i = 0; i < cycle.length; i++)\n\t{\n\t\tperm[cycle[i]] = cycle[(i + 1) % cycle.length];\n\t}\n\treturn perm;\n}\n*/\n\nfunction permutation_from_cycles(cycles, n) {\n let perm = [];\n for (let i = 0; i < n; i++) {\n perm[i] = i;\n }\n for (let cycle of cycles) {\n for (let i = 0; i < cycle.length; i++) {\n perm[cycle[i]] = cycle[(i + 1) % cycle.length];\n }\n }\n return perm;\n}\n\nfunction reduce_permutation(perm, keep) {\n // perm: a permutation\n // keep: array of booleans, of the same length as perm\n let n = perm.length;\n let count = Array(n).fill(0);\n for (let i = 1; i < n; i++) {\n count[i] = count[i - 1] + keep[i - 1];\n }\n let nn = count[n - 1] + keep[n - 1];\n let reduced = Array(nn);\n for (let i = 0; i < n; i++) {\n if (keep[i]) {\n reduced[count[i]] = count[perm[i]];\n }\n }\n return reduced;\n}\n\nfunction invert_permutation(perm) {\n let n = perm.length;\n let inverse = Array(n);\n for (let i = 0; i < n; i++) {\n inverse[perm[i]] = i;\n }\n return inverse;\n}\n\nfunction gcd(a, b) {\n while (a && b) {\n [a, b] = [b % a, a];\n }\n return Math.abs(a + b);\n}\n\nfunction lcm(a, b) {\n return (a * b) / gcd(a, b);\n}\n\nfunction permutation_order(perm) {\n let order = 1;\n let n = perm.length;\n let visited = Array(n).fill(false);\n let i = -1;\n while (true) {\n i = visited.indexOf(false, i + 1);\n if (i === -1) {\n break;\n }\n let cycle_length = 0;\n let j = i;\n while (!visited[j]) {\n visited[j] = true;\n j = perm[j];\n cycle_length++;\n }\n //console.log(cycle_length);\n order = lcm(order, cycle_length);\n }\n return order;\n}\n\n/*\nFacelet layout:\n\t\t\t\tU\t\t\t\t\t\t\t\t\tB\n\t\t8\t7\t6\t5\t4\t\t\t\t\t67\t68\t69\t70\t71\n\t44\t\t3\t2\t1\t\t49\t\t\t22\t\t64\t65\t66\t\t35\n\t43\t39\t\t0\t\t46\t50\t\t\t23\t19\t\t63\t\t30\t34\nL\t42\t38\t36\t\t45\t47\t51\tR\tBR\t24\t20\t18\t\t27\t29\t33\tBL\n\t41\t37\t\t9\t\t48\t52\t\t\t25\t21\t\t54\t\t28\t32\n\t40\t\t10\t11\t12\t\t53\t\t\t26\t\t57\t56\t55\t\t31\n\t\t13\t14\t15\t16\t17\t\t\t\t\t62\t61\t60\t59\t58\n\t\t\t\tF\t\t\t\t\t\t\t\t\tD\n\nWe'll be using the facelet permutations as the underlying representation. This specific labelling\ngives us three symmetries that can be written very compactly, and this turns out to be enough to\ngenerate any face move from any other face move.\n\nWhich is nice, because I don't have an FTO and it would be very error prone if I were to write out\nevery move individually.\n\nX = T2\nY = Ro Lo' (I think)\nZ = mirroring so that U swaps with L and F swaps with R\n\nFaces / colours (Lanlan colour scheme):\n0: U (white)\n1: F (red)\n2: BR (grey)\n3: BL (orange)\n4: L (purple)\n5: R (green)\n6: D (yellow)\n7: B (blue)\n*/\n\nlet solved_state = Array(72)\n .fill()\n .map((_, i) => (i / 9) | 0);\n\nlet move_U = permutation_from_cycles(\n [\n [0, 4, 8],\n [1, 6, 3],\n [2, 5, 7],\n [9, 22, 35],\n [45, 67, 44],\n [47, 68, 43],\n [46, 69, 39],\n [50, 70, 38],\n [49, 71, 36],\n ],\n 72,\n);\nlet move_Ui = compose(move_U, move_U);\n\nlet move_X = Array(72)\n .fill()\n .map((_, i) => ((i / 18) | 0) * 18 + ((i + 9) % 18));\nlet move_Y = Array(72)\n .fill()\n .map((_, i) => ((i / 36) | 0) * 36 + ((i + 18) % 36));\nlet move_Z = Array(72)\n .fill()\n .map((_, i) => (i + 36) % 72);\n\n// Z changes sign, so this is really setting up to U' rather than U\nlet move_L = compose3(move_Z, move_Ui, move_Z);\nlet move_F = compose3(move_X, move_U, move_X);\nlet move_R = compose3(move_X, move_L, move_X);\n\n//let move_BR = compose3(move_Y, move_U, move_Y);\n//let move_BL = compose3(move_Y, move_F, move_Y);\n//let move_B = compose3(move_Y, move_R, move_Y);\n//let move_D = compose3(move_Y, move_L, move_Y);\n\nlet move_Us = permutation_from_cycles(\n [\n [10, 24, 30],\n [11, 23, 34],\n [12, 19, 33],\n [42, 48, 64],\n [41, 52, 65],\n [37, 51, 66],\n ],\n 72,\n);\nlet move_Uw = compose(move_U, move_Us);\nlet move_Uwi = compose(move_Uw, move_Uw);\n\nlet move_Lw = compose3(move_Z, move_Uwi, move_Z);\nlet move_Fw = compose3(move_X, move_Uw, move_X);\nlet move_Rw = compose3(move_X, move_Lw, move_X);\n\nlet colour_map = Array(72)\n .fill()\n .map((_, i) => (i / 9) | 0);\n\nlet corner_piece_facelets = [\n [0, 45, 9, 36], // U-F\n [4, 67, 22, 49], // U-BR\n [8, 44, 35, 71], // U-BL\n [13, 58, 31, 40], // F-BL\n [17, 53, 26, 62], // F-BR\n [18, 63, 27, 54], // BR-BL\n];\n\nlet edge_piece_facelets = [\n [1, 46], // U-R\n [3, 39], // U-L\n [6, 69], // U-B\n [10, 37], // F-L\n [33, 42], // BL-L\n [12, 48], // F-R *\n [15, 60], // F-D *\n [24, 51], // BR-R *\n [19, 64], // BR-B **\n [28, 55], // BL-D **\n [30, 66], // BL-B **\n [21, 57], // BR-D **\n];\n\nlet centreA_piece_facelets = Array(12)\n .fill()\n .map((_, i) => ((i / 3) | 0) * 9 + [2, 5, 7][i % 3]);\nlet centreB_piece_facelets = centreA_piece_facelets.map((x) => x + 36);\n\n/*\nfacelet definition sanity test:\nall corner facelets are 0,4,8 mod 9; facelet order is always in U,R,U,R orbits\nall edge facelets are 1,3,6 mod 9; facelet order is always in U,R orbits\nall centre facelets are 2,5,7 mod 9\n\nfunction facelet_sanity_test()\n{\nif (corner_piece_facelets.length !== 6) {console.log('wrong number of corner pieces'); return;}\nif (edge_piece_facelets.length !== 12) {console.log('wrong number of edge pieces'); return;}\nif (!corner_piece_facelets.every(x => {return x.every(y => y % 9 % 4 === 0) && x[0] < 36 && x[2] < 36 && x[1] >= 36 && x[3] >= 36;}))\n{\n\tconsole.log('corner pieces weird');\n\treturn;\n}\nif (!edge_piece_facelets.every(x => {return x.every(y => [1,3,6].indexOf(y % 9) !== -1) && x[0] < 36 && x[1] >= 36;}))\n{\n\tconsole.log('edge pieces weird');\n\treturn;\n}\n}\n\n*/\n\nfunction identify_corner_piece(colourA, colourB) {\n // return a 2-tuple [p, o] where\n // p in {0,1,2,3,4,5} is the corner piece's ID and\n // o in {0,1} is its orientation\n for (let i = 0; i < 6; i++) {\n if (\n colourA === colour_map[corner_piece_facelets[i][0]] &&\n colourB === colour_map[corner_piece_facelets[i][2]]\n ) {\n return [i, 0];\n } else if (\n colourA === colour_map[corner_piece_facelets[i][2]] &&\n colourB === colour_map[corner_piece_facelets[i][0]]\n ) {\n return [i, 1];\n }\n }\n throw new Error(\"unknown corner piece\");\n}\n\nfunction identify_edge_piece(colourA, colourB) {\n // return p in {0..11} the edge piece's ID\n // (edges are not flippable on the FTO)\n for (let i = 0; i < 12; i++) {\n if (\n colourA === colour_map[edge_piece_facelets[i][0]] &&\n colourB === colour_map[edge_piece_facelets[i][1]]\n ) {\n return i;\n }\n if (\n colourB === colour_map[edge_piece_facelets[i][0]] &&\n colourA === colour_map[edge_piece_facelets[i][1]]\n ) {\n return i;\n }\n }\n throw new Error(\"unknown edge piece\");\n}\n\nfunction get_corner_piece(facelets, location) {\n return identify_corner_piece(\n facelets[corner_piece_facelets[location][0]],\n facelets[corner_piece_facelets[location][2]],\n );\n}\n\nfunction get_edge_piece(facelets, location) {\n return identify_edge_piece(\n facelets[edge_piece_facelets[location][0]],\n facelets[edge_piece_facelets[location][1]],\n );\n}\n\nfunction set_corner_piece(facelets, location, value, orientation) {\n let indices = corner_piece_facelets[location];\n let colours = corner_piece_facelets[value].map((x) => colour_map[x]);\n if (orientation % 2 !== 0) {\n colours = [colours[2], colours[3], colours[0], colours[1]];\n }\n for (let i = 0; i < 4; i++) {\n facelets[indices[i]] = colours[i];\n }\n}\n\nfunction set_edge_piece(facelets, location, value) {\n let indices = edge_piece_facelets[location];\n let colours = edge_piece_facelets[value].map((x) => colour_map[x]);\n for (let i = 0; i < 2; i++) {\n facelets[indices[i]] = colours[i];\n }\n}\n\nfunction convert_move_to_permutations(move) {\n let state = move.map((x) => colour_map[x]);\n //console.log(state);\n let cp_raw = Array(6)\n .fill()\n .map((_, i) => get_corner_piece(state, i));\n let cp_half = cp_raw.map(([p, o]) => p + 6 * o);\n let cp = cp_half.concat(cp_half.map((x) => (x + 6) % 12));\n let ep = Array(12)\n .fill()\n .map((_, i) => get_edge_piece(state, i));\n let ap = Array(12)\n .fill()\n .map(\n (_, i) => centreA_piece_facelets.indexOf(move[centreA_piece_facelets[i]]),\n );\n let bp = Array(12)\n .fill()\n .map(\n (_, i) => centreB_piece_facelets.indexOf(move[centreB_piece_facelets[i]]),\n );\n return { cp: cp, ep: ep, ap: ap, bp: bp };\n}\n\nlet moves = [\n move_U,\n move_L,\n move_F,\n move_R,\n move_Uw,\n move_Lw,\n move_Fw,\n move_Rw,\n];\nlet move_names = [\"U\", \"L\", \"F\", \"R\", \"u\", \"l\", \"f\", \"r\"];\n\nlet move_permutations = moves.map(convert_move_to_permutations);\n\n/*\nlet commute_table = (function () {\n\tlet n = moves.length;\n\tlet t = Array(n);\n\tfor (let i = 0; i < n; i++)\n\t{\n\t\tt[i] = Array(n);\n\t\tfor (let j = 0; j < n; j++)\n\t\t{\n\t\t\tlet a = compose(moves[i], moves[j]);\n\t\t\tlet b = compose(moves[j], moves[i]);\n\t\t\tt[i][j] = (a.join(' ') === b.join(' '));\n\t\t}\n\t}\n\treturn t;\n})();\n*/\n\n// generate a random state with the BR-BL corner solved\nfunction random_state(randomUintBelow) {\n let facelets = Array(72);\n let cp = random_even_permutation(5, randomUintBelow);\n cp.push(5);\n let co = Array(4)\n .fill()\n .map((_) => randomUintBelow(2));\n co.push(co.reduce((x, y) => x ^ y));\n co.push(0);\n for (let i = 0; i < 6; i++) {\n set_corner_piece(facelets, i, cp[i], co[i]);\n }\n\n let ep = random_even_permutation(12, randomUintBelow);\n for (let i = 0; i < 12; i++) {\n set_edge_piece(facelets, i, ep[i]);\n }\n\n let a = random_permutation(12, randomUintBelow).map((x) => (x / 3) | 0);\n let b = random_permutation(12, randomUintBelow).map((x) => 4 + ((x / 3) | 0));\n for (let i = 0; i < 12; i++) {\n facelets[centreA_piece_facelets[i]] = a[i];\n facelets[centreB_piece_facelets[i]] = b[i];\n }\n return facelets;\n}\n\nfunction stringify_move_sequence(move_sequence, no_wide = false) {\n if (no_wide) {\n const U = 0;\n const L = 1;\n const F = 2;\n const R = 3;\n const D = 4;\n const BR = 5;\n const B = 6;\n const BL = 7;\n move_sequence = move_sequence.map((x) => x.slice());\n let ordering = [U, L, F, R, D, BR, B, BL];\n let rotations = [\n [U, R, BR, B, D, BL, L, F],\n [BL, L, U, B, R, BR, D, F],\n [BL, D, F, L, R, U, B, BR],\n [F, D, BR, R, B, U, L, BL],\n ];\n rotations = rotations.concat(rotations.map((p) => invert_permutation(p)));\n for (let i = 0; i < move_sequence.length; i++) {\n if (move_sequence[i][0] < 4) {\n // it's already a single-layer turn\n move_sequence[i][0] = ordering[move_sequence[i][0]];\n } else {\n // it's a double-layer turn and we need to Do Stuff\n let m = ordering[move_sequence[i][0]];\n let r = move_sequence[i][1];\n move_sequence[i][0] = m;\n ordering = compose(r === 1 ? rotations[m ^ 4] : rotations[m], ordering);\n //console.log(ordering);\n }\n }\n }\n let names = no_wide ? \"U L F R D BR B BL\".split(\" \") : move_names; // WARNING: this ordering is _not_ the same as the facelet colours\n let suffixes = [\"0\", \"\", \"'\"];\n let s = move_sequence.map(([m, r]) => names[m] + suffixes[r]);\n return s.join(\" \");\n}\n\nfunction print_move_sequence(move_sequence) {\n console.log(stringify_move_sequence(move_sequence));\n}\n\nfunction apply_move_sequence(state, move_sequence) {\n for (let [m, r] of move_sequence) {\n for (let i = 0; i < r; i++) {\n state = compose(state, moves[m]);\n }\n }\n return state;\n}\n\nfunction invert_move_sequence(move_sequence) {\n return move_sequence.map(([m, r]) => [m, (3 - r) % 3]).reverse();\n}\n\nfunction simplify_move_sequence(move_sequence, make_noise = false) {\n if (move_sequence.length === 0) {\n return [];\n }\n let simplified = [];\n let last_move = undefined;\n for (let [m, r] of move_sequence) {\n if (last_move && last_move[0] === m) {\n // turn of the same face\n last_move[1] += r;\n last_move[1] %= 3;\n if (last_move[1] === 0) {\n simplified.pop();\n last_move =\n simplified.length === 0\n ? undefined\n : simplified[simplified.length - 1];\n }\n } else if (\n simplified.length >= 2 &&\n (last_move[0] ^ m) === 4 &&\n simplified[simplified.length - 2][0] === m\n ) {\n // turn of the opposite face\n simplified[simplified.length - 2][1] += r;\n simplified[simplified.length - 2][1] %= 3;\n if (simplified[simplified.length - 2][1] === 0) {\n simplified.splice(simplified.length - 2, 1);\n }\n } else {\n last_move = [m, r];\n simplified.push(last_move);\n }\n }\n if (make_noise && `${move_sequence}` !== `${simplified}`) {\n console.log(`simplified ${move_sequence} to ${simplified}`);\n }\n return simplified;\n}\n\nfunction generate_random_state_scramble(randomUintBelow) {\n return stringify_move_sequence(\n invert_move_sequence(solve(random_state(randomUintBelow), true)),\n true,\n );\n}\n\nfunction generate_multiple_random_state_scrambles(n) {\n let scrambles = [];\n for (let i = 0; i < n; i++) {\n scrambles[i] = generate_random_state_scramble();\n }\n return scrambles;\n}\n\n/*\nActual solver logic goes here.\n\nUnlike most of the earlier random-state scramblers I've written before, this one comes with a slight\ncomplication: the FTO's states are _not_ a group. In other words, we can't skip inverting the\nsolution to get the scramble. Not a big deal.\n\nWe assume the D-BR-B-BL corner is solved. (If not, rotate puzzle accordingly.)\n\nPhase 1: Solve a small pyramid around the D-BR-B-BL corner.\n- centres #6, #9 in orbit A and #6, #9 in orbit B\n- edges #8, #9, #10, #11\nReduction: (132/9)**2 * (12*11*10*9) = 2555520\n\nPhase 2: Reduce to LU 2-gen.\n- remaining BR, D centres, one each of F, R centres (#5, #7, #8 in each orbit)\n- edges F-R, F-D, R-BR (#5, #6, #7)\n- corner F-BR (#4)\n- corner orientation constraint on the other four corners\nReduction: 120**2 * (8*7*6) * 10 * 4 = 193536000\n\nPhase 3: Finish solve.\n- remaining centres (#0..#4, #10, #11 in each orbit)\n- edges #0..#4\n- corners #0..#3\nReduction: 210**2 * (5!/2) * (4!/2*2) = 63504000\n\n\n*/\n\nfunction generate_mtable_comb_generic(n, k, permutations) {\n let N = C(n, k);\n let nmoves = permutations.length;\n let [itc, cti] = generate_comb_lookup_tables(n, k);\n let mtable = Array(nmoves)\n .fill()\n .map(() => new Uint32Array(N));\n for (let i = 0; i < N; i++) {\n let c = itc[i];\n let arr = Array(n);\n for (let j = 0; j < n; j++) {\n arr[j] = (c >> j) & 1;\n }\n for (let m = 0; m < nmoves; m++) {\n let arr2 = compose(arr, permutations[m]);\n let c2 = arr2.reduce((acc, x, j) => acc | (x << j), 0);\n mtable[m][i] = cti[c2];\n }\n }\n return mtable;\n}\n\nfunction generate_mtable_comb4_generic(n, k0, k1, k2, k3, permutations) {\n let N = C4(n, k0, k1, k2, k3);\n let nmoves = permutations.length;\n let [itc, cti] = generate_comb4_lookup_tables(n, k0, k1, k2, k3);\n let mtable = Array(nmoves)\n .fill()\n .map(() => new Uint32Array(N));\n for (let i = 0; i < N; i++) {\n let c = itc[i];\n let arr = Array(n);\n for (let j = 0; j < n; j++) {\n arr[j] = (c >> (2 * j)) & 3;\n }\n for (let m = 0; m < nmoves; m++) {\n let arr2 = compose(arr, permutations[m]);\n let c2 = arr2.reduce((acc, x, j) => acc | (x << (2 * j)), 0);\n mtable[m][i] = cti[c2];\n }\n }\n return mtable;\n}\n\nfunction generate_mtable_single_generic(permutations) {\n let n = permutations[0].length;\n let nmoves = permutations.length;\n let mtable = Array(nmoves)\n .fill()\n .map(() => new Uint32Array(n));\n for (let i = 0; i < n; i++) {\n for (let m = 0; m < nmoves; m++) {\n mtable[m][permutations[m][i]] = i;\n // we're using right-action convention here,\n // so we use the *inverse* of the permutation\n // to track how pieces move.\n }\n }\n return mtable;\n}\n\nfunction combine_mtables(mtable0, mtable1) {\n let n0 = mtable0[0].length;\n let n1 = mtable1[0].length;\n let nmoves = mtable0.length;\n let combined = Array(nmoves)\n .fill()\n .map(() => new Uint32Array(n0 * n1));\n for (let j = 0; j < n1; j++) {\n for (let i = 0; i < n0; i++) {\n let index = i + n0 * j;\n for (let m = 0; m < nmoves; m++) {\n combined[m][index] = mtable0[m][i] + n0 * mtable1[m][j];\n }\n }\n }\n return combined;\n}\n\nfunction trim_unreachable(mtable, origin) {\n // input: mtable\n // output: [trimmed mtable, map]\n let nmoves = mtable.length;\n let n = mtable[0].length;\n let reachable = new Uint8Array(n);\n reachable[origin] = 1;\n let done = false;\n while (!done) {\n done = true;\n for (let i = 0; i < n; i++) {\n if (!reachable[i]) {\n continue;\n }\n for (let m = 0; m < nmoves; m++) {\n if (!reachable[mtable[m][i]]) {\n reachable[mtable[m][i]] = 1;\n done = false;\n }\n }\n }\n }\n let map = new Int32Array(n).fill(-1);\n for (let i = 0, counter = 0; i < n; i++) {\n if (!reachable[i]) {\n continue;\n }\n map[i] = counter;\n counter++;\n }\n return [mtable.map((entry) => reduce_permutation(entry, reachable)), map];\n}\n\nfunction reduce_to_quotient(mtable, origins) {\n let nmoves = mtable.length;\n let n = mtable[0].length;\n let quotient_map = new Int32Array(n).fill(-1);\n origins.forEach((x) => {\n quotient_map[x] = 0;\n });\n let preimages = [origins];\n for (let image = 0; image < preimages.length; image++) {\n let equiv_class = preimages[image];\n for (let m = 0; m < nmoves; m++) {\n let j = mtable[m][equiv_class[0]];\n if (quotient_map[j] !== -1) {\n continue;\n } // already looked at those nodes\n let new_equiv_class = equiv_class.map((x) => mtable[m][x]);\n let new_image = preimages.length;\n preimages.push(new_equiv_class);\n for (let x of new_equiv_class) {\n if (quotient_map[x] !== -1) {\n throw new Error(\"quotienting failed\");\n }\n quotient_map[x] = new_image;\n }\n }\n }\n let n_quot = preimages.length;\n let mtable_quot = Array(nmoves)\n .fill()\n .map(() => new Int32Array(n_quot));\n for (let m = 0; m < nmoves; m++) {\n for (let i = 0; i < n_quot; i++) {\n mtable_quot[m][i] = quotient_map[mtable[m][preimages[i][0]]];\n }\n }\n return [mtable_quot, quotient_map];\n}\n\nfunction generate_mirrored_coordinate_table(mtable, a, b) {\n let n = mtable[0].length;\n let nmoves = mtable.length;\n let mirror_map = new Int32Array(n).fill(-1);\n mirror_map[a] = b;\n mirror_map[b] = a;\n let done = false;\n while (!done) {\n done = true;\n for (let i = 0; i < n; i++) {\n if (mirror_map[i] === -1) {\n continue;\n }\n let I = mirror_map[i];\n for (let m = 0; m < nmoves; m++) {\n let M = m ^ 1;\n let new_i = mtable[m][i];\n let new_I = mtable[M][mtable[M][I]];\n // convert moves according to this table:\n // U -> L2\n // L -> U2\n // F -> R2\n // R -> F2\n if (mirror_map[new_i] === -1) {\n done = false;\n mirror_map[new_i] = new_I;\n mirror_map[new_I] = new_i;\n } else if (mirror_map[new_i] !== new_I) {\n throw new Error(\"mirroring failed - is the initial map correct?\");\n }\n }\n }\n }\n return mirror_map;\n}\n\nfunction bfs(mtable, goal_states) {\n let N = mtable[0].length;\n let nmoves = mtable.length;\n let ptable = new Int8Array(N).fill(-1);\n for (let state of goal_states) {\n ptable[state] = 0;\n }\n let depth = 0;\n let done = false;\n while (!done) {\n done = true;\n for (let state = 0; state < N; state++) {\n if (ptable[state] !== depth) {\n continue;\n }\n for (let move_index = 0; move_index < nmoves; move_index++) {\n let new_state = mtable[move_index][state];\n while (new_state !== state) {\n if (ptable[new_state] === -1) {\n done = false;\n ptable[new_state] = depth + 1;\n }\n new_state = mtable[move_index][new_state];\n }\n }\n }\n depth++;\n }\n return ptable;\n}\n\nfunction* ida_solve_gen(indices, mtables, ptables, moves_left, commute) {\n let ncoords = indices.length;\n let bound = 0;\n for (let i = 0; i < ncoords; i++) {\n bound = Math.max(bound, ptables[i][indices[i]]);\n }\n while (bound <= moves_left) {\n //console.log(`searching depth ${bound}`);\n yield* ida_search_gen(indices, mtables, ptables, bound, -1, commute);\n bound++;\n }\n}\n\nfunction* ida_search_gen(indices, mtables, ptables, bound, last, commute) {\n let ncoords = indices.length;\n let nmoves = mtables[0].length;\n let heuristic = 0;\n for (let i = 0; i < ncoords; i++) {\n heuristic = Math.max(heuristic, ptables[i][indices[i]]);\n }\n if (heuristic > bound) {\n return;\n }\n if (bound === 0) {\n yield [];\n return;\n }\n if (heuristic === 0 && bound === 1) {\n return;\n }\n for (let m = 0; m < nmoves; m++) {\n if (m === last) {\n continue;\n }\n if (m < last && commute[m][last]) {\n continue;\n }\n let new_indices = indices.slice();\n for (let c = 0; c < ncoords; c++) {\n new_indices[c] = mtables[c][m][indices[c]];\n }\n let r = 1;\n while (indices.some((_, i) => indices[i] !== new_indices[i])) {\n let subpath_gen = ida_search_gen(\n new_indices,\n mtables,\n ptables,\n bound - 1,\n m,\n commute,\n );\n while (true) {\n let { value: subpath, done } = subpath_gen.next();\n if (done) {\n break;\n }\n yield [[m, r]].concat(subpath);\n }\n for (let c = 0; c < ncoords; c++) {\n new_indices[c] = mtables[c][m][new_indices[c]];\n }\n r++;\n }\n }\n}\n\nfunction solve(facelets, readable = false) {\n let phase1sol = solve_phase1_gen(facelets).next().value;\n let facelets2 = apply_move_sequence(facelets, phase1sol);\n let phase2sol = (\n readable ? solve_phase2_and_phase3_readable : solve_phase2_and_phase3_fast\n )(facelets2);\n let solution = simplify_move_sequence(phase1sol.concat(phase2sol), false);\n if (\n apply_move_sequence(facelets, solution).join(\"\") !== solved_state.join(\"\")\n ) {\n console.log(\"solving failed!\");\n console.log(facelets);\n console.log(phase1sol);\n console.log(facelets2);\n console.log(phase2sol);\n console.log(apply_move_sequence(facelets, solution));\n }\n return solution;\n}\n\nlet cached_mtables = {};\nlet cached_ptables = {};\n\n/* Phase 1 stuff */\n\nlet phase1_centre_colour_map = [0, 0, 2, 3, 0, 0, 2, 3];\nfunction index_phase1(facelets) {\n let [itc, cti] = generate_comb4_lookup_tables(12, 6, 0, 3, 3);\n let ep = Array(12)\n .fill()\n .map((_, i) => get_edge_piece(facelets, i));\n let edge_coord =\n ep.indexOf(8) +\n 12 * ep.indexOf(9) +\n 12 ** 2 * ep.indexOf(10) +\n 12 ** 3 * ep.indexOf(11);\n let [a_coord, b_coord] = [centreA_piece_facelets, centreB_piece_facelets].map(\n (facelet_indices) => {\n let arr = facelet_indices.map(\n (x) => phase1_centre_colour_map[facelets[x]],\n );\n return cti[arr.reduce((acc, x, j) => acc | (x << (2 * j)), 0)];\n },\n );\n return [edge_coord, a_coord, b_coord];\n}\n\nfunction generate_phase1_edge_mtable() {\n if (cached_mtables.phase1_edge) {\n return cached_mtables.phase1_edge;\n }\n let m1 = generate_mtable_single_generic(move_permutations.map((x) => x.ep));\n let m2 = combine_mtables(m1, m1);\n let m4 = combine_mtables(m2, m2);\n return (cached_mtables.phase1_edge = m4);\n}\n\nfunction generate_phase1_edge_ptable() {\n if (cached_ptables.phase1_edge) {\n return cached_ptables.phase1_edge;\n }\n return (cached_ptables.phase1_edge = bfs(generate_phase1_edge_mtable(), [\n 8 + 12 * 9 + 12 ** 2 * 10 + 12 ** 3 * 11,\n ]));\n}\n\nfunction generate_phase1_centreA_mtable() {\n if (cached_mtables.phase1_centreA) {\n return cached_mtables.phase1_centreA;\n }\n return (cached_mtables.phase1_centreA = generate_mtable_comb4_generic(\n 12,\n 6,\n 0,\n 3,\n 3,\n move_permutations.map((x) => x.ap),\n ));\n}\n\nfunction generate_phase1_centreB_mtable() {\n if (cached_mtables.phase1_centreB) {\n return cached_mtables.phase1_centreB;\n }\n return (cached_mtables.phase1_centreB = generate_mtable_comb4_generic(\n 12,\n 6,\n 0,\n 3,\n 3,\n move_permutations.map((x) => x.bp),\n ));\n}\n\nfunction generate_phase1_centre_ptable() {\n // the pruning tables for the two centre orbits are identical due to the specific facelet\n // labelling we're using.\n if (cached_ptables.phase1_centre) {\n return cached_ptables.phase1_centre;\n }\n let [itc, cti] = generate_comb4_lookup_tables(12, 6, 0, 3, 3);\n let goal_states = itc.filter((x) => {\n let x6 = (x >> 12) & 3;\n let x9 = (x >> 18) & 3;\n return x6 === 2 && x9 === 3;\n }).map((x) => cti[x]);\n return (cached_ptables.phase1_centre = bfs(\n generate_phase1_centreB_mtable(),\n goal_states,\n ));\n}\n\nfunction* solve_phase1_gen(facelets) {\n let mtables = [\n generate_phase1_edge_mtable(),\n generate_phase1_centreA_mtable(),\n generate_phase1_centreB_mtable(),\n ];\n let ptables = [\n generate_phase1_edge_ptable(),\n generate_phase1_centre_ptable(),\n generate_phase1_centre_ptable(),\n ];\n yield* phase1_ida_solve_gen(index_phase1(facelets), mtables, ptables, 15);\n}\n\nfunction* phase1_ida_solve_gen(indices, mtables, ptables, moves_left) {\n let ncoords = indices.length;\n let bound = 0;\n for (let i = 0; i < ncoords; i++) {\n bound = Math.max(bound, ptables[i][indices[i]]);\n }\n while (bound <= moves_left) {\n //console.log(`searching depth ${bound}`);\n yield* phase1_ida_search_gen(indices, mtables, ptables, bound, -1);\n bound++;\n }\n}\n\nfunction* phase1_ida_search_gen(indices, mtables, ptables, bound, last) {\n let ncoords = 3; //indices.length;\n let nmoves = 8; //mtables[0].length;\n let heuristic = Math.max(\n ptables[0][indices[0]],\n ptables[1][indices[1]],\n ptables[2][indices[2]],\n ); //0;\n //for (let i = 0; i < ncoords; i++) heuristic = Math.max(heuristic, ptables[i][indices[i]]);\n if (heuristic > bound) {\n return;\n }\n if (bound === 0) {\n yield [];\n return;\n }\n if (heuristic === 0 && bound === 1) {\n return;\n }\n for (let m = 0; m < nmoves; m++) {\n if (m === last) {\n continue;\n }\n if (m === last - 4) {\n continue;\n }\n let new_indices = [];\n new_indices[0] = mtables[0][m][indices[0]];\n new_indices[1] = mtables[1][m][indices[1]];\n new_indices[2] = mtables[2][m][indices[2]];\n let r = 1;\n while (indices.some((_, i) => indices[i] !== new_indices[i])) {\n let subpath_gen = phase1_ida_search_gen(\n new_indices,\n mtables,\n ptables,\n bound - 1,\n m,\n );\n while (true) {\n let { value: subpath, done } = subpath_gen.next();\n if (done) {\n break;\n }\n yield [[m, r]].concat(subpath);\n }\n new_indices[0] = mtables[0][m][new_indices[0]];\n new_indices[1] = mtables[1][m][new_indices[1]];\n new_indices[2] = mtables[2][m][new_indices[2]];\n r++;\n }\n }\n}\n\n/* Phase 2 stuff */\n\nlet phase2_centre_colour_map = [0, 1, 2, 0, 0, 1, 2, 0];\n// we don't care about swapping U and BL centres in phase 2\n\nlet phase2_centre_indices = [0, 1, 2, 3, 4, 5, 7, 8, 10, 11]; // 6 and 9 are already solved in phase 1\nlet phase2_keep = [\n true,\n true,\n true,\n true,\n true,\n true,\n false,\n true,\n true,\n false,\n true,\n true,\n];\nlet phase2_corner_keep = [\n true,\n true,\n true,\n true,\n true,\n false,\n true,\n true,\n true,\n true,\n true,\n false,\n];\n\nfunction index_phase2(facelets) {\n let [itc, cti] = generate_comb4_lookup_tables(10, 5, 3, 2, 0);\n let ep = Array(8)\n .fill()\n .map((_, i) => get_edge_piece(facelets, i));\n let edge_coord = ep.indexOf(5) + 8 * ep.indexOf(6) + 8 ** 2 * ep.indexOf(7);\n let corners = Array(5)\n .fill()\n .map((_, i) => get_corner_piece(facelets, i));\n let cp_inverse_full = invert_permutation(\n corners.map(([p, o]) => p + 5 * o).concat(\n corners.map(([p, o]) => p + 5 * (o ^ 1)),\n ),\n );\n let cp_inverse = cp_inverse_full.slice(0, 5).map((x) => x % 5);\n let co_inverse = cp_inverse_full.slice(0, 5).map((x) => (x / 5) | 0);\n let corner_coord =\n evenpermutation_to_index(cp_inverse) * 8 +\n (co_inverse[0] ^ co_inverse[2]) +\n 2 * (co_inverse[0] ^ co_inverse[3]) +\n 4 * co_inverse[4];\n let [a_coord, b_coord] = [centreA_piece_facelets, centreB_piece_facelets].map(\n (facelet_indices) => {\n let arr = compose(facelet_indices, phase2_centre_indices).map(\n (x) => phase2_centre_colour_map[facelets[x]],\n );\n return cti[arr.reduce((acc, x, j) => acc | (x << (2 * j)), 0)];\n },\n );\n // we don't need these move tables, but we do need the reduction maps\n // that are computed with these (and stored in global vars, yikes)\n generate_phase2_edge_mtable();\n generate_phase2_corner_mtable_compact();\n return [\n a_coord,\n b_coord,\n phase2_corner_reduction_map[corner_coord] +\n 40 * phase2_edge_reduction_map[edge_coord],\n ];\n}\n\nfunction* solve_phase2_gen(facelets) {\n yield* phase2_ida_solve_gen(index_phase2(facelets), 30);\n}\n\nfunction solve_phase2(facelets) {\n return solve_phase2_gen(facelets).next().value;\n}\n\nfunction generate_phase2_centre_mtables() {\n if (cached_mtables.phase2_centre) {\n return cached_mtables.phase2_centre;\n }\n let a = generate_mtable_comb4_generic(\n 10,\n 5,\n 3,\n 2,\n 0,\n move_permutations.slice(0, 4).map(\n (x) => reduce_permutation(x.ap, phase2_keep),\n ),\n );\n let b = generate_mtable_comb4_generic(\n 10,\n 5,\n 3,\n 2,\n 0,\n move_permutations.slice(0, 4).map(\n (x) => reduce_permutation(x.bp, phase2_keep),\n ),\n );\n return (cached_mtables.phase2_centre = [a, b]);\n}\n\nlet phase2_edge_reduction_map;\nfunction generate_phase2_edge_mtable() {\n if (cached_mtables.phase2_edge) {\n return cached_mtables.phase2_edge;\n }\n let e = generate_mtable_single_generic(\n move_permutations.slice(0, 4).map((x) => x.ep.slice(0, 8)),\n );\n let eee = combine_mtables(e, combine_mtables(e, e));\n let eee_trimmed;\n [eee_trimmed, phase2_edge_reduction_map] = trim_unreachable(eee, 0o765);\n return (cached_mtables.phase2_edge = eee_trimmed);\n}\n\nfunction generate_phase2_corner_mtable() {\n if (cached_mtables.phase2_corner) {\n return cached_mtables.phase2_corner;\n }\n const HALFFACT5 = factorial(5) / 2; // = 60\n const N = HALFFACT5 * 8; // = 480\n const keep = [\n true,\n true,\n true,\n true,\n true,\n false,\n true,\n true,\n true,\n true,\n true,\n false,\n ];\n // ignore the sixth and twelfth entries, which encode corner #5's state\n let mtable = Array(4)\n .fill()\n .map(() => new Uint32Array(N));\n let permutations = move_permutations.slice(0, 4).map(\n (x) => invert_permutation(reduce_permutation(x.cp, keep)),\n );\n // using the left-action convention here, so take inverses\n for (let i = 0; i < N; i++) {\n let p = index_to_evenpermutation(i >> 3, 5);\n let o = [0, 0, i & 1, (i >> 1) & 1, (i >> 2) & 1];\n o[1] = o[2] ^ o[3] ^ o[4];\n let cp = Array(10);\n for (let j = 0; j < 5; j++) {\n cp[j] = p[j] + 5 * o[j];\n cp[j + 5] = p[j] + 5 * (o[j] ^ 1);\n }\n for (let m = 0; m < 4; m++) {\n let cp2 = compose(permutations[m], cp);\n let p2 = cp2.slice(0, 5).map((x) => x % 5);\n let o2 = cp2.slice(0, 5).map((x) => (x / 5) | 0);\n let orientation_index = (o2[0] ^ o2[2]) + 2 * (o2[0] ^ o2[3]) + 4 * o2[4];\n mtable[m][i] = evenpermutation_to_index(p2) * 8 + orientation_index;\n }\n }\n return (cached_mtables.phase2_corner = mtable);\n /*\n\tfar as I can tell, there's no clean way to index the cosets of the corner subgroup in this\n\tphase. so we just do it the dirty way (see `reduce_to_quotient`).\n\t*/\n}\n\nlet phase2_corner_reduction_map;\nfunction generate_phase2_corner_mtable_compact() {\n if (cached_mtables.phase2_corner_compact) {\n return cached_mtables.phase2_corner_compact;\n }\n [cached_mtables.phase2_corner_compact, phase2_corner_reduction_map] =\n reduce_to_quotient(\n generate_phase2_corner_mtable(),\n phase2_corner_goal_states(),\n );\n return cached_mtables.phase2_corner_compact;\n}\n\nfunction generate_phase2_ce_mtable() {\n if (cached_mtables.phase2_ce) {\n return cached_mtables.phase2_ce;\n }\n let c = generate_phase2_corner_mtable_compact();\n let e = generate_phase2_edge_mtable();\n return (cached_mtables.phase2_ce = combine_mtables(c, e));\n}\n\nlet phase2_ce_mirror_map;\nfunction generate_phase2_ce_mirror_map() {\n if (phase2_ce_mirror_map) {\n return phase2_ce_mirror_map;\n }\n const ce_solved = index_phase2(solved_state)[2];\n return (phase2_ce_mirror_map = generate_mirrored_coordinate_table(\n generate_phase2_ce_mtable(),\n ce_solved,\n ce_solved,\n ));\n}\n\nfunction phase2_centre_goal_states() {\n let [itc, cti] = generate_comb4_lookup_tables(10, 5, 3, 2, 0);\n return itc.filter((x) => ((x >> 10) & 63) === 41).map((x) => cti[x]);\n /*\n\tthe combination tracks the centre pieces at indices\n\t0, 1, 2, 3, 4, 5, 7, 8, 10, 11\n\tin little endian order.\n\tright-shifting 10 bits changes this to\n\t5, 7, 8, 10, 11\n\tand masking by 63 keeps only the three least significant digits\n\t5, 7, 8\n\twhich are exactly the pieces we're solving in this phase.\n\t1 + 4 * 2 + 4**2 * 2 = 41\n\tWARNING: this needs to be adjusted if the centre indexing is changed\n\t(also, this returns a Uint32Array, but nothing we do here can possibly cause overflow so\n\tthat's not a problem)\n\t*/\n}\n\nfunction phase2_corner_goal_states() {\n let mtable = generate_phase2_corner_mtable();\n let N = mtable[0].length;\n let flags = Array(N).fill(false);\n flags[0] = true; /* index 0 is the solved state */\n let done = false;\n while (!done) {\n done = true;\n for (let i = 0; i < N; i++) {\n if (flags[i]) {\n if (!flags[mtable[0][i]]) {\n done = false;\n flags[mtable[0][i]] = true;\n }\n if (!flags[mtable[1][i]]) {\n done = false;\n flags[mtable[1][i]] = true;\n }\n }\n }\n }\n return flags.map((_, i) => i).filter((i) => flags[i]);\n}\n\nfunction generate_phase2_ace_ptable() {\n if (cached_ptables.phase2_ace) {\n return cached_ptables.phase2_ace;\n }\n const [mtable_a, mtable_b] = generate_phase2_centre_mtables();\n const mtable_ce = generate_phase2_ce_mtable();\n const Na = 2520;\n const Nce = 40 * 336;\n const N = Na * Nce; // = 33868800\n const ce_solved = index_phase2(solved_state)[2];\n const max_depth = 9;\n let ptable = new Int8Array(N).fill(max_depth);\n for (let a_solved of phase2_centre_goal_states()) {\n ptable[a_solved + Na * ce_solved] = 0;\n }\n for (let depth = 0; depth < max_depth - 1; depth++) {\n for (\n let state = ptable.indexOf(depth);\n state !== -1;\n state = ptable.indexOf(depth, state + 1)\n ) {\n let a = state % Na;\n let ce = (state / Na) | 0;\n for (let move_index = 0; move_index < 4; move_index++) {\n let new_a = mtable_a[move_index][a];\n let new_ce = mtable_ce[move_index][ce];\n let new_state = new_a + Na * new_ce;\n if (ptable[new_state] === max_depth) {\n ptable[new_state] = depth + 1;\n }\n new_a = mtable_a[move_index][new_a];\n new_ce = mtable_ce[move_index][new_ce];\n new_state = new_a + Na * new_ce;\n if (ptable[new_state] === max_depth) {\n ptable[new_state] = depth + 1;\n }\n }\n }\n }\n // don't bother filling in the table for depth >=10; this saves a substantial amount of time\n // on startup at a slight cost of pruning effectiveness\n return (cached_ptables.phase2_ace = ptable);\n}\n\nfunction* phase2_ida_solve_gen(indices, moves_left) {\n let [mtable_a, mtable_b] = generate_phase2_centre_mtables();\n let mtable_ce = generate_phase2_ce_mtable();\n let ptable_ace = generate_phase2_ace_ptable();\n let mirror_map = generate_phase2_ce_mirror_map();\n let [a, b, ce] = indices;\n let ce_mirror = mirror_map[ce];\n let bound = Math.max(\n ptable_ace[a + 2520 * ce],\n ptable_ace[b + 2520 * ce_mirror],\n );\n while (bound <= moves_left) {\n //console.log(`searching depth ${bound}`);\n yield* phase2_ida_search_gen(\n a,\n b,\n ce,\n mtable_a,\n mtable_b,\n mtable_ce,\n ptable_ace,\n mirror_map,\n bound,\n -1,\n );\n bound++;\n }\n}\n\nfunction* phase2_ida_search_gen(\n a,\n b,\n ce,\n mtable_a,\n mtable_b,\n mtable_ce,\n ptable_ace,\n mirror_map,\n bound,\n last,\n) {\n let h = Math.max(\n ptable_ace[a + 2520 * ce],\n ptable_ace[b + 2520 * mirror_map[ce]],\n );\n if (h > bound) {\n return;\n }\n if (bound === 0) {\n yield [];\n return;\n } else if (h === 0) {\n return;\n }\n for (let m = 0; m < 4; m++) {\n if (m === last) {\n continue;\n }\n let new_a = a;\n let new_b = b;\n let new_ce = ce;\n for (let r = 1; r <= 2; r++) {\n new_a = mtable_a[m][new_a];\n new_b = mtable_b[m][new_b];\n new_ce = mtable_ce[m][new_ce];\n let subpath_gen = phase2_ida_search_gen(\n new_a,\n new_b,\n new_ce,\n mtable_a,\n mtable_b,\n mtable_ce,\n ptable_ace,\n mirror_map,\n bound - 1,\n m,\n );\n while (true) {\n let { value: subpath, done } = subpath_gen.next();\n if (done) {\n break;\n }\n yield [[m, r]].concat(subpath);\n }\n }\n }\n}\n\n/* Phase 3 mostly-2-gen stuff */\n\nlet phase3_2gen_centre_indices = [0, 1, 2, 3, 4, 10, 11];\n\nlet phase3_2gen_keep = [\n true,\n true,\n true,\n true,\n true,\n false,\n false,\n false,\n false,\n false,\n true,\n true,\n];\n\nlet phase3_2gen_move_seqs = [\n [[0, 1]], // U\n [[1, 1]], // L\n\n // F U R U' R' F'\n [\n [2, 1],\n [0, 1],\n [3, 1],\n [0, 2],\n [3, 2],\n [2, 2],\n ],\n [\n [3, 2],\n [1, 2],\n [2, 2],\n [1, 1],\n [2, 1],\n [3, 1],\n ],\n [\n [6, 1],\n [0, 1],\n [3, 1],\n [0, 2],\n [3, 2],\n [6, 2],\n ],\n [\n [7, 2],\n [1, 2],\n [2, 2],\n [1, 1],\n [2, 1],\n [7, 1],\n ],\n\n // F U F' U F U F'\n [\n [2, 1],\n [0, 1],\n [2, 2],\n [0, 1],\n [2, 1],\n [0, 1],\n [2, 2],\n ],\n [\n [3, 2],\n [1, 1],\n [3, 1],\n [1, 1],\n [3, 2],\n [1, 1],\n [3, 1],\n ],\n\n // F R F' L' U' F R F'\n [\n [2, 1],\n [3, 1],\n [2, 2],\n [1, 2],\n [0, 2],\n [2, 1],\n [3, 1],\n [2, 2],\n ],\n [\n [3, 2],\n [2, 2],\n [3, 1],\n [0, 1],\n [1, 1],\n [3, 2],\n [2, 2],\n [3, 1],\n ],\n [\n [6, 1],\n [0, 1],\n [6, 2],\n [0, 2],\n [1, 2],\n [6, 1],\n [0, 1],\n [6, 2],\n ],\n [\n [7, 2],\n [1, 2],\n [7, 1],\n [1, 1],\n [0, 1],\n [7, 2],\n [1, 2],\n [7, 1],\n ],\n\n // F R' F' R U F' L F\n [\n [2, 1],\n [3, 2],\n [2, 2],\n [3, 1],\n [0, 1],\n [2, 2],\n [1, 1],\n [2, 1],\n ],\n [\n [3, 2],\n [2, 1],\n [3, 1],\n [2, 2],\n [1, 2],\n [3, 1],\n [0, 2],\n [3, 2],\n ],\n [\n [6, 1],\n [0, 2],\n [6, 2],\n [7, 1],\n [6, 1],\n [1, 2],\n [7, 1],\n [6, 1],\n ],\n [\n [7, 2],\n [1, 1],\n [7, 1],\n [6, 2],\n [7, 2],\n [0, 1],\n [6, 2],\n [7, 2],\n ],\n\n // F' L' F' R' F' R' U' R'\n [\n [2, 2],\n [1, 2],\n [2, 2],\n [3, 2],\n [2, 2],\n [3, 2],\n [0, 2],\n [3, 2],\n ],\n [\n [6, 2],\n [7, 2],\n [1, 2],\n [0, 2],\n [1, 2],\n [0, 2],\n [6, 2],\n [7, 2],\n ],\n /*\n[[2,1], [0,2], [2,2], [0,2], [2,1], [3,1], [0,2], [3,2], [2,2]], // F U' F' U' F R U' R' F'\n[[3,2], [1,1], [3,1], [1,1], [3,2], [2,2], [1,1], [2,1], [3,1]], // R' L R L R' F' L F R\n[[6,1], [3,2], [6,2], [1,2], [6,1], [0,1], [3,2], [0,2], [6,2]], // f R' f' L' f U R' U' f'\n[[7,2], [2,1], [7,1], [0,1], [7,2], [1,2], [2,1], [1,1], [7,1]], // r' F r U r' L' F L r\n[[2,1], [0,1], [3,1], [0,2], [3,2], [0,1], [3,1], [0,2], [3,2], [2,2]], // F (U R U' R')2 F'\n[[3,2], [1,2], [2,2], [1,1], [2,1], [1,2], [2,2], [1,1], [2,1], [3,1]], // R' (L' F' L F)2 R\n[[6,1], [0,1], [3,1], [0,2], [3,2], [0,1], [3,1], [0,2], [3,2], [6,2]], // f (U R U' R')2 f'\n[[7,2], [1,2], [2,2], [1,1], [2,1], [1,2], [2,2], [1,1], [2,1], [7,1]], // r' (L' F' L F)2 r\n*/\n];\nphase3_2gen_move_seqs = phase3_2gen_move_seqs.concat(\n phase3_2gen_move_seqs.map((seq) => invert_move_sequence(seq)),\n);\nlet phase3_2gen_nmoves = phase3_2gen_move_seqs.length; // = 36\n/*\nThe moves we're using for this phase:\nU\nL\nF U R U' R' F'\nR' L' F' L F R\nf U R U' R' f'\nr' L' F' L F r\nF U F' U F U F' (= F' U F U F' U F = r' F r U r' F r = r l U' l F l r')\nR' L R L R' L R (= R L R' L R L R' = f R f' L f R f' = f' u R u L' u f)\n\nF R F' L' U' F R F'\nR' F' R U L R' F' R\nf U f' U' L' f U f'\nr' L' r L U r' L' r\n\nF R' F' R U F' L F\nR' F R F' L' R U' R'\nf U' f' r f L' r f\nr' L r f' r' U f' r'\n\nF' L' F' R' F' R' U' R'\nf' r' L' U' L' U' f' r'\n\nand the inverses of the above\n\nThese are the atomic 4-gen move sequences of length <= 8 where the induced permutations lie in the\n<U,L> group (verified with GAP, barring transcription errors).\n\nTemporarily going out of LU 2-gen can sometimes save _many_ moves, e.g. the F R U R' U' F' scramble\nobviously has a 6-move 4-gen solution (F U R U' R' F'), but the optimal 2-gen solution is 24 moves:\nU L' U L' U' L' U' L U' L U L' U L' U L U L' U' L U' L U L'.\n*/\n\nlet phase3_2gen_facelet_permutations = phase3_2gen_move_seqs.map(\n (seq) => apply_move_sequence(permutation_from_cycles([], 72), seq),\n);\nlet phase3_2gen_piece_permutations = phase3_2gen_facelet_permutations.map(\n convert_move_to_permutations,\n);\nlet phase3_2gen_move_orders =\n phase3_2gen_facelet_permutations.map(permutation_order);\n\nfunction index_phase3_2gen(facelets) {\n let [itc, cti] = generate_comb4_lookup_tables(7, 3, 2, 0, 2);\n let ep = Array(5)\n .fill()\n .map((_, i) => get_edge_piece(facelets, i));\n let edge_coord = evenpermutation_to_index(ep);\n let corners = Array(4)\n .fill()\n .map((_, i) => get_corner_piece(facelets, i));\n let corner_coord =\n evenpermutation_to_index(corners.map((x) => x[0])) * 2 +\n corners.find((x) => x[0] === 0)[1];\n let [a_coord, b_coord] = [centreA_piece_facelets, centreB_piece_facelets].map(\n (facelet_indices) => {\n let arr = compose(facelet_indices, phase3_2gen_centre_indices).map(\n (x) => facelets[x] % 4,\n );\n return cti[arr.reduce((acc, x, j) => acc | (x << (2 * j)), 0)];\n },\n );\n return [a_coord + 210 * b_coord, corner_coord + 24 * edge_coord];\n}\n\nfunction generate_phase3_2gen_edge_mtable() {\n if (cached_mtables.phase3_2gen_edge) {\n return cached_mtables.phase3_2gen_edge;\n }\n const HALFFACT5 = factorial(5) / 2; // = 60\n let mtable = Array(phase3_2gen_nmoves)\n .fill()\n .map(() => new Uint32Array(HALFFACT5));\n let permutations = phase3_2gen_piece_permutations.map(\n (x) => x.ep.slice(0, 5),\n );\n for (let i = 0; i < HALFFACT5; i++) {\n let p = index_to_evenpermutation(i, 5);\n for (let m = 0; m < phase3_2gen_nmoves; m++) {\n mtable[m][i] = evenpermutation_to_index(compose(p, permutations[m]));\n }\n }\n return (cached_mtables.phase3_2gen_edge = mtable);\n}\n\n// the group of corner states is the binary tetrahedral group 2T, where |2T| = 24\nfunction generate_phase3_2gen_corner_mtable() {\n if (cached_mtables.phase3_2gen_corner) {\n return cached_mtables.phase3_2gen_corner;\n }\n const HALFFACT4 = factorial(4) / 2; // = 12\n const N = HALFFACT4 * 2; // = 24\n const keep = [\n true,\n true,\n true,\n true,\n false,\n false,\n true,\n true,\n true,\n true,\n false,\n false,\n ];\n let mtable = Array(phase3_2gen_nmoves)\n .fill()\n .map(() => new Uint32Array(N));\n let permutations = phase3_2gen_piece_permutations.map(\n (x) => reduce_permutation(x.cp, keep).slice(0, 4),\n );\n for (let i = 0; i < N; i += 2) {\n let p = index_to_evenpermutation(i >> 1, 4);\n let cp = p.concat(p.map((x) => x + 4));\n for (let m = 0; m < phase3_2gen_nmoves; m++) {\n let cp2 = compose(cp, permutations[m]);\n let p2 = cp2.map((x) => x % 4);\n let o2 = cp2.find((x) => x % 4 === 0) >> 2;\n mtable[m][i] = evenpermutation_to_index(p2) * 2 + o2;\n mtable[m][i + 1] = evenpermutation_to_index(p2) * 2 + (o2 ^ 1);\n }\n }\n return (cached_mtables.phase3_2gen_corner = mtable);\n}\n\nfunction generate_phase3_2gen_corneredge_mtable() {\n if (cached_mtables.phase3_2gen_corneredge) {\n return cached_mtables.phase3_2gen_corneredge;\n }\n return (cached_mtables.phase3_2gen_corneredge = combine_mtables(\n generate_phase3_2gen_corner_mtable(),\n generate_phase3_2gen_edge_mtable(),\n ));\n}\n\nfunction generate_phase3_2gen_centre_mtable() {\n if (cached_mtables.phase3_2gen_centre) {\n return cached_mtables.phase3_2gen_centre;\n }\n let mtable_a = generate_mtable_comb4_generic(\n 7,\n 3,\n 2,\n 0,\n 2,\n phase3_2gen_piece_permutations.map(\n (x) => reduce_permutation(x.ap, phase3_2gen_keep),\n ),\n );\n let mtable_b = generate_mtable_comb4_generic(\n 7,\n 3,\n 2,\n 0,\n 2,\n phase3_2gen_piece_permutations.map(\n (x) => reduce_permutation(x.bp, phase3_2gen_keep),\n ),\n );\n cached_mtables.phase3_2gen_centreA = mtable_a;\n cached_mtables.phase3_2gen_centreB = mtable_b;\n return (cached_mtables.phase3_2gen_centre = combine_mtables(\n mtable_a,\n mtable_b,\n ));\n}\n\nlet phase3_2gen_depth_table;\nfunction generate_phase3_2gen_depth_table() {\n if (phase3_2gen_depth_table) {\n return phase3_2gen_depth_table;\n }\n const mtable_ab = generate_phase3_2gen_centre_mtable();\n const mtable_ce = generate_phase3_2gen_corneredge_mtable();\n const Nab = mtable_ab[0].length; // = 44100\n const Nce = mtable_ce[0].length; // = 1440\n const N = Nab * Nce; // = 63504000\n const max_depth = 25; // pre-determined; hard-coding this makes the algorithm a bit faster\n const all_weights = phase3_2gen_move_seqs.map((seq) => seq.length);\n const table = new Int8Array(N).fill(max_depth);\n const solved_indices = index_phase3_2gen(solved_state);\n table[solved_indices[0] + Nab * solved_indices[1]] = 0;\n let depth = 0;\n let done = false;\n while (!done && depth < max_depth - 1) {\n done = true;\n //console.log(`scanning depth ${depth}`);\n let move_indices = Array(phase3_2gen_nmoves)\n .fill()\n .map((x, i) => i)\n .filter((m) => all_weights[m] + depth < max_depth);\n move_indices.sort((m, mm) => all_weights[m] - all_weights[mm]);\n let weights = compose(all_weights, move_indices);\n let mtable_ab_pruned = compose(mtable_ab, move_indices);\n let mtable_ce_pruned = compose(mtable_ce, move_indices);\n let nmoves = move_indices.length;\n //console.log(move_indices);\n for (\n let state = table.indexOf(depth);\n state !== -1;\n state = table.indexOf(depth, state + 1)\n ) {\n let ab = state % Nab;\n let ce = (state / Nab) | 0;\n for (let mi = 0; mi < nmoves; mi++) {\n let weight = weights[mi];\n let new_ab = mtable_ab_pruned[mi][ab];\n let new_ce = mtable_ce_pruned[mi][ce];\n let new_state = new_ab + Nab * new_ce;\n if (table[new_state] > depth + weight) {\n done = false;\n table[new_state] = depth + weight;\n }\n }\n }\n depth++;\n }\n return (phase3_2gen_depth_table = table);\n}\n\nlet phase3_2gen_ace_table;\nfunction generate_phase3_2gen_ace_table() {\n if (phase3_2gen_ace_table) {\n return phase3_2gen_ace_table;\n }\n const mtable_ab = generate_phase3_2gen_centre_mtable();\n const mtable_a = cached_mtables.phase3_2gen_centreA;\n const mtable_ce = generate_phase3_2gen_corneredge_mtable();\n const Na = mtable_a[0].length; // = 210\n const Nce = mtable_ce[0].length; // = 1440\n const N = Na * Nce; // = 302400\n const max_depth = 25; // pre-determined; hard-coding this makes the algorithm a bit faster\n const all_weights = phase3_2gen_move_seqs.map((seq) => seq.length);\n const table = new Int8Array(N).fill(max_depth);\n const solved_indices = index_phase3_2gen(solved_state);\n table[(solved_indices[0] % Na) + Na * solved_indices[1]] = 0;\n let depth = 0;\n let done = false;\n while (!done && depth < max_depth - 1) {\n done = true;\n //console.log(`scanning depth ${depth}`);\n let move_indices = Array(phase3_2gen_nmoves)\n .fill()\n .map((x, i) => i)\n .filter((m) => all_weights[m] + depth < max_depth);\n move_indices.sort((m, mm) => all_weights[m] - all_weights[mm]);\n let weights = compose(all_weights, move_indices);\n let mtable_a_pruned = compose(mtable_a, move_indices);\n let mtable_ce_pruned = compose(mtable_ce, move_indices);\n let nmoves = move_indices.length;\n //console.log(move_indices);\n for (\n let state = table.indexOf(depth);\n state !== -1;\n state = table.indexOf(depth, state + 1)\n ) {\n let a = state % Na;\n let ce = (state / Na) | 0;\n for (let mi = 0; mi < nmoves; mi++) {\n let weight = weights[mi];\n let new_a = mtable_a_pruned[mi][a];\n let new_ce = mtable_ce_pruned[mi][ce];\n let new_state = new_a + Na * new_ce;\n if (table[new_state] > depth + weight) {\n done = false;\n table[new_state] = depth + weight;\n }\n }\n }\n depth++;\n }\n return (phase3_2gen_ace_table = table);\n}\n\nlet phase3_2gen_ce_mirror_map;\nfunction generate_phase3_2gen_ce_mirror_map() {\n if (phase3_2gen_ce_mirror_map) {\n return phase3_2gen_ce_mirror_map;\n }\n const mtable_ce = generate_phase3_2gen_corneredge_mtable().slice(0, 2);\n const solved_indices = index_phase3_2gen(solved_state);\n return (phase3_2gen_ce_mirror_map = generate_mirrored_coordinate_table(\n mtable_ce,\n solved_indices[1],\n solved_indices[1],\n ));\n}\n\n/*\nfunction solve_phase3_2gen(facelets, indices=index_phase3_2gen(facelets), simplify=true)\n{\n\tlet [ab, ce] = indices;\n\tlet Nab = 44100;\n\tlet mtable_ab = generate_phase3_2gen_centre_mtable();\n\tlet mtable_ce = generate_phase3_2gen_corneredge_mtable();\n\tlet depth_table = generate_phase3_2gen_depth_table();\n\tlet seq = [];\n\twhile (depth_table[ab + Nab*ce] > 0)\n\t{\n\t\tlet distance = depth_table[ab + Nab*ce];\n\t\tfor (let m = 0; m < phase3_2gen_nmoves; m++)\n\t\t{\n\t\t\tlet new_ab = mtable_ab[m][ab];\n\t\t\tlet new_ce = mtable_ce[m][ce];\n\t\t\tlet new_distance = depth_table[new_ab + Nab*new_ce];\n\t\t\tif (new_distance === distance-phase3_2gen_move_seqs[m].length)\n\t\t\t{\n\t\t\t\tseq = seq.concat(phase3_2gen_move_seqs[m]);\n\t\t\t\tab = new_ab;\n\t\t\t\tce = new_ce;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\treturn simplify ? simplify_move_sequence(seq) : seq;\n}\n*/\n\nfunction solve_phase3_2gen(facelets, indices = index_phase3_2gen(facelets)) {\n //const THRESHOLD = 31;\n let [ab, ce] = indices;\n let a = ab % 210;\n let b = Math.floor(ab / 210);\n let mtable_ab = generate_phase3_2gen_centre_mtable();\n let mtable_a = cached_mtables.phase3_2gen_centreA;\n let mtable_b = cached_mtables.phase3_2gen_centreB;\n let mtable_ce = generate_phase3_2gen_corneredge_mtable();\n let ace_table = generate_phase3_2gen_ace_table();\n let mirror_map_ce = generate_phase3_2gen_ce_mirror_map();\n let bound = 0;\n while (true) {\n let gen = solve_phase3_2gen_ida(\n a,\n b,\n ce,\n mtable_a,\n mtable_b,\n mtable_ce,\n ace_table,\n mirror_map_ce,\n bound,\n );\n for (let solution of gen) {\n return solution.map((m) => phase3_2gen_move_seqs[m]).flat();\n }\n bound++;\n }\n}\n\nfunction solve_phase3_2gen_readable(\n facelets,\n indices = index_phase3_2gen(facelets),\n) {\n //const THRESHOLD = 31;\n let [ab, ce] = indices;\n let a = ab % 210;\n let b = Math.floor(ab / 210);\n let mtable_ab = generate_phase3_2gen_centre_mtable();\n let mtable_a = cached_mtables.phase3_2gen_centreA;\n let mtable_b = cached_mtables.phase3_2gen_centreB;\n let mtable_ce = generate_phase3_2gen_corneredge_mtable();\n //let depth_table = generate_phase3_2gen_depth_table();\n let ace_table = generate_phase3_2gen_ace_table();\n let mirror_map_ce = generate_phase3_2gen_ce_mirror_map();\n let initial = solve_phase3_2gen(facelets).length;\n let best_score = Infinity;\n let best_solution;\n //console.log(`initial: ${initial}`);\n for (let bound = initial; bound <= initial + 0; bound++) {\n let gen = solve_phase3_2gen_ida(\n a,\n b,\n ce,\n mtable_a,\n mtable_b,\n mtable_ce,\n ace_table,\n mirror_map_ce,\n bound,\n );\n for (let solution of gen) {\n let expanded = solution.map((m) => phase3_2gen_move_seqs[m]).flat();\n let simplified = simplify_move_sequence(expanded);\n let score = grade_readability(simplified);\n if (score < best_score) {\n best_score = score;\n best_solution = simplified;\n //console.log(`${score} ${stringify_move_sequence(simplified, true)}`);\n //if (score <= THRESHOLD) {break search;}\n }\n }\n }\n return best_solution;\n}\n\nfunction alternation_penalty(x) {\n return ((x - 1) * (x - 2)) / 2;\n // A B A B A costs 1\n // A B A B A B costs 3\n // A B A B A B A costs 6\n // A B A B A B A B costs 10\n // etc.\n // this should be chosen to be a convex function\n}\n\nfunction grade_readability(seq) {\n let nowide = stringify_move_sequence(seq, true).replace(/'/g, \"\").split(\" \");\n return (\n seq.length +\n alternations(nowide)\n .map(alternation_penalty)\n .reduce((x, y) => x + y, 0)\n );\n}\n\nfunction alternations(seq) {\n // return a list of \"alternating\" run lengths\n // convention:\n // A B does not count\n // A B A counts as length 1\n // A B A B counts as length 2\n // A B A B A counts as length 3\n // etc.\n if (seq.length < 3) {\n return [];\n }\n let n = seq.length;\n let a = [];\n for (let i = 0; i < n - 2; i++) {\n a[i] = seq[i] === seq[i + 2];\n }\n a.push(false);\n let i = -1;\n let runs = [];\n while (i < n - 2) {\n i = a.indexOf(true, i + 1);\n if (i === -1) {\n break;\n }\n let j = a.indexOf(false, i + 1);\n runs.push(j - i);\n i = j;\n }\n return runs;\n}\n\nfunction* solve_phase3_2gen_ida(\n a,\n b,\n ce,\n mtable_a,\n mtable_b,\n mtable_ce,\n ace_table,\n mirror_map_ce,\n bound,\n last = -1,\n) {\n let h_ace = ace_table[a + 210 * ce];\n let h_bce = ace_table[b + 210 * mirror_map_ce[ce]];\n let h = Math.max(h_ace, h_bce);\n //console.log(h_ace, h_bce, bound);\n if (h > bound) {\n return;\n }\n if (bound === 0) {\n yield [];\n return;\n }\n if (h === 0) {\n return;\n } // this solution includes redundant moves\n for (let m = 0; m < phase3_2gen_nmoves; m++) {\n if (m === last && phase3_2gen_move_orders[m] <= 3) {\n continue;\n }\n let new_a = mtable_a[m][a];\n let new_b = mtable_b[m][b];\n let new_ce = mtable_ce[m][ce];\n let new_bound = bound - phase3_2gen_move_seqs[m].length;\n if (new_bound < 0) {\n continue;\n }\n let subpath_gen = solve_phase3_2gen_ida(\n new_a,\n new_b,\n new_ce,\n mtable_a,\n mtable_b,\n mtable_ce,\n ace_table,\n mirror_map_ce,\n new_bound,\n m,\n );\n while (true) {\n let { value: subpath, done } = subpath_gen.next();\n if (done) {\n break;\n }\n yield [m].concat(subpath);\n }\n }\n}\n\n/* Some glue code */\n\nfunction solve_phase2_and_phase3_fast(\n facelets,\n phase2_attempts = 200,\n cap = 24,\n) {\n let pool = [];\n let gen = solve_phase2_gen(facelets);\n let facelets_t2 = compose(facelets, move_X).map((x) => x ^ 1);\n let gen_t2 = solve_phase2_gen(facelets_t2);\n let best = Array(1000);\n // phase 2 always takes <= 15 moves and phase 3 <= 25 moves, so this is a safe upper bound\n for (let i = 0; i < phase2_attempts; i++) {\n {\n let { value, done } = gen.next();\n if (!done) {\n let intermediate_facelets = apply_move_sequence(facelets, value);\n let solution = value.concat(solve_phase3_2gen(intermediate_facelets));\n if (solution.length <= cap) {\n return solution;\n } else if (solution.length < best.length) {\n best = solution;\n }\n }\n }\n {\n let { value, done } = gen_t2.next();\n if (!done) {\n let intermediate_facelets = apply_move_sequence(facelets_t2, value);\n let solution = value.concat(\n solve_phase3_2gen(intermediate_facelets),\n ).map(([m, r]) => [m ^ 2, r]);\n if (solution.length <= cap) {\n return solution;\n } else if (solution.length < best.length) {\n best = solution;\n }\n }\n }\n }\n return best;\n}\n\nfunction solve_phase2_and_phase3_readable(\n facelets,\n phase2_attempts = 20,\n cap = 30,\n) {\n let pool = [];\n let gen = solve_phase2_gen(facelets);\n let facelets_t2 = compose(facelets, move_X).map((x) => x ^ 1);\n let gen_t2 = solve_phase2_gen(facelets_t2);\n let best;\n let best_score = Infinity;\n for (let i = 0; i < phase2_attempts; i++) {\n {\n let { value, done } = gen.next();\n if (!done) {\n let intermediate_facelets = apply_move_sequence(facelets, value);\n let solution = simplify_move_sequence(\n value.concat(solve_phase3_2gen_readable(intermediate_facelets)),\n );\n let score = grade_readability(solution);\n if (score <= cap) {\n return solution;\n } else if (score < best_score) {\n best = solution;\n best_score = score;\n }\n }\n }\n {\n let { value, done } = gen_t2.next();\n if (!done) {\n let intermediate_facelets = apply_move_sequence(facelets_t2, value);\n let solution = simplify_move_sequence(\n value.concat(solve_phase3_2gen_readable(intermediate_facelets)),\n );\n solution = solution.map(([m, r]) => [m ^ 2, r]);\n let score = grade_readability(solution);\n if (score <= cap) {\n return solution;\n } else if (score < best_score) {\n best = solution;\n best_score = score;\n }\n }\n }\n }\n return best;\n}\n\nconst randomUintBelow = randomUIntBelowFactory();\nexport async function randomFTOScrambleString() {\n return generate_random_state_scramble(await randomUintBelow);\n}\n"],
|
|
5
|
-
"mappings": "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GAAG,CAAC;AAAA,EACP;AAAA,EACA;AAAA,IACE,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,EACP;AAAA,EAGA;AAAA,IACE,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,EACP;AAAA,EACA;AAAA,IACE,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,EACP;AAAA,EACA;AAAA,IACE,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,EACP;AAAA,EACA;AAAA,IACE,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,EACP;AAAA,EAGA;AAAA,IACE,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,EACP;AAAA,EACA;AAAA,IACE,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,EACP;AAAA,EACA;AAAA,IACE,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,EACP;AAAA,EACA;AAAA,IACE,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,EACP;AAAA,EAGA;AAAA,IACE,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,EACP;AAAA,EACA;AAAA,IACE,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,CAAC;AAAA,IACL,CAAC,GAAG,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",
|
|
6
|
-
"names": ["evenpermutation8_to_index", "index_to_evenpermutation8", "randomUintBelow", "C", "randomUintBelow", "randomUintBelow", "i"]
|
|
7
|
-
}
|