cubing 0.25.7 → 0.25.10

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.
Files changed (121) hide show
  1. package/dist/esm/{2x2x2.kpuzzle.json-RUB44MJV.js → 2x2x2.kpuzzle.json-BHTFIME6.js} +2 -2
  2. package/dist/esm/{2x2x2.kpuzzle.json-RUB44MJV.js.map → 2x2x2.kpuzzle.json-BHTFIME6.js.map} +0 -0
  3. package/dist/esm/{2x2x2.kpuzzle.svg-CQF2FTV7.js → 2x2x2.kpuzzle.svg-CYX37VBY.js} +2 -2
  4. package/dist/esm/{2x2x2.kpuzzle.svg-CQF2FTV7.js.map → 2x2x2.kpuzzle.svg-CYX37VBY.js.map} +0 -0
  5. package/dist/esm/{2x2x2.sgs.json-3ZT7QXX6.js → 2x2x2.sgs.json-CLGNVWIM.js} +6 -6
  6. package/dist/esm/{2x2x2.sgs.json-3ZT7QXX6.js.map → 2x2x2.sgs.json-CLGNVWIM.js.map} +0 -0
  7. package/dist/esm/{3d-dynamic-PTVO24C3.js → 3d-dynamic-5LHE6HI6.js} +8 -8
  8. package/dist/esm/{3d-dynamic-PTVO24C3.js.map → 3d-dynamic-5LHE6HI6.js.map} +1 -1
  9. package/dist/esm/{3x3x3-ll.kpuzzle.svg-53CBPG5O.js → 3x3x3-ll.kpuzzle.svg-KZNSV76X.js} +2 -2
  10. package/dist/esm/{3x3x3-ll.kpuzzle.svg-53CBPG5O.js.map → 3x3x3-ll.kpuzzle.svg-KZNSV76X.js.map} +0 -0
  11. package/dist/esm/{3x3x3-min2phase-FPRJ5PCJ.js → 3x3x3-min2phase-UBW46KDU.js} +2 -2
  12. package/dist/esm/{3x3x3-min2phase-FPRJ5PCJ.js.map → 3x3x3-min2phase-UBW46KDU.js.map} +0 -0
  13. package/dist/esm/{3x3x3.kpuzzle.svg-ERSSH66P.js → 3x3x3.kpuzzle.svg-5U7LUACF.js} +2 -2
  14. package/dist/esm/{3x3x3.kpuzzle.svg-ERSSH66P.js.map → 3x3x3.kpuzzle.svg-5U7LUACF.js.map} +0 -0
  15. package/dist/esm/{444-solver-BYA4CXZO.js → 444-solver-SFZ7V6NL.js} +7 -7
  16. package/dist/esm/{444-solver-BYA4CXZO.js.map → 444-solver-SFZ7V6NL.js.map} +0 -0
  17. package/dist/esm/alg/index.js +2 -2
  18. package/dist/esm/bluetooth/index.js +5 -5
  19. package/dist/esm/{chunk-RENZB7QN.js → chunk-43SBQEWR.js} +5 -2
  20. package/dist/esm/chunk-43SBQEWR.js.map +7 -0
  21. package/dist/esm/{chunk-JGAZXWH2.js → chunk-4SXK3FSU.js} +6 -6
  22. package/dist/esm/{chunk-JGAZXWH2.js.map → chunk-4SXK3FSU.js.map} +1 -1
  23. package/dist/esm/{chunk-ANYSPBCR.js → chunk-6BUCXDZU.js} +3 -3
  24. package/dist/esm/{chunk-ANYSPBCR.js.map → chunk-6BUCXDZU.js.map} +0 -0
  25. package/dist/esm/{chunk-JW2JE4D3.js → chunk-C6I4KFI2.js} +4 -4
  26. package/dist/esm/{chunk-JW2JE4D3.js.map → chunk-C6I4KFI2.js.map} +0 -0
  27. package/dist/esm/{chunk-EWRBHQFX.js → chunk-DO7GZAW4.js} +35 -35
  28. package/dist/esm/{chunk-EWRBHQFX.js.map → chunk-DO7GZAW4.js.map} +1 -1
  29. package/dist/esm/{chunk-27KJGD3S.js → chunk-FB7SFELN.js} +2 -2
  30. package/dist/esm/{chunk-27KJGD3S.js.map → chunk-FB7SFELN.js.map} +0 -0
  31. package/dist/esm/{chunk-IVQ4ITE2.js → chunk-GBMX6FHY.js} +2 -2
  32. package/dist/esm/{chunk-IVQ4ITE2.js.map → chunk-GBMX6FHY.js.map} +1 -1
  33. package/dist/esm/{chunk-WO2AXYFE.js → chunk-MGJA5U5O.js} +1 -1
  34. package/dist/esm/{chunk-WO2AXYFE.js.map → chunk-MGJA5U5O.js.map} +0 -0
  35. package/dist/esm/{chunk-U2TSTTDG.js → chunk-NSLR2SC4.js} +2 -2
  36. package/dist/esm/{chunk-U2TSTTDG.js.map → chunk-NSLR2SC4.js.map} +0 -0
  37. package/dist/esm/{chunk-F5WNHV7V.js → chunk-ODQRVWJB.js} +3 -3
  38. package/dist/esm/{chunk-F5WNHV7V.js.map → chunk-ODQRVWJB.js.map} +1 -1
  39. package/dist/esm/{chunk-OAPHPP4R.js → chunk-OFGQQQBY.js} +4 -4
  40. package/dist/esm/{chunk-OAPHPP4R.js.map → chunk-OFGQQQBY.js.map} +0 -0
  41. package/dist/esm/{chunk-CNIY6YZL.js → chunk-QKEGKHT5.js} +106 -103
  42. package/dist/esm/chunk-QKEGKHT5.js.map +7 -0
  43. package/dist/esm/{chunk-ZIHFCBOI.js → chunk-RREJ3MSB.js} +3 -3
  44. package/dist/esm/{chunk-ZIHFCBOI.js.map → chunk-RREJ3MSB.js.map} +0 -0
  45. package/dist/esm/{chunk-HFQZM22L.js → chunk-XBH5IPB2.js} +14 -8
  46. package/dist/esm/chunk-XBH5IPB2.js.map +7 -0
  47. package/dist/esm/{chunk-MVKZPDII.js → chunk-YAOUFM4D.js} +5 -5
  48. package/dist/esm/{chunk-MVKZPDII.js.map → chunk-YAOUFM4D.js.map} +1 -1
  49. package/dist/esm/{chunk-NROLOGGL.js → chunk-Z35CBICW.js} +6 -6
  50. package/dist/esm/{chunk-NROLOGGL.js.map → chunk-Z35CBICW.js.map} +0 -0
  51. package/dist/esm/{chunk-WDJDRVZZ.js → chunk-ZPAGJE7S.js} +6 -3
  52. package/dist/esm/{chunk-WDJDRVZZ.js.map → chunk-ZPAGJE7S.js.map} +2 -2
  53. package/dist/esm/{clock.kpuzzle.json-BQKNKV3G.js → clock.kpuzzle.json-PYHONPBY.js} +2 -2
  54. package/dist/esm/{clock.kpuzzle.json-BQKNKV3G.js.map → clock.kpuzzle.json-PYHONPBY.js.map} +0 -0
  55. package/dist/esm/{clock.kpuzzle.svg-B7TMN3SY.js → clock.kpuzzle.svg-JSRDCSQF.js} +2 -2
  56. package/dist/esm/{clock.kpuzzle.svg-B7TMN3SY.js.map → clock.kpuzzle.svg-JSRDCSQF.js.map} +0 -0
  57. package/dist/esm/{fto-solver-HI6NIV74.js → fto-solver-TOOJNOZB.js} +3 -3
  58. package/dist/esm/{fto-solver-HI6NIV74.js.map → fto-solver-TOOJNOZB.js.map} +0 -0
  59. package/dist/esm/{fto.dynamic-FLX5JKRG.js → fto.dynamic-3MSUIE4Q.js} +7 -7
  60. package/dist/esm/{fto.dynamic-FLX5JKRG.js.map → fto.dynamic-3MSUIE4Q.js.map} +0 -0
  61. package/dist/esm/fto.kpuzzle.svg-H2RJX6UR.js +102 -0
  62. package/dist/esm/fto.kpuzzle.svg-H2RJX6UR.js.map +7 -0
  63. package/dist/esm/{kilominx.kpuzzle.svg-7XJBOKFU.js → kilominx.kpuzzle.svg-ZLRTRUTM.js} +2 -2
  64. package/dist/esm/{kilominx.kpuzzle.svg-7XJBOKFU.js.map → kilominx.kpuzzle.svg-ZLRTRUTM.js.map} +0 -0
  65. package/dist/esm/{kilosolver-N6JM5PUY.js → kilosolver-A3MNW2DJ.js} +6 -5
  66. package/dist/esm/{kilosolver-N6JM5PUY.js.map → kilosolver-A3MNW2DJ.js.map} +1 -1
  67. package/dist/esm/kpuzzle/index.js +3 -3
  68. package/dist/esm/{master_tetraminx-solver-KBQJGW4A.js → master_tetraminx-solver-QSJNGET5.js} +6 -5
  69. package/dist/esm/{master_tetraminx-solver-KBQJGW4A.js.map → master_tetraminx-solver-QSJNGET5.js.map} +1 -1
  70. package/dist/esm/megaminx.sgs.json-O2B5OU3T.js +16 -0
  71. package/dist/esm/{megaminx.sgs.json-CGIZZZMZ.js.map → megaminx.sgs.json-O2B5OU3T.js.map} +0 -0
  72. package/dist/esm/notation/index.js +3 -3
  73. package/dist/esm/protocol/index.js +4 -4
  74. package/dist/esm/puzzle-geometry/index.js +3 -3
  75. package/dist/esm/puzzles/index.js +4 -4
  76. package/dist/esm/{pyraminx.kpuzzle.svg-QBBMZVDY.js → pyraminx.kpuzzle.svg-UHDZCBET.js} +2 -2
  77. package/dist/esm/{pyraminx.kpuzzle.svg-QBBMZVDY.js.map → pyraminx.kpuzzle.svg-UHDZCBET.js.map} +0 -0
  78. package/dist/esm/pyraminx.sgs.json-NTELD4DU.js +14 -0
  79. package/dist/esm/{pyraminx.sgs.json-XGJQTHLV.js.map → pyraminx.sgs.json-NTELD4DU.js.map} +0 -0
  80. package/dist/esm/{redi_cube-E5F64NIQ.js → redi_cube-FYRLEZZH.js} +7 -6
  81. package/dist/esm/{redi_cube-E5F64NIQ.js.map → redi_cube-FYRLEZZH.js.map} +1 -1
  82. package/dist/esm/{redi_cube.kpuzzle.json-EPBKWOMV.js → redi_cube.kpuzzle.json-43CP47Z6.js} +2 -2
  83. package/dist/esm/{redi_cube.kpuzzle.json-EPBKWOMV.js.map → redi_cube.kpuzzle.json-43CP47Z6.js.map} +0 -0
  84. package/dist/esm/{redi_cube.kpuzzle.svg-BSHCMC2Z.js → redi_cube.kpuzzle.svg-3DWDYE3O.js} +2 -2
  85. package/dist/esm/{redi_cube.kpuzzle.svg-BSHCMC2Z.js.map → redi_cube.kpuzzle.svg-3DWDYE3O.js.map} +0 -0
  86. package/dist/esm/scramble/index.js +8 -8
  87. package/dist/esm/search/index.js +8 -8
  88. package/dist/esm/{search-worker-js-entry-A4VBA2ZD.js → search-worker-js-entry-32MQILEZ.js} +113 -71
  89. package/dist/esm/{search-worker-js-entry-A4VBA2ZD.js.map → search-worker-js-entry-32MQILEZ.js.map} +2 -2
  90. package/dist/esm/{search-worker-ts-entry-LUHAXJBE.js → search-worker-ts-entry-IJRN7GQV.js} +5 -5
  91. package/dist/esm/{search-worker-ts-entry-LUHAXJBE.js.map → search-worker-ts-entry-IJRN7GQV.js.map} +0 -0
  92. package/dist/esm/skewb.sgs.json-GISOONJZ.js +16 -0
  93. package/dist/esm/{skewb.sgs.json-HNUN4G7F.js.map → skewb.sgs.json-GISOONJZ.js.map} +0 -0
  94. package/dist/esm/{sq1-hyperorbit.kpuzzle.json-4XS5YACO.js → sq1-hyperorbit.kpuzzle.json-AMXAFQCM.js} +2 -2
  95. package/dist/esm/{sq1-hyperorbit.kpuzzle.json-4XS5YACO.js.map → sq1-hyperorbit.kpuzzle.json-AMXAFQCM.js.map} +0 -0
  96. package/dist/esm/{sq1-hyperorbit.kpuzzle.svg-ID57EER7.js → sq1-hyperorbit.kpuzzle.svg-MNHJTJ6V.js} +2 -2
  97. package/dist/esm/{sq1-hyperorbit.kpuzzle.svg-ID57EER7.js.map → sq1-hyperorbit.kpuzzle.svg-MNHJTJ6V.js.map} +0 -0
  98. package/dist/esm/{sq1-solver-P3IWWET7.js → sq1-solver-KMN2GSOU.js} +3 -3
  99. package/dist/esm/{sq1-solver-P3IWWET7.js.map → sq1-solver-KMN2GSOU.js.map} +0 -0
  100. package/dist/esm/stream/index.js +2 -2
  101. package/dist/esm/twisty/index.js +558 -559
  102. package/dist/esm/twisty/index.js.map +3 -3
  103. package/dist/esm/worker-inside-generated-string-JGML54CI.js +3768 -0
  104. package/dist/esm/worker-inside-generated-string-JGML54CI.js.map +7 -0
  105. package/dist/types/puzzles/implementations/fto/fto.kpuzzle.svg.d.ts +1 -0
  106. package/dist/types/puzzles/implementations/fto/index.d.ts +1 -0
  107. package/dist/types/search/inside/api.d.ts +6 -0
  108. package/dist/types/search/outside.d.ts +2 -0
  109. package/dist/types/search/worker-inside-generated-string.d.ts +1 -1
  110. package/dist/types/twisty/model/TwistyPlayerModel.d.ts +27 -46
  111. package/dist/types/twisty/model/TwistySceneModel.d.ts +27 -0
  112. package/dist/types/twisty/views/2D/Twisty2DSceneWrapper.d.ts +3 -3
  113. package/package.json +21 -22
  114. package/dist/esm/chunk-CNIY6YZL.js.map +0 -7
  115. package/dist/esm/chunk-HFQZM22L.js.map +0 -7
  116. package/dist/esm/chunk-RENZB7QN.js.map +0 -7
  117. package/dist/esm/megaminx.sgs.json-CGIZZZMZ.js +0 -16
  118. package/dist/esm/pyraminx.sgs.json-XGJQTHLV.js +0 -14
  119. package/dist/esm/skewb.sgs.json-HNUN4G7F.js +0 -16
  120. package/dist/esm/worker-inside-generated-string-VHOABMFC.js +0 -3674
  121. package/dist/esm/worker-inside-generated-string-VHOABMFC.js.map +0 -7
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/cubing/vendor/xyzzy/master_tetraminx-solver.js"],
4
4
  "sourcesContent": ["/* eslint-disable */\n/* master pyraminx scramble generator */\n// From https://gist.github.com/torchlight/9a5c53da09d8e090756a228f4b5f3471\n// Added to `cubing.js` under the GPL license by permission from the author (@torchlight/xyzzy).\n\n\"use strict\";\n\nimport { randomUIntBelowFactory } from \"../random-uint-below\";\n\nfunction counter(A) {\n let counts = [];\n for (let a of A) counts[a] = (counts[a] || 0) + 1;\n return counts;\n}\n\n/* Combinatoric functions */\n\nfunction factorial(n) {\n if (n < 2) return n;\n let f = 1;\n for (let i = 2; i <= n; i++) f *= i;\n return f;\n}\n\nfunction identity_permutation(n) {\n let a = Array(n);\n for (let i = 0; i < n; i++) {\n a[i] = i;\n }\n return a;\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]) parity ^= 1;\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]) perm[j]++;\n else parity ^= 1;\n }\n }\n if (parity === 1) [perm[n - 2], perm[n - 1]] = [perm[n - 1], perm[n - 2]];\n return perm;\n}\n\nfunction evenpermutation_to_index(perm) {\n return permutation_to_index(perm) >> 1;\n}\n\nlet [evenpermutation12_to_index, index_to_evenpermutation12] = (() => {\n let index_in_set_bits = new Int8Array(4096 * 12);\n let look_up_set_bits = new Int8Array(4096 * 12);\n for (let i = 0; i < 4096; i++) {\n for (let j = 0, counter = 0; j < 12; j++) {\n if (((i >>> j) & 1) === 0) {\n continue;\n }\n index_in_set_bits[(j << 12) | i] = counter;\n look_up_set_bits[(counter << 12) | i] = j;\n counter++;\n }\n }\n\n function evenpermutation12_to_index(perm) {\n let unused = 0xfff; // track which values in 0..11 haven't been used so far\n let f = 19958400; // = 11!/2\n let ind = 0;\n for (let i = 0; i < 10; i++) {\n let v = perm[i];\n ind += index_in_set_bits[unused | (v << 12)] * f;\n unused &= ~(1 << v);\n f /= 11 - i;\n }\n return ind;\n }\n\n function index_to_evenpermutation12(ind, perm) {\n let unused = 0xfff;\n let f = 19958400; // = 11!/2\n let parity = 0;\n for (let i = 0; i < 10; i++) {\n let a = (ind / f) | 0;\n ind -= a * f;\n parity ^= a & 1;\n let v = look_up_set_bits[unused | (a << 12)];\n perm[i] = v;\n unused &= ~(1 << v);\n f /= 11 - i;\n }\n // the last two elements are uniquely determined by the other ten\n perm[10] = look_up_set_bits[unused | (parity << 12)];\n perm[11] = look_up_set_bits[unused | ((parity ^ 1) << 12)];\n return perm;\n }\n\n // these functions could be significantly faster with SWAR, but we can't SWAR here without 64-bit\n // bitwise ops. :<\n\n return [evenpermutation12_to_index, index_to_evenpermutation12];\n})();\n\nfunction compose(A, B) {\n let C = [];\n for (let i = 0; i < B.length; i++) C[i] = A[B[i]];\n return C;\n}\n\nfunction double_compose(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 invert(perm) {\n let inv = [];\n for (let i = 0; i < perm.length; i++) {\n inv[perm[i]] = i;\n }\n return inv;\n}\n\nfunction permutation_from_cycle(cycle, n) {\n let perm = [];\n for (let i = 0; i < n; i++) perm[i] = i;\n for (let i = 0; i < cycle.length; i++) {\n perm[cycle[i]] = cycle[(i + 1) % cycle.length];\n }\n return perm;\n}\n\nfunction permutation_from_cycles(cycles, n) {\n if (cycles.length === 0) {\n return identity_permutation(n);\n }\n return cycles\n .map((cycle) => permutation_from_cycle(cycle, n))\n .reduce(compose);\n // not very efficient, but this function is only called during init so it's fine\n}\n\n/* puzzle-specific stuff */\n\n/*\nWe will (mostly) ignore the trivial tips here. When we say \"single-layer\", we mean one layer\n*excluding* the tip, so it's really two layers on the physical puzzle; likewise, \"double-layer\"\nmeans three layers on the physical puzzle. Hopefully this won't be too confusing.\n\nTips (\"zero-layer\" moves?) are written with a single lowercase letter: u, l, r, b.\nSingle-layer moves are written with a single uppercase letter: U, L, R, B.\nDouble-layer moves are written with a single uppercase letter and a w suffix: Uw, Lw, Rw, Bw.\n\nThe master pyraminx has four types of pieces:\n- 4 corners (same as pyraminx); three orientations each (no permutation).\n- 6 midges (same as pyraminx); even permutation, two orientations each, sum(orientations)%2 = 0.\n- 12 wings; even permutation (no orientation).\n- 4 centres; even permutation (no visible orientation).\n\nThe total number of states is (3^4) * (6!/2 * 2^5) * (12!/2) * (4!/2) = 2 681 795 837 952 000.\n\nThis is small enough that an optimal solver is feasible *if* we can use large pruning tables, but\nif we want to keep init times short, a two-phase algorithm would be much better. Here, we will use a\ntwo-phase reduction algorithm: the first phase reduces to a Halpern-Meier Pyramid / Jing's pyraminx,\nand the second phase just solves that (using only double-layer moves).\n\nSome ~group theory~ flexing: the alternating group A_4 (acting on the centres) has a copy of the\nKlein four-group V as a normal subgroup of index 3. We can name the cosets (other than V itself) as\nthe cw coset if the elements are a clockwise 3-cycle (as viewed from a corner) and the ccw coset if\nthe elements are an anticlockwise 3-cycle. On the H-M pyra, (the name of) the V-coset of the centres\nis exactly the sum of the orientations of the corners mod 3; this follows from V being a normal\nsubgroup of A_4.\n\n---\n\nIn the first phase, we:\n(i) do edge pairing (12!/2 ~ 2.4e8);\n(ii) ensure the V-coset of the centres matches the corner orientations (3).\n\nRelevant coordinates:\nlocations of a midge and its matching wings + centre stuff ((6*12*11) * 3 = 2376)\n\nPruning table:\n- forming two tredges + centre stuff ((6*5*12*11*10*9) * 3 = 1069200)\n- counting solved wings versus flipped wings + centre stuff (21 * 2 = 42)\n\nThe first pruning table takes around a quarter of a second to generate, which is kinda slow, but it\ncan't be helped. We check all fifteen possible pairs. (Checking only three pairs is enough, but has\nvery poor worst-case performance.)\n\nThe second pruning table takes literally an hour to generate, but it's also small so we just hard-\ncode all of its values instead of computing it on initialisation. Using this table kills off worst-\ncase behaviour on \"bad\" scrambles, but doesn't do a lot on \"median\" scrambles.\n\n---\n\nIn the second phase, we solve the puzzle like a H-M pyra.\n\nRelevant coordinates:\n(i) edge permutation, location of yellow centre (6!/2 * 4 = 1440)\n(ii) edge orientation, corner orientation (2^5 * 3^4 = 2592)\n\nCorner orientation uniquely determines the V-coset of the centre permutation, and since V acts\nsharply transitively on the centres, knowing where the yellow centre is uniquely determines which\nelement of that V-coset is the centre permutation.\n\n---\n\nConsiderations for generating scrambles:\n\nTip scrambling: the standard pyraminx scramblers just put the tips at the end of the scramble. This\nis *really bad* when we're doing the scrambles by hand and then immediately solving afterwards.\nIdeally, the scramble sequence shouldn't reveal any obvious information about the scramble.\n\nLike 333 and a few other puzzles, the states of a master pyra have a group structure, and so we can\ntake inverses. Once we have generated a random state, we can return either the inverse of its\nsolution, or the solution of its inverse. Since inversion preserves uniformity, we could just as\nwell just directly return a solution of a random state.\n\n---\n\n(ASCII nets modified from TNoodle's source code comments)\n\ncorners:\n\n* ____ ____ ____ ____\n* /\\ /\\ /\\ /\\ /\\ /\\\n* /3 \\ / \\ /0 \\ U /0 \\ / \\ /3 \\\n* /____\\/____\\/____\\ ____ /____\\/____\\/____\\\n* \\ /\\ /\\ / /\\ /\\ \\ /\\ /\\ /\n* \\ / \\ / \\ / / \\0 / \\ \\ / \\ / \\ /\n* \\/____\\/____\\/ /____\\/____\\ \\/____\\/____\\/\n* \\ /\\ / /\\ /\\ /\\ \\ /\\ /\n* \\ /1 \\ / / \\ / \\ / \\ \\ /2 \\ /\n* \\/____\\/ /____\\/____\\/____\\ \\/____\\/\n* \\ /\\ /\\ /\n* \\1 / \\ / \\2 /\n* L \\/____\\/____\\/ R\n*\n* ____ ____\n* /\\ /\\ /\\\n* /1 \\ / \\ /2 \\\n* /____\\/____\\/____\\\n* \\ /\\ /\\ /\n* \\ / \\ / \\ /\n* \\/____\\/____\\/\n* \\ /\\ /\n* \\ /3 \\ /\n* \\/____\\/\n*\n* B\n\nmidges:\n\n* ____ ____ ____ ____\n* /\\ /\\ /\\ /\\ /\\ /\\\n* / \\ /11\\ / \\ U / \\ /5 \\ / \\\n* /____\\/____\\/____\\ ____ /____\\/____\\/____\\\n* \\ /\\ /\\ / /\\ /\\ \\ /\\ /\\ /\n* \\ /8 \\ /7 \\ / / \\ / \\ \\ /9 \\ /10\\ /\n* \\/____\\/____\\/ /____\\/____\\ \\/____\\/____\\/\n* \\ /\\ / /\\ /\\ /\\ \\ /\\ /\n* \\ / \\ / / \\1 / \\3 / \\ \\ / \\ /\n* \\/____\\/ /____\\/____\\/____\\ \\/____\\/\n* \\ /\\ /\\ /\n* \\ / \\0 / \\ /\n* L \\/____\\/____\\/ R\n*\n* ____ ____\n* /\\ /\\ /\\\n* / \\ /6 \\ / \\\n* /____\\/____\\/____\\\n* \\ /\\ /\\ /\n* \\ /2 \\ /4 \\ /\n* \\/____\\/____\\/\n* \\ /\\ /\n* \\ / \\ /\n* \\/____\\/\n*\n* B\n\nwings:\n\n* ____ ____ ____ ____\n* /\\ /\\ /\\ /\\ /\\ /\\\n* / \\5 / \\11/ \\ U / \\11/ \\5 / \\\n* /____\\/____\\/____\\ ____ /____\\/____\\/____\\\n* \\ /\\ /\\ / /\\ /\\ \\ /\\ /\\ /\n* \\8 / \\ / \\1 / /1 \\ /9 \\ \\9 / \\ / \\4 /\n* \\/____\\/____\\/ /____\\/____\\ \\/____\\/____\\/\n* \\ /\\ / /\\ /\\ /\\ \\ /\\ /\n* \\2 / \\7 / /7 \\ / \\ /3 \\ \\3 / \\10/\n* \\/____\\/ /____\\/____\\/____\\ \\/____\\/\n* \\ /\\ /\\ /\n* \\ /0 \\ /6 \\ /\n* L \\/____\\/____\\/ R\n*\n* ____ ____\n* /\\ /\\ /\\\n* / \\0 / \\6 / \\\n* /____\\/____\\/____\\\n* \\ /\\ /\\ /\n* \\2 / \\ / \\10/\n* \\/____\\/____\\/\n* \\ /\\ /\n* \\8 / \\4 /\n* \\/____\\/\n*\n* B\n\ncentres:\n\n* ____ ____ ____ ____\n* /\\ /\\ /\\ /\\ /\\ /\\\n* / \\ / \\ / \\ U / \\ / \\ / \\\n* /____\\/____\\/____\\ ____ /____\\/____\\/____\\\n* \\ /\\ /\\ / /\\ /\\ \\ /\\ /\\ /\n* \\ / \\2 / \\ / / \\ / \\ \\ / \\1 / \\ /\n* \\/____\\/____\\/ /____\\/____\\ \\/____\\/____\\/\n* \\ /\\ / /\\ /\\ /\\ \\ /\\ /\n* \\ / \\ / / \\ /3 \\ / \\ \\ / \\ /\n* \\/____\\/ /____\\/____\\/____\\ \\/____\\/\n* \\ /\\ /\\ /\n* \\ / \\ / \\ /\n* L \\/____\\/____\\/ R\n*\n* ____ ____\n* /\\ /\\ /\\\n* / \\ / \\ / \\\n* /____\\/____\\/____\\\n* \\ /\\ /\\ /\n* \\ / \\0 / \\ /\n* \\/____\\/____\\/\n* \\ /\\ /\n* \\ / \\ /\n* \\/____\\/\n*\n* B\n\n---\n\nfull state:\n{\n co: int[4]: corner orientation (ccw twist = 1, cw twist = 2),\n mp: int[12]: midge facelet permutation (this encodes orientation as well),\n wp: int[12]: wing permutation,\n cp: int[4]: centre permutation\n}\n\nphase 1 state:\nint[6]: locations of midge and matching wings + (CO - coset index) % 3\n\nphase 2 state:\n[\n int: edge permutation + yellow centre coordinate (0..1439),\n int: edge orientation + corner orientation coordinate (0..2591)\n]\n*/\n\nfunction compose_state(state1, state2) {\n let co = Array(4);\n for (let i = 0; i < 4; i++) {\n co[i] = (state1.co[i] + state2.co[i]) % 3;\n }\n let mp = compose(state1.mp, state2.mp);\n let wp = compose(state1.wp, state2.wp);\n let cp = compose(state1.cp, state2.cp);\n return { co: co, mp: mp, wp: wp, cp: cp };\n}\n\nfunction invert_state(state) {\n let co = Array(4);\n for (let i = 0; i < 4; i++) {\n co[i] = (3 - state.co[i]) % 3;\n }\n let mp = invert(state.mp);\n let wp = invert(state.wp);\n let cp = invert(state.cp);\n return { co: co, mp: mp, wp: wp, cp: cp };\n}\n\nlet solved = {\n co: [0, 0, 0, 0],\n mp: identity_permutation(12),\n wp: identity_permutation(12),\n cp: [0, 1, 2, 3],\n};\n\n// the single-layer moves don't affect midges (mp) or centres (cp)\nlet move_U = {\n co: [2, 0, 0, 0],\n mp: identity_permutation(12),\n wp: permutation_from_cycle([1, 9, 11], 12),\n cp: [0, 1, 2, 3],\n};\nlet move_L = {\n co: [0, 2, 0, 0],\n mp: identity_permutation(12),\n wp: permutation_from_cycle([0, 7, 2], 12),\n cp: [0, 1, 2, 3],\n};\nlet move_R = {\n co: [0, 0, 2, 0],\n mp: identity_permutation(12),\n wp: permutation_from_cycle([3, 6, 10], 12),\n cp: [0, 1, 2, 3],\n};\nlet move_B = {\n co: [0, 0, 0, 2],\n mp: identity_permutation(12),\n wp: permutation_from_cycle([4, 8, 5], 12),\n cp: [0, 1, 2, 3],\n};\n\n// the double-layer moves affect everything, but permute the midges and wings identically\nlet move_Uw = {\n co: [2, 0, 0, 0],\n mp: permutation_from_cycles(\n [\n [1, 9, 11],\n [7, 3, 5],\n ],\n 12,\n ),\n wp: permutation_from_cycles(\n [\n [1, 9, 11],\n [7, 3, 5],\n ],\n 12,\n ),\n cp: [0, 2, 3, 1],\n};\nlet move_Lw = {\n co: [0, 2, 0, 0],\n mp: permutation_from_cycles(\n [\n [0, 7, 2],\n [6, 1, 8],\n ],\n 12,\n ),\n wp: permutation_from_cycles(\n [\n [0, 7, 2],\n [6, 1, 8],\n ],\n 12,\n ),\n cp: [3, 1, 0, 2],\n};\nlet move_Rw = {\n co: [0, 0, 2, 0],\n mp: permutation_from_cycles(\n [\n [3, 6, 10],\n [9, 0, 4],\n ],\n 12,\n ),\n wp: permutation_from_cycles(\n [\n [3, 6, 10],\n [9, 0, 4],\n ],\n 12,\n ),\n cp: [1, 3, 2, 0],\n};\nlet move_Bw = {\n co: [0, 0, 0, 2],\n mp: permutation_from_cycles(\n [\n [4, 8, 5],\n [10, 2, 11],\n ],\n 12,\n ),\n wp: permutation_from_cycles(\n [\n [4, 8, 5],\n [10, 2, 11],\n ],\n 12,\n ),\n cp: [2, 0, 1, 3],\n};\n\nlet moves = [\n move_Uw,\n move_Lw,\n move_Rw,\n move_Bw,\n move_U,\n move_L,\n move_R,\n move_B,\n];\nlet move_names = [\"u\", \"l\", \"r\", \"b\", \"U\", \"L\", \"R\", \"B\"];\nconst N_MOVES = 8; // number of moves\nconst N_MOVES_PHASE2 = 4; // number of moves for phase 2\n\nfunction moves_commute(i, j) {\n // single-layer moves always commute with each other\n if (i >= 4 && j >= 4) {\n return true;\n }\n // double-layer moves commute iff they are equal\n if (i < 4 && j < 4) {\n return i === j;\n }\n // a single-layer and a double-layer move commute iff they're on the same axis\n return (i ^ j) === 4;\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++) state = compose_state(state, moves[m]);\n }\n return state;\n}\n\nfunction stringify_move_sequence(move_sequence) {\n let suffixes = [\"0\", \"\", \"'\"];\n let s = move_sequence.map(([m, r]) => move_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 generate_random_state(randomUintBelow) {\n // master pyra has no \"nontrivial\" restrictions, beyond the usual parity stuff\n let co = Array(4);\n for (let i = 0; i < 4; i++) {\n co[i] = randomUintBelow(3);\n }\n let mp = index_to_evenpermutation(randomUintBelow(factorial(6) / 2), 6);\n for (let i = 0, parity = 0; i < 6; i++) {\n let eo = i === 5 ? parity : randomUintBelow(2);\n parity ^= eo;\n mp[i] += eo * 6;\n mp[i + 6] = (mp[i] + 6) % 12;\n }\n let wp = index_to_evenpermutation(randomUintBelow(factorial(12) / 2), 12);\n let cp = index_to_evenpermutation(randomUintBelow(factorial(4) / 2), 4);\n return { co: co, mp: mp, wp: wp, cp: cp };\n}\n\nfunction generate_random_state_scramble(randomUintBelow) {\n return solve(generate_random_state(randomUintBelow));\n}\n\nfunction generate_scramble_sequence(\n randomUintBelow,\n tips = true,\n obfuscate_tips = false,\n) {\n let scramble_string = stringify_move_sequence(\n generate_random_state_scramble(randomUintBelow),\n );\n if (!tips) {\n return scramble_string;\n }\n let tip_names = [\"u\", \"l\", \"r\", \"b\"];\n let suffixes = [\"0\", \"\", \"'\"];\n if (!obfuscate_tips) {\n for (let i = 0; i < 4; i++) {\n let x = randomUintBelow(3);\n if (x !== 0) {\n scramble_string += \" \" + tip_names[i] + suffixes[x];\n }\n }\n return scramble_string.trim();\n }\n let amount = [],\n amount_pre = [],\n amount_post = [];\n for (let i = 0; i < 4; i++) {\n amount[i] = randomUintBelow(3);\n amount_pre[i] = randomUintBelow(3);\n amount_post[i] = (amount[i] - amount_pre[i] + 3) % 3;\n }\n let weight = (arr) => arr.filter((x) => x !== 0).length;\n while (\n !(\n weight(amount_pre) >= 1 &&\n weight(amount_post) >= 1 &&\n weight(amount_pre) + weight(amount_post) >= 4\n )\n ) {\n for (let i = 0; i < 4; i++) {\n amount_pre[i] = randomUintBelow(3);\n amount_post[i] = (amount[i] - amount_pre[i] + 3) % 3;\n }\n }\n let prepend = amount_pre\n .map((x, i) => (x !== 0 ? tip_names[i] + suffixes[x] + \" \" : \"\"))\n .join(\"\");\n let append = amount_post\n .map((x, i) => (x !== 0 ? \" \" + tip_names[i] + suffixes[x] : \"\"))\n .join(\"\");\n return prepend + scramble_string + append;\n // this technically has the extremely edge case of the original no-tip scramble being the\n // trivial scramble and the resulting string will have a double space, but this is Very Rare\n}\n\nfunction solve(state) {\n let phase1_indices = index_phase1(state);\n let phase2_mtables = [\n generate_phase2_permutation_mtable(),\n generate_phase2_orientation_mtable(),\n ];\n let phase2_ptables = [\n generate_phase2_permutation_ptable(),\n generate_phase2_orientation_ptable(),\n ];\n\n let phase1gen = phase1_ida_solve_gen(phase1_indices);\n let best = undefined;\n let intermediate_states = new Set();\n let start_time = performance.now();\n for (let i = 0; i < 22; i++) {\n let { value: sol1, done } = phase1gen.next();\n let new_state = state;\n for (let [m, r] of sol1) {\n for (let i = 0; i < r; i++)\n new_state = compose_state(new_state, moves[m]);\n }\n let stringified_state = JSON.stringify(new_state);\n if (intermediate_states.has(stringified_state)) {\n // console.log(\"skip\");\n continue;\n } else intermediate_states.add(stringified_state);\n let phase2_indices = index_phase2(new_state);\n //let sol2 = [];\n let moves_left = best ? best.length - sol1.length - 1 : 999999;\n let sol2 = ida_solve_gen(\n phase2_indices,\n phase2_mtables,\n phase2_ptables,\n moves_left,\n ).next().value;\n if (sol2 === undefined) {\n // console.log(\"prune\");\n continue;\n }\n // console.log(\n // `to ${stringified_state} in ${sol1.length} moves; total move count ${\n // sol1.length + sol2.length\n // }`,\n // );\n if (best === undefined || best.length > sol1.length + sol2.length) {\n best = sol1.concat(sol2);\n }\n // bail if we've spent too much time\n if (performance.now() - start_time > 300) break;\n }\n return best;\n}\n\nfunction determine_V_coset(p) {\n // p: even permutation on 4 elements\n // NOTE: the formula depends on the centre ordering and corner orientation conventions\n // V itself is 0, ccw coset is 1, cw coset is 2.\n return p[3 ^ p.indexOf(3)];\n}\n\nfunction index_phase1(state) {\n let w = compose(invert(state.mp), state.wp);\n let c =\n (state.co.reduce((x, y) => x + y) - determine_V_coset(state.cp) + 3) % 3;\n return [0, 1, 2, 3, 4, 5].map(\n (i) => i + 6 * w.indexOf(i) + 72 * w.indexOf(i + 6) + 864 * c,\n );\n}\n\nlet phase1_permtable_m = [],\n phase1_permtable_minv = [];\nlet phase1_permtable_w = [],\n phase1_permtable_winv = [];\nfor (let i = 0; i < N_MOVES; i++) {\n let move = moves[i];\n phase1_permtable_m[i] = move.mp;\n phase1_permtable_minv[i] = invert(move.mp);\n phase1_permtable_w[i] = move.wp;\n phase1_permtable_winv[i] = invert(move.wp);\n}\nlet phase1_c_update = [0, 0, 0, 0, 2, 2, 2, 2];\n\n/* score = (# matching wings - # flipped wings) + 12\n(the +12 is to make it have range 0..24 rather than -12..12)\n\nthis is more effective than looking at # matching wings alone, or # flipped wings alone.\n\nstats for centre/corner solved:\njs> num_by_score\n[1, 0, 0, 320, 1350, 11328, 77280, 422400, 2016735, 7808000, 23467296, 50855040, 70181300, 50855040, 23467296, 7808000, 2016735, 422400, 77280, 11328, 1350, 320, 0, 0, 1]\njs> min_by_score\n[14, 9999, 9999, 11, 11, 10, 9, 8, 8, 7, 7, 6, 4, 5, 5, 3, 4, 4, 2, 3, 4, 3, 9999, 9999, 0]\njs> max_by_score\n[14, -9999, -9999, 13, 13, 13, 13, 13, 13, 13, 13, 12, 12, 12, 11, 10, 10, 10, 9, 8, 8, 5, -9999, -9999, 0]\njs> sum_by_score\n[14, 0, 0, 3856, 16458, 131856, 904280, 4885752, 23019405, 87454032, 256924344, 542481888, 725249936, 501317616, 218566356, 67825352, 16313334, 3116472, 509352, 63600, 7854, 1288, 0, 0, 0]\n\nstats for centre/corner unsolved:\njs> min_by_score\n[13, 9999, 9999, 11, 10, 10, 9, 8, 8, 7, 7, 6, 4, 5, 5, 3, 4, 4, 2, 3, 3, 1, 9999, 9999, 6]\njs> max_by_score\n[13, -9999, -9999, 13, 13, 13, 13, 13, 13, 13, 13, 12, 13, 12, 11, 11, 10, 9, 9, 8, 8, 6, -9999, -9999, 6]\njs> sum_by_score\n[13, 0, 0, 3792, 16026, 133344, 900726, 4870308, 23008797, 87434932, 256859772, 542586948, 725077315, 501101484, 218802804, 67943128, 16250601, 3110148, 509044, 65940, 7284, 1148, 0, 0, 6]\n\n*/\n\nlet phase1_score_ptable = [\n //-12 -9 -8 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 9 12\n [\n 14, -1, -1, 11, 11, 10, 9, 8, 8, 7, 7, 6, 4, 5, 5, 3, 4, 4, 2, 3, 4, 3, -1,\n -1, 0,\n ],\n [\n 13, -1, -1, 11, 10, 10, 9, 8, 8, 7, 7, 6, 4, 5, 5, 3, 4, 4, 2, 3, 3, 1, -1,\n -1, 6,\n ],\n];\nlet phase1_score_ptable_condensed = new Int8Array(55);\nfor (let i = 0; i < 25; i++) {\n phase1_score_ptable_condensed[i] = phase1_score_ptable[0][i];\n phase1_score_ptable_condensed[i + 30] = phase1_score_ptable[1][i];\n}\nlet phase1_coord_to_score = new Int8Array(6 * 12 * 12 * 3);\nfor (let i = 0; i < 6; i++)\n for (let j = 0; j < 12; j++)\n for (let k = 0; k < 12; k++) {\n let index = i + 6 * j + 72 * k;\n let score = 2;\n if (j === i) {\n score++;\n } else if (j === (i + 6) % 12) {\n score--;\n }\n if (k === (i + 6) % 12) {\n score++;\n } else if (k === i) {\n score--;\n }\n phase1_coord_to_score[index] = score;\n phase1_coord_to_score[index + 6 * 12 * 12] = phase1_coord_to_score[\n index + 2 * 6 * 12 * 12\n ] = score + 5;\n }\n\nfunction phase1_benchmark() {\n /* some 13-move phase 1 states*/\n let phase1_test_states = [\n [1836, 2551, 1922, 1947, 2440, 2063],\n [1674, 1153, 1058, 1353, 1000, 1271],\n [1764, 2497, 1904, 2001, 2242, 2087],\n [582, 301, 566, 273, 40, 431],\n [600, 217, 200, 477, 136, 431],\n [60, 613, 98, 273, 214, 407],\n [36, 265, 98, 777, 190, 431],\n [1764, 1987, 2402, 1881, 2368, 2159],\n [36, 277, 194, 129, 334, 431],\n [1764, 1843, 1928, 2499, 2158, 2039],\n [528, 721, 194, 429, 112, 275],\n [840, 115, 182, 219, 346, 425],\n [1752, 1831, 2498, 1989, 2416, 1943],\n [324, 133, 554, 231, 58, 431],\n [18, 331, 194, 495, 658, 431],\n [1764, 1987, 1880, 2337, 2578, 2081],\n [1776, 1855, 1934, 1989, 2050, 2231],\n [396, 811, 194, 297, 712, 47],\n [816, 115, 482, 273, 148, 425],\n [972, 907, 1070, 1281, 1174, 1511],\n ];\n generate_phase1_pairing2c_ptable();\n let start = performance.now();\n for (let coords of phase1_test_states) {\n phase1_ida_solve_gen(coords).next();\n }\n return performance.now() - start;\n}\n\nfunction* phase1_ida_solve_gen(coords) {\n let bound = 0;\n let mtable = generate_phase1_pairingc_mtable();\n let ptable = generate_phase1_pairing2c_ptable();\n while (true) {\n yield* phase1_ida_search_gen(...coords, mtable, ptable, bound, -1);\n bound++;\n }\n}\n\nfunction* phase1_ida_search_gen(a, b, c, d, e, f, mtable, ptable, bound, last) {\n let nmoves = N_MOVES; // = 8\n let score =\n phase1_coord_to_score[a] +\n phase1_coord_to_score[b] +\n phase1_coord_to_score[c] +\n phase1_coord_to_score[d] +\n phase1_coord_to_score[e] +\n phase1_coord_to_score[f];\n let heuristic = Math.max(\n ptable[(a % 864) + b * 864],\n ptable[(c % 864) + b * 864],\n ptable[(e % 864) + b * 864],\n ptable[(a % 864) + d * 864],\n ptable[(c % 864) + d * 864],\n ptable[(e % 864) + d * 864],\n ptable[(a % 864) + f * 864],\n ptable[(c % 864) + f * 864],\n ptable[(e % 864) + f * 864],\n ptable[(a % 864) + c * 864],\n ptable[(a % 864) + e * 864],\n ptable[(c % 864) + e * 864],\n ptable[(b % 864) + d * 864],\n ptable[(b % 864) + f * 864],\n ptable[(d % 864) + f * 864],\n phase1_score_ptable_condensed[score],\n );\n if (heuristic > bound) return;\n if (bound === 0) {\n yield [];\n return;\n }\n if (heuristic === 0 && bound === 1) return;\n for (let m = 0; m < nmoves; m++) {\n if (m === last) continue;\n if (m < last && moves_commute(m, last)) continue;\n let A = a,\n B = b,\n C = c,\n D = d,\n E = e,\n F = f;\n for (let r = 1; r <= 2; r++) {\n A = mtable[A][m];\n B = mtable[B][m];\n C = mtable[C][m];\n D = mtable[D][m];\n E = mtable[E][m];\n F = mtable[F][m];\n let subpath_gen = phase1_ida_search_gen(\n A,\n B,\n C,\n D,\n E,\n F,\n mtable,\n ptable,\n bound - 1,\n m,\n );\n while (true) {\n let { value: subpath, done } = subpath_gen.next();\n if (done) break;\n yield [[m, r]].concat(subpath);\n }\n }\n }\n}\n\nfunction index_phase2(state) {\n let edges = state.mp;\n let ep = evenpermutation_to_index(edges.slice(0, 6).map((x) => x % 6));\n let eo = edges\n .slice(0, 5)\n .map((x, i) => (x >= 6) * 2 ** i)\n .reduce((x, y) => x + y);\n let co = state.co.map((x, i) => x * 3 ** i).reduce((x, y) => x + y);\n let cloc = state.cp.indexOf(0);\n return [ep + 360 * cloc, eo + 32 * co];\n}\n\nlet tables = {};\n\nfunction generate_phase1_pairing_mtable() {\n if (tables.phase1pm) {\n return tables.phase1pm;\n }\n let mtable = Array(6 * 12 * 12)\n .fill()\n .map(() => Array(N_MOVES).fill(-1));\n for (let midge = 0; midge < 6; midge++) {\n for (let wingl = 0; wingl < 12; wingl++) {\n for (let wingh = 0; wingh < 12; wingh++) {\n if (wingl === wingh) {\n continue;\n }\n let index = midge + 6 * wingl + 72 * wingh;\n for (let m = 0; m < N_MOVES; m++) {\n let new_midge = phase1_permtable_minv[m][midge];\n let new_wingl = phase1_permtable_winv[m][wingl];\n let new_wingh = phase1_permtable_winv[m][wingh];\n if (new_midge < 6) {\n mtable[index][m] = new_midge + 6 * new_wingl + 72 * new_wingh;\n } else {\n mtable[index][m] = new_midge - 6 + 6 * new_wingh + 72 * new_wingl;\n }\n }\n }\n }\n }\n return (tables.phase1pm = mtable);\n}\n\nfunction generate_phase1_pairingc_mtable() {\n if (tables.phase1pcm) {\n return tables.phase1pcm;\n }\n let mtable_pairing = generate_phase1_pairing_mtable();\n let mtable = Array(mtable_pairing.length * 3)\n .fill()\n .map(() => Array(N_MOVES).fill(-1));\n for (let index = 0; index < mtable_pairing.length; index++) {\n for (let m = 0; m < N_MOVES; m++) {\n let new_index = mtable_pairing[index][m];\n mtable[index][m] = new_index + 6 * 12 * 12 * phase1_c_update[m];\n mtable[index + 6 * 12 * 12][m] =\n new_index + 6 * 12 * 12 * ((phase1_c_update[m] + 1) % 3);\n mtable[index + 2 * 6 * 12 * 12][m] =\n new_index + 6 * 12 * 12 * ((phase1_c_update[m] + 2) % 3);\n }\n }\n return (tables.phase1pcm = mtable);\n}\n\nfunction generate_phase1_pairing2c_ptable() {\n if (tables.phase1p2cp) {\n return tables.phase1p2cp;\n }\n let mtable_noc = generate_phase1_pairing_mtable();\n let mtable = generate_phase1_pairingc_mtable();\n let ptable = new Int8Array((6 * 12 * 12) ** 2 * 3);\n ptable.fill(-1);\n let g = [0, 1, 2, 3, 4, 5].map((x) => x + 6 * x + 72 * (x + 6));\n for (let i = 0; i < 6; i++)\n for (let j = 0; j < 6; j++) {\n if (i === j) continue;\n ptable[g[i] + 864 * g[j]] = 0;\n }\n let dist = 0;\n while (true) {\n let changed = false;\n for (let index = 0; index < ptable.length; index++) {\n if (ptable[index] !== dist) {\n continue;\n }\n let index0 = index % 864,\n index1 = Math.floor(index / 864);\n for (let m = 0; m < N_MOVES; m++) {\n let new_index0 = index0,\n new_index1 = index1;\n for (let r = 1; r <= 2; r++) {\n new_index0 = mtable_noc[new_index0][m];\n new_index1 = mtable[new_index1][m];\n let new_index = new_index0 + 864 * new_index1;\n if (ptable[new_index] === -1) {\n changed = true;\n ptable[new_index] = dist + 1;\n }\n }\n }\n }\n if (!changed) {\n break;\n }\n dist++;\n }\n return (tables.phase1p2cp = ptable);\n}\n\nfunction generate_phase1_full_ptable() {\n // extremely slow, do not use\n if (tables.phase1p) {\n return tables.phase1p;\n }\n const HALFFACT12 = factorial(12) / 2;\n const SIZE = HALFFACT12 * 3;\n let ptable = new Int8Array(SIZE).fill(-1);\n ptable[0] = 0;\n let dist = 0;\n let perm = new Int8Array(12),\n new_perm = new Int8Array(12);\n while (true) {\n let changed = false;\n let count = 0;\n for (let index = 0; index < SIZE; index++) {\n if (ptable[index] !== dist) {\n continue;\n }\n count++;\n let cindex = index % 3;\n let windex = (index - cindex) / 3;\n index_to_evenpermutation12(windex, perm);\n for (let m = 0; m < N_MOVES; m++) {\n let move_m = phase1_permtable_m[m],\n move_minv = phase1_permtable_minv[m];\n let move_w = phase1_permtable_w[m],\n move_winv = phase1_permtable_winv[m];\n {\n // clockwise move\n let new_cindex = (cindex + phase1_c_update[m]) % 3;\n for (let i = 0; i < 12; i++) {\n new_perm[i] = move_minv[perm[move_w[i]]];\n }\n let new_windex = evenpermutation12_to_index(new_perm);\n let new_index = new_cindex + 3 * new_windex;\n if (ptable[new_index] === -1) {\n changed = true;\n ptable[new_index] = dist + 1;\n }\n }\n {\n // anticlockwise move\n let new_cindex = (cindex + 3 - phase1_c_update[m]) % 3;\n for (let i = 0; i < 12; i++) {\n new_perm[i] = move_m[perm[move_winv[i]]];\n }\n let new_windex = evenpermutation12_to_index(new_perm);\n let new_index = new_cindex + 3 * new_windex;\n if (ptable[new_index] === -1) {\n changed = true;\n ptable[new_index] = dist + 1;\n }\n }\n }\n }\n console.log(`${count} nodes at depth ${dist}`);\n if (!changed) {\n break;\n }\n dist++;\n }\n return (tables.phase1p = ptable);\n}\n\nfunction generate_phase2_permutation_mtable() {\n if (tables.phase2pm) {\n return tables.phase2pm;\n }\n let mtable = Array(1440)\n .fill()\n .map(() => Array(N_MOVES_PHASE2));\n for (let ep = 0; ep < 360; ep++) {\n let perm = index_to_evenpermutation(ep, 6);\n // fill in the \"opposite\" values\n for (let i = 0; i < 6; i++) {\n perm[i + 6] = perm[i] + 6;\n }\n for (let m = 0; m < N_MOVES_PHASE2; m++) {\n let new_perm = compose(perm, moves[m].mp);\n let new_ep = evenpermutation_to_index(\n new_perm.slice(0, 6).map((x) => x % 6),\n );\n for (let new_cloc = 0; new_cloc < 4; new_cloc++) {\n let cloc = moves[m].cp[new_cloc];\n mtable[ep + 360 * cloc][m] = new_ep + 360 * new_cloc;\n }\n }\n }\n return (tables.phase2pm = mtable);\n}\n\nfunction generate_phase2_orientation_mtable() {\n if (tables.phase2om) {\n return tables.phase2om;\n }\n let mtable = Array(32 * 81)\n .fill()\n .map(() => Array(N_MOVES_PHASE2));\n for (let eo = 0; eo < 32; eo++) {\n let eo_array = [0, 1, 2, 3, 4].map((i) => (eo >> i) & 1);\n eo_array[5] = eo_array.reduce((x, y) => x ^ y);\n let perm = [];\n for (let i = 0; i < 6; i++) {\n perm[i] = i + 6 * eo_array[i];\n perm[i + 6] = i + 6 * (eo_array[i] ^ 1);\n }\n for (let co = 0; co < 81; co++) {\n let co_array = [0, 1, 2, 3].map((i) => Math.floor(co / 3 ** i) % 3);\n for (let m = 0; m < N_MOVES_PHASE2; m++) {\n let new_perm = compose(perm, moves[m].mp);\n let new_eo_array = new_perm.slice(0, 5).map((x) => +(x >= 6));\n let new_eo = 0;\n for (let i = 0; i < 5; i++) {\n new_eo += new_eo_array[i] << i;\n }\n let new_co_array = co_array.map((x, i) => (x + moves[m].co[i]) % 3);\n let new_co = 0;\n for (let i = 0; i < 4; i++) {\n new_co += new_co_array[i] * 3 ** i;\n }\n mtable[eo + 32 * co][m] = new_eo + 32 * new_co;\n }\n }\n }\n return (tables.phase2om = mtable);\n}\n\nfunction generate_phase2_permutation_ptable() {\n if (tables.phase2pp) {\n return tables.phase2pp;\n }\n return (tables.phase2pp = bfs(generate_phase2_permutation_mtable(), [0]));\n}\n\nfunction generate_phase2_orientation_ptable() {\n if (tables.phase2op) {\n return tables.phase2op;\n }\n return (tables.phase2op = bfs(generate_phase2_orientation_mtable(), [0]));\n}\n\nfunction bfs(mtable, goal_states) {\n let N = mtable.length;\n let nmoves = mtable[0].length;\n let ptable = Array(N).fill(-1);\n let queue = goal_states.slice(),\n new_queue = [];\n let depth = 0;\n while (queue.length > 0) {\n new_queue.length = 0;\n for (let state of queue) {\n if (ptable[state] !== -1) continue;\n ptable[state] = depth;\n for (let move_index = 0; move_index < nmoves; move_index++) {\n let new_state = mtable[state][move_index];\n while (new_state != state) {\n new_queue.push(new_state);\n new_state = mtable[new_state][move_index];\n }\n }\n }\n [queue, new_queue] = [new_queue, queue];\n depth += 1;\n }\n return ptable;\n}\n\nfunction* 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 while (bound <= moves_left) {\n yield* ida_search_gen(indices, mtables, ptables, bound, -1);\n bound++;\n }\n}\n\nfunction* ida_search_gen(indices, mtables, ptables, bound, last) {\n let ncoords = indices.length;\n let nmoves = mtables[0][0].length;\n let heuristic = 0;\n for (let i = 0; i < ncoords; i++)\n heuristic = Math.max(heuristic, ptables[i][indices[i]]);\n if (heuristic > bound) return;\n if (bound === 0) {\n yield [];\n return;\n }\n if (heuristic === 0 && bound === 1) return;\n for (let m = 0; m < nmoves; m++) {\n if (m === last) continue;\n if (m < last && moves_commute(m, last)) continue;\n let new_indices = indices.slice();\n for (let c = 0; c < ncoords; c++)\n new_indices[c] = mtables[c][indices[c]][m];\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 );\n while (true) {\n let { value: subpath, done } = subpath_gen.next();\n if (done) break;\n yield [[m, r]].concat(subpath);\n }\n for (let c = 0; c < ncoords; c++) {\n new_indices[c] = mtables[c][new_indices[c]][m];\n }\n r++;\n }\n }\n}\n\nconst randomUintBelow = randomUIntBelowFactory();\nexport async function randomMasterTetraminxScrambleString() {\n return generate_scramble_sequence(await randomUintBelow, false);\n}\n"],
5
- "mappings": "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",
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,16 @@
1
+ import {
2
+ cachedMegaminxKPuzzleWithoutMO,
3
+ cachedSGSDataMegaminx,
4
+ sgsDataMegaminx
5
+ } from "./chunk-OFGQQQBY.js";
6
+ import "./chunk-FB7SFELN.js";
7
+ import "./chunk-ODQRVWJB.js";
8
+ import "./chunk-YAOUFM4D.js";
9
+ import "./chunk-DO7GZAW4.js";
10
+ import "./chunk-MGJA5U5O.js";
11
+ export {
12
+ cachedMegaminxKPuzzleWithoutMO,
13
+ cachedSGSDataMegaminx,
14
+ sgsDataMegaminx
15
+ };
16
+ //# sourceMappingURL=megaminx.sgs.json-O2B5OU3T.js.map
@@ -2,9 +2,9 @@ import {
2
2
  countAnimatedLeaves,
3
3
  countMoves,
4
4
  countQuantumMoves
5
- } from "../chunk-U2TSTTDG.js";
6
- import "../chunk-EWRBHQFX.js";
7
- import "../chunk-WO2AXYFE.js";
5
+ } from "../chunk-NSLR2SC4.js";
6
+ import "../chunk-DO7GZAW4.js";
7
+ import "../chunk-MGJA5U5O.js";
8
8
  export {
9
9
  countAnimatedLeaves as experimentalCountAnimatedLeaves,
10
10
  countMoves as experimentalCountMoves,
@@ -6,10 +6,10 @@ import {
6
6
  spacedHexToBuffer,
7
7
  twizzleBinaryToBinaryComponents,
8
8
  twizzleBinaryToReid3x3x3
9
- } from "../chunk-ANYSPBCR.js";
10
- import "../chunk-MVKZPDII.js";
11
- import "../chunk-EWRBHQFX.js";
12
- import "../chunk-WO2AXYFE.js";
9
+ } from "../chunk-6BUCXDZU.js";
10
+ import "../chunk-YAOUFM4D.js";
11
+ import "../chunk-DO7GZAW4.js";
12
+ import "../chunk-MGJA5U5O.js";
13
13
  export {
14
14
  bufferToSpacedHex,
15
15
  binaryComponentsToReid3x3x3 as experimentalBinaryComponentsToReid3x3x3,
@@ -9,9 +9,9 @@ import {
9
9
  parseOptions,
10
10
  parsePuzzleDescription,
11
11
  schreierSims
12
- } from "../chunk-F5WNHV7V.js";
13
- import "../chunk-EWRBHQFX.js";
14
- import "../chunk-WO2AXYFE.js";
12
+ } from "../chunk-ODQRVWJB.js";
13
+ import "../chunk-DO7GZAW4.js";
14
+ import "../chunk-MGJA5U5O.js";
15
15
  export {
16
16
  PGNotation as ExperimentalPGNotation,
17
17
  PuzzleGeometry,
@@ -7,12 +7,12 @@ import {
7
7
  getFaceletAppearance,
8
8
  puzzles,
9
9
  wcaEventInfo
10
- } from "../chunk-CNIY6YZL.js";
10
+ } from "../chunk-QKEGKHT5.js";
11
11
  import {
12
12
  experimental3x3x3KPuzzle
13
- } from "../chunk-MVKZPDII.js";
14
- import "../chunk-EWRBHQFX.js";
15
- import "../chunk-WO2AXYFE.js";
13
+ } from "../chunk-YAOUFM4D.js";
14
+ import "../chunk-DO7GZAW4.js";
15
+ import "../chunk-MGJA5U5O.js";
16
16
  export {
17
17
  cube2x2x2,
18
18
  cube3x3x3,
@@ -1,4 +1,4 @@
1
- import "./chunk-WO2AXYFE.js";
1
+ import "./chunk-MGJA5U5O.js";
2
2
 
3
3
  // src/cubing/puzzles/implementations/pyraminx/pyraminx.kpuzzle.svg.ts
4
4
  var pyraminx_kpuzzle_svg_default = `<?xml version="1.0" encoding="UTF-8"?>
@@ -92,4 +92,4 @@ var pyraminx_kpuzzle_svg_default = `<?xml version="1.0" encoding="UTF-8"?>
92
92
  export {
93
93
  pyraminx_kpuzzle_svg_default as default
94
94
  };
95
- //# sourceMappingURL=pyraminx.kpuzzle.svg-QBBMZVDY.js.map
95
+ //# sourceMappingURL=pyraminx.kpuzzle.svg-UHDZCBET.js.map
@@ -0,0 +1,14 @@
1
+ import {
2
+ sgsDataPyraminx,
3
+ sgsDataPyraminxFixedOrientation
4
+ } from "./chunk-RREJ3MSB.js";
5
+ import "./chunk-FB7SFELN.js";
6
+ import "./chunk-QKEGKHT5.js";
7
+ import "./chunk-YAOUFM4D.js";
8
+ import "./chunk-DO7GZAW4.js";
9
+ import "./chunk-MGJA5U5O.js";
10
+ export {
11
+ sgsDataPyraminx,
12
+ sgsDataPyraminxFixedOrientation
13
+ };
14
+ //# sourceMappingURL=pyraminx.sgs.json-NTELD4DU.js.map
@@ -1,13 +1,13 @@
1
+ "use strict";
1
2
  import {
2
3
  randomUIntBelowFactory
3
- } from "./chunk-RENZB7QN.js";
4
+ } from "./chunk-43SBQEWR.js";
4
5
  import {
5
6
  Alg
6
- } from "./chunk-EWRBHQFX.js";
7
- import "./chunk-WO2AXYFE.js";
7
+ } from "./chunk-DO7GZAW4.js";
8
+ import "./chunk-MGJA5U5O.js";
8
9
 
9
10
  // src/cubing/vendor/xyzzy/redi_cube.js
10
- "use strict";
11
11
  function factorial(n) {
12
12
  if (n < 2)
13
13
  return n;
@@ -233,7 +233,7 @@ function solve(state) {
233
233
  ];
234
234
  let phase1gen = ida_solve_gen(phase1_indices, phase1_mtables, phase1_ptables);
235
235
  let best = void 0;
236
- let intermediate_states = new Set();
236
+ let intermediate_states = /* @__PURE__ */ new Set();
237
237
  let start_time = +new Date();
238
238
  for (let i = 0; i < 25; i++) {
239
239
  let { value: sol1, done } = phase1gen.next();
@@ -558,7 +558,8 @@ var randomUintBelow = randomUIntBelowFactory();
558
558
  async function getRandomRediCubeScramble() {
559
559
  return new Alg(stringify_move_sequence(generate_random_state_scramble(await randomUintBelow)));
560
560
  }
561
+ "use strict";
561
562
  export {
562
563
  getRandomRediCubeScramble
563
564
  };
564
- //# sourceMappingURL=redi_cube-E5F64NIQ.js.map
565
+ //# sourceMappingURL=redi_cube-FYRLEZZH.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/cubing/vendor/xyzzy/redi_cube.js"],
4
4
  "sourcesContent": ["/* eslint-disable */\n/* Redi cube scramble generator */\n// From https://torchlight.github.io/rediscrambler.js\n// Added to `cubing.js` under the GPL license by permission from the author (@torchlight/xyzzy).\n\n\"use strict\";\n\nimport { Alg } from \"../../alg\";\nimport { randomUIntBelowFactory } from \"../random-uint-below\";\n\nfunction counter(A) {\n let counts = [];\n for (let a of A) counts[a] = (counts[a] || 0) + 1;\n return counts;\n}\n\n/* Combinatoric functions */\n\nfunction factorial(n) {\n if (n < 2) return n;\n let f = 1;\n for (let i = 2; i <= n; i++) f *= i;\n return f;\n}\n\nfunction C(n, k) {\n if (k < 0 || k > n) return 0;\n if (k === 0 || k === n) return 1;\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 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 // could probably use some kind of binary tree to make this linearithmic, but I am hella lazy.\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 // again, there is a linearithmic algorithm to count inversions, but >lazy\n for (let i = 0; i < n - 1; i++) {\n for (let j = i; j < n; j++) {\n if (A[i] > A[j]) parity ^= 1;\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]) perm[j]++;\n else parity ^= 1;\n }\n }\n if (parity === 1) [perm[n - 2], perm[n - 1]] = [perm[n - 1], perm[n - 2]];\n return perm;\n}\n\nfunction evenpermutation_to_index(perm) {\n return permutation_to_index(perm) >> 1;\n}\n\nfunction comb_to_index(l) {\n let bits = l.length;\n let ones = 0;\n for (let i = 0; i < bits; i++) ones += +(l[i] === 1);\n let zeros = bits - ones;\n if (zeros === 0 || ones === 0 || bits === 1) return 0;\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 } // l[i] === 1\n else {\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\nfunction compose(A, B) {\n let C = [];\n for (let i = 0; i < B.length; i++) C[i] = A[B[i]];\n return C;\n}\n\nfunction permutation_from_cycle(cycle, n) {\n let perm = [];\n for (let i = 0; i < n; i++) perm[i] = i;\n for (let i = 0; i < cycle.length; i++) {\n perm[cycle[i]] = cycle[(i + 1) % cycle.length];\n }\n return perm;\n}\n\nfunction unsparsify_list(d, n) {\n let l = Array(n).fill(0);\n for (let k in d) l[k] = d[k];\n return l;\n}\n\nfunction compose_state(state1, state2) {\n let o = Array(8).fill(0);\n for (let i = 0; i < 8; i++) o[i] = (state1[1][i] + state2[1][i]) % 3;\n return [compose(state1[0], state2[0]), o];\n}\n\nlet move_UL = [\n permutation_from_cycle([0, 1, 4], 12),\n unsparsify_list({ 0: 2 }, 8),\n];\nlet move_U = [\n permutation_from_cycle([1, 2, 5], 12),\n unsparsify_list({ 1: 2 }, 8),\n];\nlet move_UR = [\n permutation_from_cycle([2, 3, 6], 12),\n unsparsify_list({ 2: 2 }, 8),\n];\nlet move_F = [\n permutation_from_cycle([3, 0, 7], 12),\n unsparsify_list({ 3: 2 }, 8),\n];\nlet move_L = [\n permutation_from_cycle([9, 8, 4], 12),\n unsparsify_list({ 4: 2 }, 8),\n];\nlet move_B = [\n permutation_from_cycle([10, 9, 5], 12),\n unsparsify_list({ 5: 2 }, 8),\n];\nlet move_R = [\n permutation_from_cycle([11, 10, 6], 12),\n unsparsify_list({ 6: 2 }, 8),\n];\nlet move_D = [\n permutation_from_cycle([8, 11, 7], 12),\n unsparsify_list({ 7: 2 }, 8),\n];\n\nlet solved = [index_to_permutation(0, 12), Array(8).fill(0)];\n\nlet moves = [move_UL, move_U, move_UR, move_F, move_L, move_B, move_R, move_D];\nlet move_names = [\"UL\", \"U\", \"UR\", \"F\", \"L\", \"B\", \"R\", \"D\"];\nlet tetrad = [0, 1, 0, 1, 1, 0, 1, 0];\n\nfunction apply_move_sequence(state, move_sequence) {\n for (let [m, r] of move_sequence) {\n for (let i = 0; i < r; i++) state = compose_state(state, moves[m]);\n }\n return state;\n}\n\nfunction stringify_move_sequence(move_sequence) {\n let suffixes = [\"0\", \"\", \"'\"];\n let s = move_sequence.map(([m, r]) => move_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 generate_random_state(randomUintBelow) {\n let p = index_to_evenpermutation(\n Math.floor(randomUintBelow(factorial(12)) / 2),\n 12,\n );\n let o = Array(8);\n for (let i = 0; i < 8; i++) o[i] = randomUintBelow(3);\n return [p, o];\n}\n\nfunction generate_random_state_scramble(randomUintBelow) {\n return solve(generate_random_state(randomUintBelow));\n}\n\nfunction generate_scramble_sequence() {\n return stringify_move_sequence(generate_random_state_scramble());\n}\n\nfunction solve(state) {\n let phase1_indices = index_phase1(state);\n let phase1_mtables = [\n generate_phase1_edge_mtable(),\n generate_phase1_separate_mtable(),\n ];\n let phase1_ptables = [\n generate_phase1_edge_ptable(),\n generate_phase1_separate_ptable(),\n ];\n let phase2_mtables = [\n generate_phase2_edge_mtable(),\n generate_phase2_corner_mtable(),\n ];\n let phase2_ptables = [\n generate_phase2_edge_ptable(),\n generate_phase1_corner_ptable(),\n ];\n\n let phase1gen = ida_solve_gen(phase1_indices, phase1_mtables, phase1_ptables);\n let best = undefined;\n let intermediate_states = new Set();\n let start_time = +new Date();\n for (let i = 0; i < 25; i++) {\n let { value: sol1, done } = phase1gen.next();\n let new_state = state;\n for (let [m, r] of sol1) {\n for (let i = 0; i < r; i++)\n new_state = compose_state(new_state, moves[m]);\n }\n if (intermediate_states.has(new_state.toString())) {\n // console.log(\"skip\");\n continue;\n } else intermediate_states.add(new_state.toString());\n let edge_ind = evenpermutation_to_index(new_state[0].slice(0, 8));\n let corner_ind = 0;\n for (let i = 0; i < 4; i++) corner_ind += new_state[1][i] * 3 ** i;\n let phase2_indices = [edge_ind, corner_ind];\n //let sol2 = [];\n let moves_left = best ? best.length - sol1.length - 1 : 999999;\n let sol2 = ida_solve(\n phase2_indices,\n phase2_mtables,\n phase2_ptables,\n moves_left,\n );\n if (sol2 === undefined) {\n // console.log(\"prune\");\n continue;\n }\n // console.log(\n // `to ${new_state} in ${sol1.length} moves; total move count ${\n // sol1.length + sol2.length\n // }`,\n // );\n if (best === undefined || best.length > sol1.length + sol2.length) {\n best = sol1.concat(sol2);\n }\n // bail if we've spent too much time\n if (new Date() - start_time > 300) break;\n }\n return best;\n}\n\nfunction index_phase1(state) {\n let edge_ind = 0;\n for (let i = 0; i < 4; i++) edge_ind += state[0].indexOf(i + 8) * 12 ** i;\n let corner_ind = 0;\n for (let i = 0; i < 4; i++) corner_ind += state[1][i + 4] * 3 ** i;\n let filtered = state[0].map((x) => Math.max(-1, x - 8));\n let separate_ind =\n comb_to_index(filtered.map((x) => +(x >= 0))) * 2 +\n permutation_parity(filtered.filter((x) => x >= 0));\n return [edge_ind, corner_ind + 81 * separate_ind];\n}\n\nlet tables = {};\n\nfunction generate_phase1_corner_mtable() {\n if (tables.phase1cm) return tables.phase1cm;\n let mtable = [];\n for (let i = 0; i < 81; i++) {\n mtable[i] = Array(8);\n let o = [\n i % 3,\n Math.floor(i / 3) % 3,\n Math.floor(i / 9) % 3,\n Math.floor(i / 27),\n ];\n mtable[i][0] = mtable[i][1] = mtable[i][2] = mtable[i][3] = i;\n for (let j = 0; j < 4; j++) {\n o[j] = (o[j] + 2) % 3;\n mtable[i][4 + j] = o[0] + o[1] * 3 + o[2] * 9 + o[3] * 27;\n o[j] = (o[j] + 1) % 3;\n }\n }\n return (tables.phase1cm = mtable);\n}\n\nfunction generate_phase1_corner_ptable() {\n if (tables.phase1cp) return tables.phase1cp;\n let ptable = Array(81);\n for (let i = 0; i < 81; i++) {\n let o = [\n i % 3,\n Math.floor(i / 3) % 3,\n Math.floor(i / 9) % 3,\n Math.floor(i / 27),\n ];\n ptable[i] = (o[0] !== 0) + (o[1] !== 0) + (o[2] !== 0) + (o[3] !== 0);\n }\n return (tables.phase1cp = ptable);\n}\n\nfunction generate_phase1_edge_mtable() {\n if (tables.phase1em) return tables.phase1em;\n let mtable_single = [];\n for (let i = 0; i < 12; i++) {\n mtable_single[i] = [];\n for (let m = 0; m < 8; m++) {\n mtable_single[i][m] = moves[m][0].indexOf(i);\n }\n }\n let mtable = Array(12 ** 4);\n for (let i = 0; i < 12 ** 4; i++) {\n mtable[i] = Array(8);\n for (let m = 0; m < 8; m++) {\n let I = 0;\n for (let j = 0; j < 4; j++) {\n I += mtable_single[Math.floor(i / 12 ** j) % 12][m] * 12 ** j;\n }\n mtable[i][m] = I;\n }\n }\n return (tables.phase1em = mtable);\n}\n\nfunction generate_phase1_edge_ptable() {\n if (tables.phase1ep) return tables.phase1ep;\n return (tables.phase1ep = bfs(generate_phase1_edge_mtable(), [\n 8 + 12 * (9 + 12 * (10 + 12 * 11)),\n ]));\n}\n\nfunction generate_phase1_separate_mtable() {\n if (tables.phase1sm) return tables.phase1sm;\n const C12_4 = C(12, 4);\n let mtable_c = [];\n for (let i = 0; i < C12_4; i++) {\n mtable_c[i] = [];\n let comb = index_to_comb(i, 4, 12),\n perm = [];\n for (let j = 0, k = 0; j < 12; j++) {\n if (comb[j] === 0) perm[j] = -1;\n else perm[j] = k++;\n }\n for (let m = 0; m < 8; m++) {\n let new_perm = compose(perm, moves[m][0]);\n let new_comb = compose(comb, moves[m][0]);\n let parity = permutation_parity(new_perm.filter((x) => x >= 0));\n mtable_c[i][m] = comb_to_index(new_comb) * 2 + parity;\n }\n }\n let mtable_co = generate_phase1_corner_mtable();\n let mtable = [];\n for (let j = 0; j < C12_4; j++) {\n for (let i = 0; i < 81; i++) {\n let m0 = (mtable[i + 81 * (2 * j)] = []);\n let m1 = (mtable[i + 81 * (2 * j + 1)] = []);\n for (let m = 0; m < 8; m++) {\n m0[m] = mtable_co[i][m] + 81 * mtable_c[j][m];\n m1[m] = mtable_co[i][m] + 81 * (mtable_c[j][m] ^ 1);\n }\n }\n }\n return (tables.phase1sm = mtable);\n}\n\nfunction generate_phase1_separate_ptable() {\n if (tables.phase1sp) return tables.phase1sp;\n return (tables.phase1sp = bfs(generate_phase1_separate_mtable(), [0]));\n}\n\nfunction generate_phase2_corner_mtable() {\n if (tables.phase2cm) return tables.phase2cm;\n let phase1_mtable = generate_phase1_corner_mtable();\n let mtable = Array(81);\n for (let i = 0; i < 81; i++) {\n mtable[i] = phase1_mtable[i].slice(4, 8);\n }\n return (tables.phase2cm = mtable);\n}\n\nfunction generate_phase2_edge_mtable() {\n if (tables.phase2em) return tables.phase2em;\n const n = 8;\n const HALFFACT8 = factorial(n) / 2;\n let mtable = Array(HALFFACT8);\n let perm = [0, 1, 2, 3, 4, 5, 6, 7];\n for (let i = 0; i < HALFFACT8; i++) {\n //perm = index_to_evenpermutation(i, 8);\n mtable[i] = Array(4);\n for (let m = 0; m < 4; m++) {\n let new_perm = compose(perm, moves[m][0].slice(0, 8));\n mtable[i][m] = evenpermutation_to_index(new_perm);\n }\n\n if (i === HALFFACT8 - 1) break;\n // update perm to lex-next even permutation\n let parity = 0;\n do {\n for (let k = n - 2; k >= 0; k--) {\n if (perm[k] > perm[k + 1]) continue;\n let l = k + 1;\n for (let L = l; L < n; L++) if (perm[L] > perm[k]) l = L;\n [perm[k], perm[l]] = [perm[l], perm[k]];\n parity ^= 1;\n for (let j = 0; k + 1 + j < n - 1 - j; j++, parity ^= 1) {\n [perm[k + 1 + j], perm[n - 1 - j]] = [\n perm[n - 1 - j],\n perm[k + 1 + j],\n ];\n }\n break;\n }\n } while (parity !== 0);\n }\n return (tables.phase2em = mtable);\n}\n\nfunction generate_phase2_edge_ptable() {\n if (tables.phase2ep) return tables.phase2ep;\n return (tables.phase2ep = bfs(generate_phase2_edge_mtable(), [0]));\n}\n\nfunction bfs(mtable, goal_states) {\n let N = mtable.length;\n let nmoves = mtable[0].length;\n let ptable = Array(N).fill(-1);\n let queue = goal_states.slice(),\n new_queue = [];\n let depth = 0;\n while (queue.length > 0) {\n new_queue.length = 0;\n for (let state of queue) {\n if (ptable[state] !== -1) continue;\n ptable[state] = depth;\n for (let move_index = 0; move_index < nmoves; move_index++) {\n let new_state = mtable[state][move_index];\n while (new_state != state) {\n new_queue.push(new_state);\n new_state = mtable[new_state][move_index];\n }\n }\n }\n [queue, new_queue] = [new_queue, queue];\n depth += 1;\n }\n return ptable;\n}\n\nfunction ida_solve(indices, mtables, ptables, max_bound) {\n max_bound = max_bound || 999999;\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 while (bound <= max_bound) {\n let path = ida_search(indices, mtables, ptables, bound, -1);\n if (path !== undefined) return path;\n bound++;\n }\n}\n\nfunction ida_search(indices, mtables, ptables, bound, last) {\n let ncoords = indices.length;\n let nmoves = mtables[0][0].length;\n let heuristic = 0;\n for (let i = 0; i < ncoords; i++)\n heuristic = Math.max(heuristic, ptables[i][indices[i]]);\n if (heuristic > bound) return;\n if (bound === 0) return [];\n if (heuristic === 0 && bound === 1) return;\n for (let m = 0; m < nmoves; m++) {\n if (m === last) continue;\n if (m < last && tetrad[m] == tetrad[last]) continue;\n let new_indices = indices.slice();\n for (let c = 0; c < ncoords; c++)\n new_indices[c] = mtables[c][indices[c]][m];\n let r = 1;\n while (indices.some((_, i) => indices[i] != new_indices[i])) {\n let subpath = ida_search(new_indices, mtables, ptables, bound - 1, m);\n if (subpath !== undefined) return [[m, r]].concat(subpath);\n for (let c = 0; c < ncoords; c++) {\n new_indices[c] = mtables[c][new_indices[c]][m];\n }\n r++;\n }\n }\n return;\n}\n\nfunction* ida_solve_gen(indices, mtables, ptables) {\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 while (true) {\n yield* ida_search_gen(indices, mtables, ptables, bound, -1);\n bound++;\n }\n}\n\nfunction* ida_search_gen(indices, mtables, ptables, bound, last) {\n let ncoords = indices.length;\n let nmoves = mtables[0][0].length;\n let heuristic = 0;\n for (let i = 0; i < ncoords; i++)\n heuristic = Math.max(heuristic, ptables[i][indices[i]]);\n if (heuristic > bound) return;\n if (bound === 0) {\n yield [];\n return;\n }\n if (heuristic === 0 && bound === 1) return;\n for (let m = 0; m < nmoves; m++) {\n if (m === last) continue;\n if (m < last && tetrad[m] == tetrad[last]) continue;\n let new_indices = indices.slice();\n for (let c = 0; c < ncoords; c++)\n new_indices[c] = mtables[c][indices[c]][m];\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 );\n while (true) {\n let { value: subpath, done } = subpath_gen.next();\n if (done) break;\n yield [[m, r]].concat(subpath);\n }\n for (let c = 0; c < ncoords; c++) {\n new_indices[c] = mtables[c][new_indices[c]][m];\n }\n r++;\n }\n }\n}\n\nconst randomUintBelow = randomUIntBelowFactory();\nexport async function getRandomRediCubeScramble() {\n return new Alg(\n stringify_move_sequence(\n generate_random_state_scramble(await randomUintBelow),\n ),\n );\n}\n"],
5
- "mappings": "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",
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -1,4 +1,4 @@
1
- import "./chunk-WO2AXYFE.js";
1
+ import "./chunk-MGJA5U5O.js";
2
2
 
3
3
  // src/cubing/puzzles/implementations/redi-cube/redi_cube.kpuzzle.json.ts
4
4
  var rediCubeKPuzzleDefinition = {
@@ -63,4 +63,4 @@ var rediCubeKPuzzleDefinition = {
63
63
  export {
64
64
  rediCubeKPuzzleDefinition
65
65
  };
66
- //# sourceMappingURL=redi_cube.kpuzzle.json-EPBKWOMV.js.map
66
+ //# sourceMappingURL=redi_cube.kpuzzle.json-43CP47Z6.js.map
@@ -1,4 +1,4 @@
1
- import "./chunk-WO2AXYFE.js";
1
+ import "./chunk-MGJA5U5O.js";
2
2
 
3
3
  // src/cubing/puzzles/implementations/redi-cube/redi_cube.kpuzzle.svg.ts
4
4
  var rediCubeSVG = `<?xml version="1.0" encoding="UTF-8"?>
@@ -157,4 +157,4 @@ var rediCubeSVG = `<?xml version="1.0" encoding="UTF-8"?>
157
157
  export {
158
158
  rediCubeSVG
159
159
  };
160
- //# sourceMappingURL=redi_cube.kpuzzle.svg-BSHCMC2Z.js.map
160
+ //# sourceMappingURL=redi_cube.kpuzzle.svg-3DWDYE3O.js.map
@@ -1,14 +1,14 @@
1
1
  import {
2
2
  randomScrambleForEvent
3
- } from "../chunk-HFQZM22L.js";
3
+ } from "../chunk-XBH5IPB2.js";
4
4
  import "../chunk-BEXHMXCT.js";
5
- import "../chunk-IVQ4ITE2.js";
6
- import "../chunk-NROLOGGL.js";
7
- import "../chunk-RENZB7QN.js";
8
- import "../chunk-CNIY6YZL.js";
9
- import "../chunk-MVKZPDII.js";
10
- import "../chunk-EWRBHQFX.js";
11
- import "../chunk-WO2AXYFE.js";
5
+ import "../chunk-GBMX6FHY.js";
6
+ import "../chunk-Z35CBICW.js";
7
+ import "../chunk-43SBQEWR.js";
8
+ import "../chunk-QKEGKHT5.js";
9
+ import "../chunk-YAOUFM4D.js";
10
+ import "../chunk-DO7GZAW4.js";
11
+ import "../chunk-MGJA5U5O.js";
12
12
  export {
13
13
  randomScrambleForEvent
14
14
  };
@@ -6,17 +6,17 @@ import {
6
6
  solveMegaminx,
7
7
  solvePyraminx,
8
8
  solveSkewb
9
- } from "../chunk-HFQZM22L.js";
9
+ } from "../chunk-XBH5IPB2.js";
10
10
  import "../chunk-BEXHMXCT.js";
11
- import "../chunk-IVQ4ITE2.js";
11
+ import "../chunk-GBMX6FHY.js";
12
12
  import {
13
13
  random333State
14
- } from "../chunk-NROLOGGL.js";
15
- import "../chunk-RENZB7QN.js";
16
- import "../chunk-CNIY6YZL.js";
17
- import "../chunk-MVKZPDII.js";
18
- import "../chunk-EWRBHQFX.js";
19
- import "../chunk-WO2AXYFE.js";
14
+ } from "../chunk-Z35CBICW.js";
15
+ import "../chunk-43SBQEWR.js";
16
+ import "../chunk-QKEGKHT5.js";
17
+ import "../chunk-YAOUFM4D.js";
18
+ import "../chunk-DO7GZAW4.js";
19
+ import "../chunk-MGJA5U5O.js";
20
20
  export {
21
21
  randomScrambleForEvent as experimentalRandomScrambleForEvent,
22
22
  experimentalSolve2x2x2,