cubing 0.22.1 → 0.23.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.
Files changed (141) hide show
  1. package/README.md +1 -1
  2. package/alg/package.json +1 -3
  3. package/bluetooth/package.json +1 -3
  4. package/dist/bundle-global/cubing.bundle-global.js +2979 -242
  5. package/dist/esm/2x2x2.sgs.json-FRBWMMA7.js +122 -0
  6. package/dist/esm/2x2x2.sgs.json-FRBWMMA7.js.map +7 -0
  7. package/dist/esm/{3d-M7GBIT3X.js → 3d-Q4WSD4BC.js} +3 -3
  8. package/dist/esm/{3d-M7GBIT3X.js.map → 3d-Q4WSD4BC.js.map} +0 -0
  9. package/dist/esm/bluetooth/index.d.ts +1 -1
  10. package/dist/esm/bluetooth/index.js +1 -1
  11. package/dist/esm/chunk-37EHU3GZ.js +66 -0
  12. package/dist/esm/chunk-37EHU3GZ.js.map +7 -0
  13. package/dist/esm/chunk-BJIOROQC.js +18 -0
  14. package/dist/esm/chunk-BJIOROQC.js.map +7 -0
  15. package/dist/esm/{chunk-R3HRHYIW.js → chunk-DK6PXBB2.js} +1 -1
  16. package/dist/esm/{chunk-R3HRHYIW.js.map → chunk-DK6PXBB2.js.map} +0 -0
  17. package/dist/esm/chunk-DPMEZY7V.js +1552 -0
  18. package/dist/esm/chunk-DPMEZY7V.js.map +7 -0
  19. package/dist/esm/chunk-FK2SCC3Z.js +499 -0
  20. package/dist/esm/chunk-FK2SCC3Z.js.map +7 -0
  21. package/dist/esm/chunk-JZWB7AIU.js +115 -0
  22. package/dist/esm/chunk-JZWB7AIU.js.map +7 -0
  23. package/dist/esm/chunk-MLOCDLUF.js +226 -0
  24. package/dist/esm/chunk-MLOCDLUF.js.map +7 -0
  25. package/dist/esm/{chunk-GF76PWEV.js → chunk-N3RNWU5T.js} +2 -2
  26. package/dist/esm/{chunk-GF76PWEV.js.map → chunk-N3RNWU5T.js.map} +0 -0
  27. package/dist/esm/chunk-PUPUQWJC.js +4065 -0
  28. package/dist/esm/chunk-PUPUQWJC.js.map +7 -0
  29. package/dist/esm/chunk-XVZOMB6J.js +89 -0
  30. package/dist/esm/chunk-XVZOMB6J.js.map +7 -0
  31. package/dist/esm/chunk-Z6X7HTPP.js +103 -0
  32. package/dist/esm/chunk-Z6X7HTPP.js.map +7 -0
  33. package/dist/esm/entry-L6CE2HLF.js +531 -0
  34. package/dist/esm/entry-L6CE2HLF.js.map +7 -0
  35. package/dist/esm/esm-test-worker.js +3 -14
  36. package/dist/esm/esm-test-worker.js.map +3 -3
  37. package/dist/esm/fto.sgs.json-62YNULOK.js +649 -0
  38. package/dist/esm/fto.sgs.json-62YNULOK.js.map +7 -0
  39. package/dist/esm/gwt-B7CBESZR.js +1669 -0
  40. package/dist/esm/gwt-B7CBESZR.js.map +7 -0
  41. package/dist/esm/megaminx.sgs.json-PRL46G5J.js +16 -0
  42. package/dist/esm/megaminx.sgs.json-PRL46G5J.js.map +7 -0
  43. package/dist/esm/module-entry-J2N3UZP7.js +18 -0
  44. package/dist/esm/module-entry-J2N3UZP7.js.map +7 -0
  45. package/dist/esm/{node-HFBX5WHK.js → node-W3AD4HBK.js} +2 -1
  46. package/dist/esm/node-W3AD4HBK.js.map +7 -0
  47. package/dist/esm/puzzle-geometry/index.js +11 -4051
  48. package/dist/esm/puzzle-geometry/index.js.map +3 -3
  49. package/dist/esm/puzzles/index.js +1 -1
  50. package/dist/esm/pyraminx.sgs.json-7QMPT5XP.js +14 -0
  51. package/dist/esm/pyraminx.sgs.json-7QMPT5XP.js.map +7 -0
  52. package/dist/esm/scramble/index.js +4 -2
  53. package/dist/esm/scramble_444-JP3CWLJM.js +2572 -0
  54. package/dist/esm/scramble_444-JP3CWLJM.js.map +7 -0
  55. package/dist/esm/scramble_sq1-PQ2AYBFW.js +706 -0
  56. package/dist/esm/scramble_sq1-PQ2AYBFW.js.map +7 -0
  57. package/dist/esm/search/index.js +6 -3
  58. package/dist/esm/skewb.sgs.json-FWHYACJG.js +16 -0
  59. package/dist/esm/skewb.sgs.json-FWHYACJG.js.map +7 -0
  60. package/dist/esm/twisty/index.js +3 -3
  61. package/dist/esm/worker-inside-generated-string-OWJA5IIQ.js +3450 -0
  62. package/dist/esm/worker-inside-generated-string-OWJA5IIQ.js.map +7 -0
  63. package/dist/types/search/inside/module-entry-path-getter.d.ts +2 -0
  64. package/dist/types/search/inside/module-entry-path-getter.d.ts.map +1 -0
  65. package/dist/types/search/inside/module-entry.d.ts +2 -0
  66. package/dist/types/search/inside/module-entry.d.ts.map +1 -0
  67. package/dist/types/search/inside/solve/puzzles/3x3x3/index.d.ts.map +1 -1
  68. package/dist/types/search/inside/solve/puzzles/4x4x4.d.ts +2 -1
  69. package/dist/types/search/inside/solve/puzzles/4x4x4.d.ts.map +1 -1
  70. package/dist/types/search/inside/solve/puzzles/sq1.d.ts.map +1 -1
  71. package/dist/types/search/instantiator.d.ts +1 -2
  72. package/dist/types/search/instantiator.d.ts.map +1 -1
  73. package/dist/types/search/worker-inside-generated-string.d.ts +1 -1
  74. package/dist/types/search/worker-inside-generated-string.d.ts.map +1 -1
  75. package/dist/types/vendor/comlink-everywhere/outside/node.d.ts.map +1 -1
  76. package/docs/.DS_Store +0 -0
  77. package/docs/cubing/.DS_Store +0 -0
  78. package/docs/cubing/index.html +1 -1
  79. package/kpuzzle/package.json +1 -3
  80. package/notation/package.json +1 -3
  81. package/package.json +2 -6
  82. package/protocol/package.json +1 -3
  83. package/puzzle-geometry/package.json +1 -3
  84. package/puzzles/package.json +1 -3
  85. package/scramble/package.json +1 -3
  86. package/search/package.json +1 -3
  87. package/src/cubing/.DS_Store +0 -0
  88. package/src/cubing/search/.DS_Store +0 -0
  89. package/src/cubing/search/inside/.DS_Store +0 -0
  90. package/src/cubing/search/inside/module-entry-path-getter.ts +5 -0
  91. package/src/cubing/search/inside/module-entry.ts +20 -0
  92. package/src/cubing/search/inside/solve/puzzles/3x3x3/index.ts +13 -3
  93. package/src/cubing/search/inside/solve/puzzles/4x4x4.ts +19 -5
  94. package/src/cubing/search/inside/solve/puzzles/fto.sgs.json.ts +356 -13
  95. package/src/cubing/search/inside/solve/puzzles/sq1.ts +12 -2
  96. package/src/cubing/search/instantiator.ts +75 -40
  97. package/src/cubing/search/worker-inside-generated-string.js +1 -1
  98. package/src/cubing/vendor/.DS_Store +0 -0
  99. package/src/cubing/vendor/comlink-everywhere/.DS_Store +0 -0
  100. package/src/cubing/vendor/comlink-everywhere/outside/node.js +1 -0
  101. package/src/cubing/vendor/cstimer/.DS_Store +0 -0
  102. package/src/cubing/{search/inside/solve/puzzles → vendor/cstimer/src}/.DS_Store +0 -0
  103. package/src/cubing/vendor/random-uint-below/random53BitValue.ts +1 -1
  104. package/src/cubing/vendor/sq12phase/scramble_sq1.js +2 -2
  105. package/src/cubing/{twisty/heavy-code-imports → vendor/three}/.DS_Store +0 -0
  106. package/src/cubing/{twisty/old/animation → vendor/three/examples}/.DS_Store +0 -0
  107. package/stream/package.json +1 -3
  108. package/twisty/package.json +1 -3
  109. package/alg/index.d.ts +0 -1
  110. package/bluetooth/index.d.ts +0 -1
  111. package/dist/.DS_Store +0 -0
  112. package/dist/esm/chunk-6BZSKSG7.js +0 -1368
  113. package/dist/esm/chunk-6BZSKSG7.js.map +0 -7
  114. package/dist/esm/index.d.ts +0 -1
  115. package/dist/esm/node-HFBX5WHK.js.map +0 -7
  116. package/dist/esm/worker-inside-generated-string-RQYYANYQ.js +0 -3107
  117. package/dist/esm/worker-inside-generated-string-RQYYANYQ.js.map +0 -7
  118. package/kpuzzle/index.d.ts +0 -1
  119. package/notation/index.d.ts +0 -1
  120. package/protocol/index.d.ts +0 -1
  121. package/puzzle-geometry/index.d.ts +0 -1
  122. package/puzzles/index.d.ts +0 -1
  123. package/scramble/index.d.ts +0 -1
  124. package/search/index.d.ts +0 -1
  125. package/src/cubing/puzzles/.DS_Store +0 -0
  126. package/src/cubing/puzzles/implementations/.DS_Store +0 -0
  127. package/src/cubing/search/inside/solve/.DS_Store +0 -0
  128. package/src/cubing/search/inside/solve/vendor/.DS_Store +0 -0
  129. package/src/cubing/twisty/.DS_Store +0 -0
  130. package/src/cubing/twisty/controllers/.DS_Store +0 -0
  131. package/src/cubing/twisty/controllers/animation/.DS_Store +0 -0
  132. package/src/cubing/twisty/controllers/indexer/.DS_Store +0 -0
  133. package/src/cubing/twisty/model/.DS_Store +0 -0
  134. package/src/cubing/twisty/model/props/.DS_Store +0 -0
  135. package/src/cubing/twisty/model/props/puzzle/.DS_Store +0 -0
  136. package/src/cubing/twisty/old/.DS_Store +0 -0
  137. package/src/cubing/twisty/old/dom/.DS_Store +0 -0
  138. package/src/cubing/twisty/views/.DS_Store +0 -0
  139. package/src/cubing/twisty/views/3D/.DS_Store +0 -0
  140. package/stream/index.d.ts +0 -1
  141. package/twisty/index.d.ts +0 -1
@@ -0,0 +1,706 @@
1
+ import {
2
+ randomUIntBelowFactory
3
+ } from "./chunk-37EHU3GZ.js";
4
+ import "./chunk-WO2AXYFE.js";
5
+
6
+ // src/cubing/vendor/sq12phase/scramble_sq1.js
7
+ function FullCube_copy(obj, c) {
8
+ obj.ul = c.ul;
9
+ obj.ur = c.ur;
10
+ obj.dl = c.dl;
11
+ obj.dr = c.dr;
12
+ obj.ml = c.ml;
13
+ }
14
+ function FullCube_doMove(obj, move) {
15
+ var temp;
16
+ move <<= 2;
17
+ if (move > 24) {
18
+ move = 48 - move;
19
+ temp = obj.ul;
20
+ obj.ul = (~~obj.ul >> move | obj.ur << 24 - move) & 16777215;
21
+ obj.ur = (~~obj.ur >> move | temp << 24 - move) & 16777215;
22
+ } else if (move > 0) {
23
+ temp = obj.ul;
24
+ obj.ul = (obj.ul << move | ~~obj.ur >> 24 - move) & 16777215;
25
+ obj.ur = (obj.ur << move | ~~temp >> 24 - move) & 16777215;
26
+ } else if (move == 0) {
27
+ temp = obj.ur;
28
+ obj.ur = obj.dl;
29
+ obj.dl = temp;
30
+ obj.ml = 1 - obj.ml;
31
+ } else if (move >= -24) {
32
+ move = -move;
33
+ temp = obj.dl;
34
+ obj.dl = (obj.dl << move | ~~obj.dr >> 24 - move) & 16777215;
35
+ obj.dr = (obj.dr << move | ~~temp >> 24 - move) & 16777215;
36
+ } else if (move < -24) {
37
+ move = 48 + move;
38
+ temp = obj.dl;
39
+ obj.dl = (~~obj.dl >> move | obj.dr << 24 - move) & 16777215;
40
+ obj.dr = (~~obj.dr >> move | temp << 24 - move) & 16777215;
41
+ }
42
+ }
43
+ function FullCube_getParity(obj) {
44
+ var a, b, cnt, i, p;
45
+ cnt = 0;
46
+ obj.arr[0] = FullCube_pieceAt(obj, 0);
47
+ for (i = 1; i < 24; ++i) {
48
+ FullCube_pieceAt(obj, i) != obj.arr[cnt] && (obj.arr[++cnt] = FullCube_pieceAt(obj, i));
49
+ }
50
+ p = 0;
51
+ for (a = 0; a < 16; ++a) {
52
+ for (b = a + 1; b < 16; ++b) {
53
+ obj.arr[a] > obj.arr[b] && (p ^= 1);
54
+ }
55
+ }
56
+ return p;
57
+ }
58
+ function FullCube_getShapeIdx(obj) {
59
+ var dlx, drx, ulx, urx;
60
+ urx = obj.ur & 1118481;
61
+ urx |= ~~urx >> 3;
62
+ urx |= ~~urx >> 6;
63
+ urx = urx & 15 | ~~urx >> 12 & 48;
64
+ ulx = obj.ul & 1118481;
65
+ ulx |= ~~ulx >> 3;
66
+ ulx |= ~~ulx >> 6;
67
+ ulx = ulx & 15 | ~~ulx >> 12 & 48;
68
+ drx = obj.dr & 1118481;
69
+ drx |= ~~drx >> 3;
70
+ drx |= ~~drx >> 6;
71
+ drx = drx & 15 | ~~drx >> 12 & 48;
72
+ dlx = obj.dl & 1118481;
73
+ dlx |= ~~dlx >> 3;
74
+ dlx |= ~~dlx >> 6;
75
+ dlx = dlx & 15 | ~~dlx >> 12 & 48;
76
+ return Shape_getShape2Idx(FullCube_getParity(obj) << 24 | ulx << 18 | urx << 12 | dlx << 6 | drx);
77
+ }
78
+ function FullCube_getSquare(obj, sq) {
79
+ var a, b;
80
+ for (a = 0; a < 8; ++a) {
81
+ obj.prm[a] = ~~(~~FullCube_pieceAt(obj, a * 3 + 1) >> 1 << 24) >> 24;
82
+ }
83
+ sq.cornperm = get8Perm(obj.prm);
84
+ sq.topEdgeFirst = FullCube_pieceAt(obj, 0) == FullCube_pieceAt(obj, 1);
85
+ a = sq.topEdgeFirst ? 2 : 0;
86
+ for (b = 0; b < 4; a += 3, ++b)
87
+ obj.prm[b] = ~~(~~FullCube_pieceAt(obj, a) >> 1 << 24) >> 24;
88
+ sq.botEdgeFirst = FullCube_pieceAt(obj, 12) == FullCube_pieceAt(obj, 13);
89
+ a = sq.botEdgeFirst ? 14 : 12;
90
+ for (; b < 8; a += 3, ++b)
91
+ obj.prm[b] = ~~(~~FullCube_pieceAt(obj, a) >> 1 << 24) >> 24;
92
+ sq.edgeperm = get8Perm(obj.prm);
93
+ sq.ml = obj.ml;
94
+ }
95
+ function FullCube_pieceAt(obj, idx) {
96
+ var ret;
97
+ idx < 6 ? ret = ~~obj.ul >> (5 - idx << 2) : idx < 12 ? ret = ~~obj.ur >> (11 - idx << 2) : idx < 18 ? ret = ~~obj.dl >> (17 - idx << 2) : ret = ~~obj.dr >> (23 - idx << 2);
98
+ return ~~((ret & 15) << 24) >> 24;
99
+ }
100
+ function FullCube_setPiece(obj, idx, value) {
101
+ if (idx < 6) {
102
+ obj.ul &= ~(15 << (5 - idx << 2));
103
+ obj.ul |= value << (5 - idx << 2);
104
+ } else if (idx < 12) {
105
+ obj.ur &= ~(15 << (11 - idx << 2));
106
+ obj.ur |= value << (11 - idx << 2);
107
+ } else if (idx < 18) {
108
+ obj.dl &= ~(15 << (17 - idx << 2));
109
+ obj.dl |= value << (17 - idx << 2);
110
+ } else {
111
+ obj.dr &= ~(15 << (23 - idx << 2));
112
+ obj.dr |= value << (23 - idx << 2);
113
+ }
114
+ }
115
+ function FullCube_FullCube__Ljava_lang_String_2V() {
116
+ this.arr = [];
117
+ this.prm = [];
118
+ }
119
+ async function FullCube_randomCube() {
120
+ const randomUintBelow = await randomUIntBelowFactory();
121
+ var f, i, shape, edge, corner, n_edge, n_corner, rnd, m;
122
+ f = new FullCube_FullCube__Ljava_lang_String_2V();
123
+ shape = Shape_ShapeIdx[randomUintBelow(3678)];
124
+ corner = 19088743 << 1 | 286331153;
125
+ edge = 19088743 << 1;
126
+ n_corner = n_edge = 8;
127
+ for (i = 0; i < 24; i++) {
128
+ if ((shape >> i & 1) == 0) {
129
+ rnd = randomUintBelow(n_edge) << 2;
130
+ FullCube_setPiece(f, 23 - i, edge >> rnd & 15);
131
+ m = (1 << rnd) - 1;
132
+ edge = (edge & m) + (edge >> 4 & ~m);
133
+ --n_edge;
134
+ } else {
135
+ rnd = randomUintBelow(n_corner) << 2;
136
+ FullCube_setPiece(f, 23 - i, corner >> rnd & 15);
137
+ FullCube_setPiece(f, 22 - i, corner >> rnd & 15);
138
+ m = (1 << rnd) - 1;
139
+ corner = (corner & m) + (corner >> 4 & ~m);
140
+ --n_corner;
141
+ ++i;
142
+ }
143
+ }
144
+ f.ml = randomUintBelow(2);
145
+ return f;
146
+ }
147
+ function FullCube() {
148
+ }
149
+ var _ = FullCube_FullCube__Ljava_lang_String_2V.prototype = FullCube.prototype;
150
+ _.dl = 10062778;
151
+ _.dr = 14536702;
152
+ _.ml = 0;
153
+ _.ul = 70195;
154
+ _.ur = 4544119;
155
+ function Search_init2(obj) {
156
+ var corner, edge, i, j, ml, prun;
157
+ FullCube_copy(obj.Search_d, obj.Search_c);
158
+ for (i = 0; i < obj.Search_length1; ++i) {
159
+ FullCube_doMove(obj.Search_d, obj.Search_move[i]);
160
+ }
161
+ FullCube_getSquare(obj.Search_d, obj.Search_sq);
162
+ edge = obj.Search_sq.edgeperm;
163
+ corner = obj.Search_sq.cornperm;
164
+ ml = obj.Search_sq.ml;
165
+ prun = Math.max(SquarePrun[obj.Search_sq.edgeperm << 1 | ml], SquarePrun[obj.Search_sq.cornperm << 1 | ml]);
166
+ for (i = prun; i < obj.Search_maxlen2; ++i) {
167
+ if (Search_phase2(obj, edge, corner, obj.Search_sq.topEdgeFirst, obj.Search_sq.botEdgeFirst, ml, i, obj.Search_length1, 0)) {
168
+ for (j = 0; j < i; ++j) {
169
+ FullCube_doMove(obj.Search_d, obj.Search_move[obj.Search_length1 + j]);
170
+ }
171
+ obj.Search_sol_string = Search_move2string(obj, i + obj.Search_length1);
172
+ return true;
173
+ }
174
+ }
175
+ return false;
176
+ }
177
+ function Search_move2string(obj, len) {
178
+ var s = "";
179
+ var top = 0, bottom = 0;
180
+ for (var i = len - 1; i >= 0; i--) {
181
+ var val = obj.Search_move[i];
182
+ if (val > 0) {
183
+ val = 12 - val;
184
+ top = val > 6 ? val - 12 : val;
185
+ } else if (val < 0) {
186
+ val = 12 + val;
187
+ bottom = val > 6 ? val - 12 : val;
188
+ } else {
189
+ if (top == 0 && bottom == 0) {
190
+ s += " / ";
191
+ } else {
192
+ s += "(" + top + ", " + bottom + ") / ";
193
+ }
194
+ top = bottom = 0;
195
+ }
196
+ }
197
+ if (top !== 0 || bottom !== 0) {
198
+ s += "(" + top + ", " + bottom + ")";
199
+ }
200
+ return s;
201
+ }
202
+ function Search_phase1(obj, shape, prunvalue, maxl, depth, lm) {
203
+ var m, prunx, shapex;
204
+ if (prunvalue == 0 && maxl < 4) {
205
+ return maxl == 0 && Search_init2(obj);
206
+ }
207
+ if (lm != 0) {
208
+ shapex = Shape_TwistMove[shape];
209
+ prunx = ShapePrun[shapex];
210
+ if (prunx < maxl) {
211
+ obj.Search_move[depth] = 0;
212
+ if (Search_phase1(obj, shapex, prunx, maxl - 1, depth + 1, 0)) {
213
+ return true;
214
+ }
215
+ }
216
+ }
217
+ shapex = shape;
218
+ if (lm <= 0) {
219
+ m = 0;
220
+ for (; ; ) {
221
+ m += Shape_TopMove[shapex];
222
+ shapex = ~~m >> 4;
223
+ m &= 15;
224
+ if (m >= 12) {
225
+ break;
226
+ }
227
+ prunx = ShapePrun[shapex];
228
+ if (prunx > maxl) {
229
+ break;
230
+ } else if (prunx < maxl) {
231
+ obj.Search_move[depth] = m;
232
+ if (Search_phase1(obj, shapex, prunx, maxl - 1, depth + 1, 1)) {
233
+ return true;
234
+ }
235
+ }
236
+ }
237
+ }
238
+ shapex = shape;
239
+ if (lm <= 1) {
240
+ m = 0;
241
+ for (; ; ) {
242
+ m += Shape_BottomMove[shapex];
243
+ shapex = ~~m >> 4;
244
+ m &= 15;
245
+ if (m >= 6) {
246
+ break;
247
+ }
248
+ prunx = ShapePrun[shapex];
249
+ if (prunx > maxl) {
250
+ break;
251
+ } else if (prunx < maxl) {
252
+ obj.Search_move[depth] = -m;
253
+ if (Search_phase1(obj, shapex, prunx, maxl - 1, depth + 1, 2)) {
254
+ return true;
255
+ }
256
+ }
257
+ }
258
+ }
259
+ return false;
260
+ }
261
+ function Search_phase2(obj, edge, corner, topEdgeFirst, botEdgeFirst, ml, maxl, depth, lm) {
262
+ var botEdgeFirstx, cornerx, edgex, m, prun1, prun2, topEdgeFirstx;
263
+ if (maxl == 0 && !topEdgeFirst && botEdgeFirst) {
264
+ return true;
265
+ }
266
+ if (lm != 0 && topEdgeFirst == botEdgeFirst) {
267
+ edgex = Square_TwistMove[edge];
268
+ cornerx = Square_TwistMove[corner];
269
+ if (SquarePrun[edgex << 1 | 1 - ml] < maxl && SquarePrun[cornerx << 1 | 1 - ml] < maxl) {
270
+ obj.Search_move[depth] = 0;
271
+ if (Search_phase2(obj, edgex, cornerx, topEdgeFirst, botEdgeFirst, 1 - ml, maxl - 1, depth + 1, 0)) {
272
+ return true;
273
+ }
274
+ }
275
+ }
276
+ if (lm <= 0) {
277
+ topEdgeFirstx = !topEdgeFirst;
278
+ edgex = topEdgeFirstx ? Square_TopMove[edge] : edge;
279
+ cornerx = topEdgeFirstx ? corner : Square_TopMove[corner];
280
+ m = topEdgeFirstx ? 1 : 2;
281
+ prun1 = SquarePrun[edgex << 1 | ml];
282
+ prun2 = SquarePrun[cornerx << 1 | ml];
283
+ while (m < 12 && prun1 <= maxl && prun1 <= maxl) {
284
+ if (prun1 < maxl && prun2 < maxl) {
285
+ obj.Search_move[depth] = m;
286
+ if (Search_phase2(obj, edgex, cornerx, topEdgeFirstx, botEdgeFirst, ml, maxl - 1, depth + 1, 1)) {
287
+ return true;
288
+ }
289
+ }
290
+ topEdgeFirstx = !topEdgeFirstx;
291
+ if (topEdgeFirstx) {
292
+ edgex = Square_TopMove[edgex];
293
+ prun1 = SquarePrun[edgex << 1 | ml];
294
+ m += 1;
295
+ } else {
296
+ cornerx = Square_TopMove[cornerx];
297
+ prun2 = SquarePrun[cornerx << 1 | ml];
298
+ m += 2;
299
+ }
300
+ }
301
+ }
302
+ if (lm <= 1) {
303
+ botEdgeFirstx = !botEdgeFirst;
304
+ edgex = botEdgeFirstx ? Square_BottomMove[edge] : edge;
305
+ cornerx = botEdgeFirstx ? corner : Square_BottomMove[corner];
306
+ m = botEdgeFirstx ? 1 : 2;
307
+ prun1 = SquarePrun[edgex << 1 | ml];
308
+ prun2 = SquarePrun[cornerx << 1 | ml];
309
+ while (m < (maxl > 3 ? 6 : 12) && prun1 <= maxl && prun1 <= maxl) {
310
+ if (prun1 < maxl && prun2 < maxl) {
311
+ obj.Search_move[depth] = -m;
312
+ if (Search_phase2(obj, edgex, cornerx, topEdgeFirst, botEdgeFirstx, ml, maxl - 1, depth + 1, 2)) {
313
+ return true;
314
+ }
315
+ }
316
+ botEdgeFirstx = !botEdgeFirstx;
317
+ if (botEdgeFirstx) {
318
+ edgex = Square_BottomMove[edgex];
319
+ prun1 = SquarePrun[edgex << 1 | ml];
320
+ m += 1;
321
+ } else {
322
+ cornerx = Square_BottomMove[cornerx];
323
+ prun2 = SquarePrun[cornerx << 1 | ml];
324
+ m += 2;
325
+ }
326
+ }
327
+ }
328
+ return false;
329
+ }
330
+ function Search_solution(obj, c) {
331
+ var shape;
332
+ obj.Search_c = c;
333
+ shape = FullCube_getShapeIdx(c);
334
+ for (obj.Search_length1 = ShapePrun[shape]; obj.Search_length1 < 100; ++obj.Search_length1) {
335
+ obj.Search_maxlen2 = Math.min(31 - obj.Search_length1, 17);
336
+ if (Search_phase1(obj, shape, ShapePrun[shape], obj.Search_length1, 0, -1)) {
337
+ break;
338
+ }
339
+ }
340
+ return obj.Search_sol_string;
341
+ }
342
+ function Search_Search() {
343
+ this.Search_move = [];
344
+ this.Search_d = new FullCube_FullCube__Ljava_lang_String_2V();
345
+ this.Search_sq = new Square_Square();
346
+ }
347
+ function Search() {
348
+ }
349
+ _ = Search_Search.prototype = Search.prototype;
350
+ _.Search_c = null;
351
+ _.Search_length1 = 0;
352
+ _.Search_maxlen2 = 0;
353
+ _.Search_sol_string = null;
354
+ var Shape_$clinit_ran = false;
355
+ function Shape_$clinit() {
356
+ if (Shape_$clinit_ran) {
357
+ return;
358
+ }
359
+ Shape_$clinit_ran = true;
360
+ Shape_halflayer = [0, 3, 6, 12, 15, 24, 27, 30, 48, 51, 54, 60, 63];
361
+ Shape_ShapeIdx = [];
362
+ ShapePrun = [];
363
+ Shape_TopMove = [];
364
+ Shape_BottomMove = [];
365
+ Shape_TwistMove = [];
366
+ Shape_init();
367
+ }
368
+ function Shape_bottomMove(obj) {
369
+ var move, moveParity;
370
+ move = 0;
371
+ moveParity = 0;
372
+ do {
373
+ if ((obj.bottom & 2048) == 0) {
374
+ move += 1;
375
+ obj.bottom = obj.bottom << 1;
376
+ } else {
377
+ move += 2;
378
+ obj.bottom = obj.bottom << 2 ^ 12291;
379
+ }
380
+ moveParity = 1 - moveParity;
381
+ } while ((bitCount(obj.bottom & 63) & 1) != 0);
382
+ (bitCount(obj.bottom) & 2) == 0 && (obj.Shape_parity ^= moveParity);
383
+ return move;
384
+ }
385
+ function Shape_getIdx(obj) {
386
+ var ret;
387
+ ret = binarySearch(Shape_ShapeIdx, obj.top << 12 | obj.bottom) << 1 | obj.Shape_parity;
388
+ return ret;
389
+ }
390
+ function Shape_setIdx(obj, idx) {
391
+ obj.Shape_parity = idx & 1;
392
+ obj.top = Shape_ShapeIdx[~~idx >> 1];
393
+ obj.bottom = obj.top & 4095;
394
+ obj.top >>= 12;
395
+ }
396
+ function Shape_topMove(obj) {
397
+ var move, moveParity;
398
+ move = 0;
399
+ moveParity = 0;
400
+ do {
401
+ if ((obj.top & 2048) == 0) {
402
+ move += 1;
403
+ obj.top = obj.top << 1;
404
+ } else {
405
+ move += 2;
406
+ obj.top = obj.top << 2 ^ 12291;
407
+ }
408
+ moveParity = 1 - moveParity;
409
+ } while ((bitCount(obj.top & 63) & 1) != 0);
410
+ (bitCount(obj.top) & 2) == 0 && (obj.Shape_parity ^= moveParity);
411
+ return move;
412
+ }
413
+ function Shape_Shape() {
414
+ }
415
+ function Shape_getShape2Idx(shp) {
416
+ var ret;
417
+ ret = binarySearch(Shape_ShapeIdx, shp & 16777215) << 1 | ~~shp >> 24;
418
+ return ret;
419
+ }
420
+ function Shape_init() {
421
+ var count, depth, dl, done, done0, dr, i, idx, m, s, ul, ur, value, p1, p3, temp;
422
+ count = 0;
423
+ for (i = 0; i < 28561; ++i) {
424
+ dr = Shape_halflayer[i % 13];
425
+ dl = Shape_halflayer[~~(i / 13) % 13];
426
+ ur = Shape_halflayer[~~(~~(i / 13) / 13) % 13];
427
+ ul = Shape_halflayer[~~(~~(~~(i / 13) / 13) / 13)];
428
+ value = ul << 18 | ur << 12 | dl << 6 | dr;
429
+ bitCount(value) == 16 && (Shape_ShapeIdx[count++] = value);
430
+ }
431
+ s = new Shape_Shape();
432
+ for (i = 0; i < 7356; ++i) {
433
+ Shape_setIdx(s, i);
434
+ Shape_TopMove[i] = Shape_topMove(s);
435
+ Shape_TopMove[i] |= Shape_getIdx(s) << 4;
436
+ Shape_setIdx(s, i);
437
+ Shape_BottomMove[i] = Shape_bottomMove(s);
438
+ Shape_BottomMove[i] |= Shape_getIdx(s) << 4;
439
+ Shape_setIdx(s, i);
440
+ temp = s.top & 63;
441
+ p1 = bitCount(temp);
442
+ p3 = bitCount(s.bottom & 4032);
443
+ s.Shape_parity ^= 1 & ~~(p1 & p3) >> 1;
444
+ s.top = s.top & 4032 | ~~s.bottom >> 6 & 63;
445
+ s.bottom = s.bottom & 63 | temp << 6;
446
+ Shape_TwistMove[i] = Shape_getIdx(s);
447
+ }
448
+ for (i = 0; i < 7536; ++i) {
449
+ ShapePrun[i] = -1;
450
+ }
451
+ ShapePrun[Shape_getShape2Idx(14378715)] = 0;
452
+ ShapePrun[Shape_getShape2Idx(31157686)] = 0;
453
+ ShapePrun[Shape_getShape2Idx(23967451)] = 0;
454
+ ShapePrun[Shape_getShape2Idx(7191990)] = 0;
455
+ done = 4;
456
+ done0 = 0;
457
+ depth = -1;
458
+ while (done != done0) {
459
+ done0 = done;
460
+ ++depth;
461
+ for (i = 0; i < 7536; ++i) {
462
+ if (ShapePrun[i] == depth) {
463
+ m = 0;
464
+ idx = i;
465
+ do {
466
+ idx = Shape_TopMove[idx];
467
+ m += idx & 15;
468
+ idx >>= 4;
469
+ if (ShapePrun[idx] == -1) {
470
+ ++done;
471
+ ShapePrun[idx] = depth + 1;
472
+ }
473
+ } while (m != 12);
474
+ m = 0;
475
+ idx = i;
476
+ do {
477
+ idx = Shape_BottomMove[idx];
478
+ m += idx & 15;
479
+ idx >>= 4;
480
+ if (ShapePrun[idx] == -1) {
481
+ ++done;
482
+ ShapePrun[idx] = depth + 1;
483
+ }
484
+ } while (m != 12);
485
+ idx = Shape_TwistMove[i];
486
+ if (ShapePrun[idx] == -1) {
487
+ ++done;
488
+ ShapePrun[idx] = depth + 1;
489
+ }
490
+ }
491
+ }
492
+ }
493
+ }
494
+ function Shape() {
495
+ }
496
+ _ = Shape_Shape.prototype = Shape.prototype;
497
+ _.bottom = 0;
498
+ _.Shape_parity = 0;
499
+ _.top = 0;
500
+ var Shape_BottomMove;
501
+ var Shape_ShapeIdx;
502
+ var ShapePrun;
503
+ var Shape_TopMove;
504
+ var Shape_TwistMove;
505
+ var Shape_halflayer;
506
+ var Square_$clinit_ran = false;
507
+ function Square_$clinit() {
508
+ if (Square_$clinit_ran) {
509
+ return;
510
+ }
511
+ Square_$clinit_ran = true;
512
+ SquarePrun = [];
513
+ Square_TwistMove = [];
514
+ Square_TopMove = [];
515
+ Square_BottomMove = [];
516
+ fact = [1, 1, 2, 6, 24, 120, 720, 5040];
517
+ Cnk = [];
518
+ for (var i = 0; i < 12; ++i)
519
+ Cnk[i] = [];
520
+ Square_init();
521
+ }
522
+ function Square_Square() {
523
+ }
524
+ function get8Perm(arr) {
525
+ var i, idx, v, val;
526
+ idx = 0;
527
+ val = 1985229328;
528
+ for (i = 0; i < 7; ++i) {
529
+ v = arr[i] << 2;
530
+ idx = (8 - i) * idx + (~~val >> v & 7);
531
+ val -= 286331152 << v;
532
+ }
533
+ return idx & 65535;
534
+ }
535
+ function Square_init() {
536
+ var check, depth, done, find, i, idx, idxx, inv, j, m, ml, pos, temp;
537
+ for (i = 0; i < 12; ++i) {
538
+ Cnk[i][0] = 1;
539
+ Cnk[i][i] = 1;
540
+ for (j = 1; j < i; ++j) {
541
+ Cnk[i][j] = Cnk[i - 1][j - 1] + Cnk[i - 1][j];
542
+ }
543
+ }
544
+ pos = [];
545
+ for (i = 0; i < 40320; ++i) {
546
+ set8Perm(pos, i);
547
+ temp = pos[2];
548
+ pos[2] = pos[4];
549
+ pos[4] = temp;
550
+ temp = pos[3];
551
+ pos[3] = pos[5];
552
+ pos[5] = temp;
553
+ Square_TwistMove[i] = get8Perm(pos);
554
+ set8Perm(pos, i);
555
+ temp = pos[0];
556
+ pos[0] = pos[1];
557
+ pos[1] = pos[2];
558
+ pos[2] = pos[3];
559
+ pos[3] = temp;
560
+ Square_TopMove[i] = get8Perm(pos);
561
+ set8Perm(pos, i);
562
+ temp = pos[4];
563
+ pos[4] = pos[5];
564
+ pos[5] = pos[6];
565
+ pos[6] = pos[7];
566
+ pos[7] = temp;
567
+ Square_BottomMove[i] = get8Perm(pos);
568
+ }
569
+ for (i = 0; i < 80640; ++i) {
570
+ SquarePrun[i] = -1;
571
+ }
572
+ SquarePrun[0] = 0;
573
+ depth = 0;
574
+ done = 1;
575
+ while (done < 80640) {
576
+ inv = depth >= 11;
577
+ find = inv ? -1 : depth;
578
+ check = inv ? depth : -1;
579
+ ++depth;
580
+ OUT:
581
+ for (i = 0; i < 80640; ++i) {
582
+ if (SquarePrun[i] == find) {
583
+ idx = ~~i >> 1;
584
+ ml = i & 1;
585
+ idxx = Square_TwistMove[idx] << 1 | 1 - ml;
586
+ if (SquarePrun[idxx] == check) {
587
+ ++done;
588
+ SquarePrun[inv ? i : idxx] = ~~(depth << 24) >> 24;
589
+ if (inv)
590
+ continue OUT;
591
+ }
592
+ idxx = idx;
593
+ for (m = 0; m < 4; ++m) {
594
+ idxx = Square_TopMove[idxx];
595
+ if (SquarePrun[idxx << 1 | ml] == check) {
596
+ ++done;
597
+ SquarePrun[inv ? i : idxx << 1 | ml] = ~~(depth << 24) >> 24;
598
+ if (inv)
599
+ continue OUT;
600
+ }
601
+ }
602
+ for (m = 0; m < 4; ++m) {
603
+ idxx = Square_BottomMove[idxx];
604
+ if (SquarePrun[idxx << 1 | ml] == check) {
605
+ ++done;
606
+ SquarePrun[inv ? i : idxx << 1 | ml] = ~~(depth << 24) >> 24;
607
+ if (inv)
608
+ continue OUT;
609
+ }
610
+ }
611
+ }
612
+ }
613
+ }
614
+ }
615
+ function set8Perm(arr, idx) {
616
+ var i, m, p, v, val;
617
+ val = 1985229328;
618
+ for (i = 0; i < 7; ++i) {
619
+ p = fact[7 - i];
620
+ v = ~~(idx / p);
621
+ idx -= v * p;
622
+ v <<= 2;
623
+ arr[i] = ~~((~~val >> v & 7) << 24) >> 24;
624
+ m = (1 << v) - 1;
625
+ val = (val & m) + (~~val >> 4 & ~m);
626
+ }
627
+ arr[7] = ~~(val << 24) >> 24;
628
+ }
629
+ function Square() {
630
+ }
631
+ _ = Square_Square.prototype = Square.prototype;
632
+ _.botEdgeFirst = false;
633
+ _.cornperm = 0;
634
+ _.edgeperm = 0;
635
+ _.ml = 0;
636
+ _.topEdgeFirst = false;
637
+ var Square_BottomMove;
638
+ var Cnk;
639
+ var SquarePrun;
640
+ var Square_TopMove;
641
+ var Square_TwistMove;
642
+ var fact;
643
+ function bitCount(x) {
644
+ x -= ~~x >> 1 & 1431655765;
645
+ x = (~~x >> 2 & 858993459) + (x & 858993459);
646
+ x = (~~x >> 4) + x & 252645135;
647
+ x += ~~x >> 8;
648
+ x += ~~x >> 16;
649
+ return x & 63;
650
+ }
651
+ function binarySearch(sortedArray, key) {
652
+ var high, low, mid, midVal;
653
+ low = 0;
654
+ high = sortedArray.length - 1;
655
+ while (low <= high) {
656
+ mid = low + (~~(high - low) >> 1);
657
+ midVal = sortedArray[mid];
658
+ if (midVal < key) {
659
+ low = mid + 1;
660
+ } else if (midVal > key) {
661
+ high = mid - 1;
662
+ } else {
663
+ return mid;
664
+ }
665
+ }
666
+ return -low - 1;
667
+ }
668
+ var square1Solver_initialized = false;
669
+ var square1SolverInitialize = function(doneCallback, _2, statusCallback) {
670
+ if (!square1Solver_initialized) {
671
+ Shape_$clinit();
672
+ Square_$clinit();
673
+ }
674
+ if (statusCallback) {
675
+ statusCallback("Done initializing Square-1.");
676
+ }
677
+ square1Solver_initialized = true;
678
+ if (doneCallback != null) {
679
+ doneCallback();
680
+ }
681
+ };
682
+ var square1SolverGetRandomPosition = async function() {
683
+ if (!square1Solver_initialized) {
684
+ square1SolverInitialize();
685
+ }
686
+ return FullCube_randomCube();
687
+ };
688
+ var square1SolverGenerate = function(state) {
689
+ var search_search = new Search_Search();
690
+ return Search_solution(search_search, state);
691
+ };
692
+ var square1SolverGetRandomScramble = async function() {
693
+ var randomState = await square1SolverGetRandomPosition();
694
+ var scrambleString = square1SolverGenerate(randomState);
695
+ return {
696
+ state: randomState,
697
+ scramble_string: scrambleString
698
+ };
699
+ };
700
+ async function getRandomSquare1ScrambleString() {
701
+ return (await square1SolverGetRandomScramble()).scramble_string;
702
+ }
703
+ export {
704
+ getRandomSquare1ScrambleString
705
+ };
706
+ //# sourceMappingURL=scramble_sq1-PQ2AYBFW.js.map