cubing 0.29.0 → 0.29.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -6
- package/dist/esm/alg/index.js +1 -1
- package/dist/esm/bluetooth/index.js +36 -31
- package/dist/esm/bluetooth/index.js.map +2 -2
- package/dist/esm/{chunk-NI7U4XAZ.js → chunk-7OIUETFU.js} +9 -8
- package/dist/esm/chunk-7OIUETFU.js.map +7 -0
- package/dist/esm/{chunk-DZGFGBKT.js → chunk-EOEJDDXN.js} +95 -58
- package/dist/esm/chunk-EOEJDDXN.js.map +7 -0
- package/dist/esm/{chunk-WXCNEGW3.js → chunk-HR5D6SD4.js} +2 -2
- package/dist/esm/{chunk-WXCNEGW3.js.map → chunk-HR5D6SD4.js.map} +2 -2
- package/dist/esm/{chunk-LV7IKG36.js → chunk-J5KJ2WWA.js} +35 -34
- package/dist/esm/chunk-J5KJ2WWA.js.map +7 -0
- package/dist/esm/{chunk-ZNAYJGVL.js → chunk-NUMCMGLU.js} +2 -2
- package/dist/esm/{chunk-ZNAYJGVL.js.map → chunk-NUMCMGLU.js.map} +0 -0
- package/dist/esm/{chunk-LSCTPPWV.js → chunk-OT7AIIFN.js} +4 -4
- package/dist/esm/chunk-OT7AIIFN.js.map +7 -0
- package/dist/esm/{chunk-XU5ILFX5.js → chunk-POCUG6QW.js} +6 -4
- package/dist/esm/{chunk-XU5ILFX5.js.map → chunk-POCUG6QW.js.map} +2 -2
- package/dist/esm/{chunk-OX6O2ZO5.js → chunk-QHWK5RXN.js} +1 -1
- package/dist/esm/chunk-QHWK5RXN.js.map +7 -0
- package/dist/esm/{chunk-GW4FGG42.js → chunk-RH4WZIGC.js} +2 -2
- package/dist/esm/{chunk-GW4FGG42.js.map → chunk-RH4WZIGC.js.map} +0 -0
- package/dist/esm/{chunk-TGPS3CXW.js → chunk-RIXFKOD6.js} +7 -7
- package/dist/esm/{chunk-TGPS3CXW.js.map → chunk-RIXFKOD6.js.map} +2 -2
- package/dist/esm/{chunk-2IZUSAXQ.js → chunk-WEYPAZEE.js} +1 -1
- package/dist/esm/{chunk-2IZUSAXQ.js.map → chunk-WEYPAZEE.js.map} +1 -1
- package/dist/esm/{chunk-Q4W5ZR4U.js → chunk-WNZXZ4MW.js} +10 -8
- package/dist/esm/{chunk-Q4W5ZR4U.js.map → chunk-WNZXZ4MW.js.map} +2 -2
- package/dist/esm/{chunk-PYWGREIP.js → chunk-YD2TMJI2.js} +33 -31
- package/dist/esm/chunk-YD2TMJI2.js.map +7 -0
- package/dist/esm/kpuzzle/index.js +2 -2
- package/dist/esm/notation/index.js +2 -2
- package/dist/esm/protocol/index.js +4 -4
- package/dist/esm/puzzle-geometry/index.js +114 -88
- package/dist/esm/puzzle-geometry/index.js.map +2 -2
- package/dist/esm/puzzles/index.js +10 -6
- package/dist/esm/{puzzles-dynamic-side-events-5C7LMBWX.js → puzzles-dynamic-side-events-3K26JTOG.js} +2 -2
- package/dist/esm/{puzzles-dynamic-side-events-5C7LMBWX.js.map → puzzles-dynamic-side-events-3K26JTOG.js.map} +1 -1
- package/dist/esm/scramble/index.js +3 -3
- package/dist/esm/search/index.js +8 -8
- package/dist/esm/{search-dynamic-sgs-side-events-AYX7MZO7.js → search-dynamic-sgs-side-events-AE3TLLPA.js} +6 -6
- package/dist/esm/search-dynamic-sgs-side-events-AE3TLLPA.js.map +7 -0
- package/dist/esm/{search-dynamic-sgs-unofficial-DLJOJFJL.js → search-dynamic-sgs-unofficial-JUXMNMNO.js} +122 -67
- package/dist/esm/search-dynamic-sgs-unofficial-JUXMNMNO.js.map +7 -0
- package/dist/esm/{search-dynamic-solve-3x3x3-7XZTYQMO.js → search-dynamic-solve-3x3x3-SA75BI5I.js} +649 -405
- package/dist/esm/search-dynamic-solve-3x3x3-SA75BI5I.js.map +7 -0
- package/dist/esm/{search-dynamic-solve-4x4x4-CWWTFKMR.js → search-dynamic-solve-4x4x4-ALKH43DT.js} +399 -150
- package/dist/esm/search-dynamic-solve-4x4x4-ALKH43DT.js.map +7 -0
- package/dist/esm/{search-dynamic-solve-fto-4LI23P6K.js → search-dynamic-solve-fto-5B5ZESQC.js} +74 -34
- package/dist/esm/search-dynamic-solve-fto-5B5ZESQC.js.map +7 -0
- package/dist/esm/{search-dynamic-solve-kilominx-3HEVQ4MC.js → search-dynamic-solve-kilominx-OY4VIARG.js} +136 -71
- package/dist/esm/search-dynamic-solve-kilominx-OY4VIARG.js.map +7 -0
- package/dist/esm/{search-dynamic-solve-master_tetraminx-UB32C7MM.js → search-dynamic-solve-master_tetraminx-GE2BTRGI.js} +84 -41
- package/dist/esm/search-dynamic-solve-master_tetraminx-GE2BTRGI.js.map +7 -0
- package/dist/esm/{search-dynamic-solve-sq1-HA72TYF2.js → search-dynamic-solve-sq1-W6PSSLR6.js} +129 -54
- package/dist/esm/search-dynamic-solve-sq1-W6PSSLR6.js.map +7 -0
- package/dist/esm/{search-worker-inside-generated-string-AMEXYCKK.js → search-worker-inside-generated-string-7HYFSSPW.js} +28 -28
- package/dist/esm/search-worker-inside-generated-string-7HYFSSPW.js.map +7 -0
- package/dist/esm/{search-worker-js-entry-TP2T3NUL.js → search-worker-js-entry-SNUA3SOE.js} +44 -35
- package/dist/esm/search-worker-js-entry-SNUA3SOE.js.map +7 -0
- package/dist/esm/{search-worker-ts-entry-NEH77S4I.js → search-worker-ts-entry-LNB7KNFY.js} +3 -3
- package/dist/esm/{search-worker-ts-entry-NEH77S4I.js.map → search-worker-ts-entry-LNB7KNFY.js.map} +0 -0
- package/dist/esm/stream/index.js +1 -1
- package/dist/esm/stream/index.js.map +2 -2
- package/dist/esm/twisty/index.js +287 -273
- package/dist/esm/twisty/index.js.map +2 -2
- package/dist/esm/{twisty-dynamic-3d-D3ZDBJUH.js → twisty-dynamic-3d-PU74EKRA.js} +57 -59
- package/dist/esm/twisty-dynamic-3d-PU74EKRA.js.map +7 -0
- package/dist/types/{TwizzleLink-bef52ecd.d.ts → TwizzleLink-ce20e840.d.ts} +1 -1
- package/dist/types/puzzles/index.d.ts +5 -3
- package/dist/types/twisty/index.d.ts +2 -2
- package/package.json +51 -147
- package/dist/esm/chunk-DZGFGBKT.js.map +0 -7
- package/dist/esm/chunk-LSCTPPWV.js.map +0 -7
- package/dist/esm/chunk-LV7IKG36.js.map +0 -7
- package/dist/esm/chunk-NI7U4XAZ.js.map +0 -7
- package/dist/esm/chunk-OX6O2ZO5.js.map +0 -7
- package/dist/esm/chunk-PYWGREIP.js.map +0 -7
- package/dist/esm/search-dynamic-sgs-side-events-AYX7MZO7.js.map +0 -7
- package/dist/esm/search-dynamic-sgs-unofficial-DLJOJFJL.js.map +0 -7
- package/dist/esm/search-dynamic-solve-3x3x3-7XZTYQMO.js.map +0 -7
- package/dist/esm/search-dynamic-solve-4x4x4-CWWTFKMR.js.map +0 -7
- package/dist/esm/search-dynamic-solve-fto-4LI23P6K.js.map +0 -7
- package/dist/esm/search-dynamic-solve-kilominx-3HEVQ4MC.js.map +0 -7
- package/dist/esm/search-dynamic-solve-master_tetraminx-UB32C7MM.js.map +0 -7
- package/dist/esm/search-dynamic-solve-sq1-HA72TYF2.js.map +0 -7
- package/dist/esm/search-worker-inside-generated-string-AMEXYCKK.js.map +0 -7
- package/dist/esm/search-worker-js-entry-TP2T3NUL.js.map +0 -7
- package/dist/esm/twisty-dynamic-3d-D3ZDBJUH.js.map +0 -7
package/dist/esm/{search-dynamic-solve-sq1-HA72TYF2.js → search-dynamic-solve-sq1-W6PSSLR6.js}
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
randomUIntBelowFactory
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-HR5D6SD4.js";
|
|
4
4
|
import "./chunk-SBZRVSPK.js";
|
|
5
5
|
|
|
6
6
|
// src/cubing/vendor/sq12phase/sq1-solver.js
|
|
@@ -23,7 +23,7 @@ function FullCube_doMove(obj, move) {
|
|
|
23
23
|
temp = obj.ul;
|
|
24
24
|
obj.ul = (obj.ul << move | ~~obj.ur >> 24 - move) & 16777215;
|
|
25
25
|
obj.ur = (obj.ur << move | ~~temp >> 24 - move) & 16777215;
|
|
26
|
-
} else if (move
|
|
26
|
+
} else if (move === 0) {
|
|
27
27
|
temp = obj.ur;
|
|
28
28
|
obj.ur = obj.dl;
|
|
29
29
|
obj.dl = temp;
|
|
@@ -41,11 +41,15 @@ function FullCube_doMove(obj, move) {
|
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
43
|
function FullCube_getParity(obj) {
|
|
44
|
-
var a
|
|
44
|
+
var a;
|
|
45
|
+
var b;
|
|
46
|
+
var cnt;
|
|
47
|
+
var i;
|
|
48
|
+
var p;
|
|
45
49
|
cnt = 0;
|
|
46
50
|
obj.arr[0] = FullCube_pieceAt(obj, 0);
|
|
47
51
|
for (i = 1; i < 24; ++i) {
|
|
48
|
-
FullCube_pieceAt(obj, i)
|
|
52
|
+
FullCube_pieceAt(obj, i) !== obj.arr[cnt] && (obj.arr[++cnt] = FullCube_pieceAt(obj, i));
|
|
49
53
|
}
|
|
50
54
|
p = 0;
|
|
51
55
|
for (a = 0; a < 16; ++a) {
|
|
@@ -56,7 +60,10 @@ function FullCube_getParity(obj) {
|
|
|
56
60
|
return p;
|
|
57
61
|
}
|
|
58
62
|
function FullCube_getShapeIdx(obj) {
|
|
59
|
-
var dlx
|
|
63
|
+
var dlx;
|
|
64
|
+
var drx;
|
|
65
|
+
var ulx;
|
|
66
|
+
var urx;
|
|
60
67
|
urx = obj.ur & 1118481;
|
|
61
68
|
urx |= ~~urx >> 3;
|
|
62
69
|
urx |= ~~urx >> 6;
|
|
@@ -78,19 +85,22 @@ function FullCube_getShapeIdx(obj) {
|
|
|
78
85
|
);
|
|
79
86
|
}
|
|
80
87
|
function FullCube_getSquare(obj, sq) {
|
|
81
|
-
var a
|
|
88
|
+
var a;
|
|
89
|
+
var b;
|
|
82
90
|
for (a = 0; a < 8; ++a) {
|
|
83
91
|
obj.prm[a] = ~~(~~FullCube_pieceAt(obj, a * 3 + 1) >> 1 << 24) >> 24;
|
|
84
92
|
}
|
|
85
93
|
sq.cornperm = get8Perm(obj.prm);
|
|
86
|
-
sq.topEdgeFirst = FullCube_pieceAt(obj, 0)
|
|
94
|
+
sq.topEdgeFirst = FullCube_pieceAt(obj, 0) === FullCube_pieceAt(obj, 1);
|
|
87
95
|
a = sq.topEdgeFirst ? 2 : 0;
|
|
88
|
-
for (b = 0; b < 4; a += 3, ++b)
|
|
96
|
+
for (b = 0; b < 4; a += 3, ++b) {
|
|
89
97
|
obj.prm[b] = ~~(~~FullCube_pieceAt(obj, a) >> 1 << 24) >> 24;
|
|
90
|
-
|
|
98
|
+
}
|
|
99
|
+
sq.botEdgeFirst = FullCube_pieceAt(obj, 12) === FullCube_pieceAt(obj, 13);
|
|
91
100
|
a = sq.botEdgeFirst ? 14 : 12;
|
|
92
|
-
for (; b < 8; a += 3, ++b)
|
|
101
|
+
for (; b < 8; a += 3, ++b) {
|
|
93
102
|
obj.prm[b] = ~~(~~FullCube_pieceAt(obj, a) >> 1 << 24) >> 24;
|
|
103
|
+
}
|
|
94
104
|
sq.edgeperm = get8Perm(obj.prm);
|
|
95
105
|
sq.ml = obj.ml;
|
|
96
106
|
}
|
|
@@ -120,14 +130,22 @@ function FullCube_FullCube__Ljava_lang_String_2V() {
|
|
|
120
130
|
}
|
|
121
131
|
async function FullCube_randomCube() {
|
|
122
132
|
const randomUintBelow = await randomUIntBelowFactory();
|
|
123
|
-
var f
|
|
133
|
+
var f;
|
|
134
|
+
var i;
|
|
135
|
+
var shape;
|
|
136
|
+
var edge;
|
|
137
|
+
var corner;
|
|
138
|
+
var n_edge;
|
|
139
|
+
var n_corner;
|
|
140
|
+
var rnd;
|
|
141
|
+
var m;
|
|
124
142
|
f = new FullCube_FullCube__Ljava_lang_String_2V();
|
|
125
143
|
shape = Shape_ShapeIdx[randomUintBelow(3678)];
|
|
126
144
|
corner = 19088743 << 1 | 286331153;
|
|
127
145
|
edge = 19088743 << 1;
|
|
128
146
|
n_corner = n_edge = 8;
|
|
129
147
|
for (i = 0; i < 24; i++) {
|
|
130
|
-
if ((shape >> i & 1)
|
|
148
|
+
if ((shape >> i & 1) === 0) {
|
|
131
149
|
rnd = randomUintBelow(n_edge) << 2;
|
|
132
150
|
FullCube_setPiece(f, 23 - i, edge >> rnd & 15);
|
|
133
151
|
m = (1 << rnd) - 1;
|
|
@@ -155,7 +173,12 @@ _.ml = 0;
|
|
|
155
173
|
_.ul = 70195;
|
|
156
174
|
_.ur = 4544119;
|
|
157
175
|
function Search_init2(obj) {
|
|
158
|
-
var corner
|
|
176
|
+
var corner;
|
|
177
|
+
var edge;
|
|
178
|
+
var i;
|
|
179
|
+
var j;
|
|
180
|
+
var ml;
|
|
181
|
+
var prun;
|
|
159
182
|
FullCube_copy(obj.Search_d, obj.Search_c);
|
|
160
183
|
for (i = 0; i < obj.Search_length1; ++i) {
|
|
161
184
|
FullCube_doMove(obj.Search_d, obj.Search_move[i]);
|
|
@@ -191,7 +214,8 @@ function Search_init2(obj) {
|
|
|
191
214
|
}
|
|
192
215
|
function Search_move2string(obj, len) {
|
|
193
216
|
var s = "";
|
|
194
|
-
var top = 0
|
|
217
|
+
var top = 0;
|
|
218
|
+
var bottom = 0;
|
|
195
219
|
for (var i = len - 1; i >= 0; i--) {
|
|
196
220
|
var val = obj.Search_move[i];
|
|
197
221
|
if (val > 0) {
|
|
@@ -201,25 +225,27 @@ function Search_move2string(obj, len) {
|
|
|
201
225
|
val = 12 + val;
|
|
202
226
|
bottom = val > 6 ? val - 12 : val;
|
|
203
227
|
} else {
|
|
204
|
-
if (top
|
|
228
|
+
if (top === 0 && bottom === 0) {
|
|
205
229
|
s += " / ";
|
|
206
230
|
} else {
|
|
207
|
-
s +=
|
|
231
|
+
s += `(${top}, ${bottom}) / `;
|
|
208
232
|
}
|
|
209
233
|
top = bottom = 0;
|
|
210
234
|
}
|
|
211
235
|
}
|
|
212
236
|
if (top !== 0 || bottom !== 0) {
|
|
213
|
-
s +=
|
|
237
|
+
s += `(${top}, ${bottom})`;
|
|
214
238
|
}
|
|
215
239
|
return s;
|
|
216
240
|
}
|
|
217
241
|
function Search_phase1(obj, shape, prunvalue, maxl, depth, lm) {
|
|
218
|
-
var m
|
|
219
|
-
|
|
220
|
-
|
|
242
|
+
var m;
|
|
243
|
+
var prunx;
|
|
244
|
+
var shapex;
|
|
245
|
+
if (prunvalue === 0 && maxl < 4) {
|
|
246
|
+
return maxl === 0 && Search_init2(obj);
|
|
221
247
|
}
|
|
222
|
-
if (lm
|
|
248
|
+
if (lm !== 0) {
|
|
223
249
|
shapex = Shape_TwistMove[shape];
|
|
224
250
|
prunx = ShapePrun[shapex];
|
|
225
251
|
if (prunx < maxl) {
|
|
@@ -274,11 +300,17 @@ function Search_phase1(obj, shape, prunvalue, maxl, depth, lm) {
|
|
|
274
300
|
return false;
|
|
275
301
|
}
|
|
276
302
|
function Search_phase2(obj, edge, corner, topEdgeFirst, botEdgeFirst, ml, maxl, depth, lm) {
|
|
277
|
-
var botEdgeFirstx
|
|
278
|
-
|
|
303
|
+
var botEdgeFirstx;
|
|
304
|
+
var cornerx;
|
|
305
|
+
var edgex;
|
|
306
|
+
var m;
|
|
307
|
+
var prun1;
|
|
308
|
+
var prun2;
|
|
309
|
+
var topEdgeFirstx;
|
|
310
|
+
if (maxl === 0 && !topEdgeFirst && botEdgeFirst) {
|
|
279
311
|
return true;
|
|
280
312
|
}
|
|
281
|
-
if (lm
|
|
313
|
+
if (lm !== 0 && topEdgeFirst === botEdgeFirst) {
|
|
282
314
|
edgex = Square_TwistMove[edge];
|
|
283
315
|
cornerx = Square_TwistMove[corner];
|
|
284
316
|
if (SquarePrun[edgex << 1 | 1 - ml] < maxl && SquarePrun[cornerx << 1 | 1 - ml] < maxl) {
|
|
@@ -411,11 +443,12 @@ function Shape_$clinit() {
|
|
|
411
443
|
Shape_init();
|
|
412
444
|
}
|
|
413
445
|
function Shape_bottomMove(obj) {
|
|
414
|
-
var move
|
|
446
|
+
var move;
|
|
447
|
+
var moveParity;
|
|
415
448
|
move = 0;
|
|
416
449
|
moveParity = 0;
|
|
417
450
|
do {
|
|
418
|
-
if ((obj.bottom & 2048)
|
|
451
|
+
if ((obj.bottom & 2048) === 0) {
|
|
419
452
|
move += 1;
|
|
420
453
|
obj.bottom = obj.bottom << 1;
|
|
421
454
|
} else {
|
|
@@ -423,8 +456,8 @@ function Shape_bottomMove(obj) {
|
|
|
423
456
|
obj.bottom = obj.bottom << 2 ^ 12291;
|
|
424
457
|
}
|
|
425
458
|
moveParity = 1 - moveParity;
|
|
426
|
-
} while ((bitCount(obj.bottom & 63) & 1)
|
|
427
|
-
(bitCount(obj.bottom) & 2)
|
|
459
|
+
} while ((bitCount(obj.bottom & 63) & 1) !== 0);
|
|
460
|
+
(bitCount(obj.bottom) & 2) === 0 && (obj.Shape_parity ^= moveParity);
|
|
428
461
|
return move;
|
|
429
462
|
}
|
|
430
463
|
function Shape_getIdx(obj) {
|
|
@@ -439,11 +472,12 @@ function Shape_setIdx(obj, idx) {
|
|
|
439
472
|
obj.top >>= 12;
|
|
440
473
|
}
|
|
441
474
|
function Shape_topMove(obj) {
|
|
442
|
-
var move
|
|
475
|
+
var move;
|
|
476
|
+
var moveParity;
|
|
443
477
|
move = 0;
|
|
444
478
|
moveParity = 0;
|
|
445
479
|
do {
|
|
446
|
-
if ((obj.top & 2048)
|
|
480
|
+
if ((obj.top & 2048) === 0) {
|
|
447
481
|
move += 1;
|
|
448
482
|
obj.top = obj.top << 1;
|
|
449
483
|
} else {
|
|
@@ -451,8 +485,8 @@ function Shape_topMove(obj) {
|
|
|
451
485
|
obj.top = obj.top << 2 ^ 12291;
|
|
452
486
|
}
|
|
453
487
|
moveParity = 1 - moveParity;
|
|
454
|
-
} while ((bitCount(obj.top & 63) & 1)
|
|
455
|
-
(bitCount(obj.top) & 2)
|
|
488
|
+
} while ((bitCount(obj.top & 63) & 1) !== 0);
|
|
489
|
+
(bitCount(obj.top) & 2) === 0 && (obj.Shape_parity ^= moveParity);
|
|
456
490
|
return move;
|
|
457
491
|
}
|
|
458
492
|
function Shape_Shape() {
|
|
@@ -463,7 +497,22 @@ function Shape_getShape2Idx(shp) {
|
|
|
463
497
|
return ret;
|
|
464
498
|
}
|
|
465
499
|
function Shape_init() {
|
|
466
|
-
var count
|
|
500
|
+
var count;
|
|
501
|
+
var depth;
|
|
502
|
+
var dl;
|
|
503
|
+
var done;
|
|
504
|
+
var done0;
|
|
505
|
+
var dr;
|
|
506
|
+
var i;
|
|
507
|
+
var idx;
|
|
508
|
+
var m;
|
|
509
|
+
var s;
|
|
510
|
+
var ul;
|
|
511
|
+
var ur;
|
|
512
|
+
var value;
|
|
513
|
+
var p1;
|
|
514
|
+
var p3;
|
|
515
|
+
var temp;
|
|
467
516
|
count = 0;
|
|
468
517
|
for (i = 0; i < 28561; ++i) {
|
|
469
518
|
dr = Shape_halflayer[i % 13];
|
|
@@ -471,7 +520,7 @@ function Shape_init() {
|
|
|
471
520
|
ur = Shape_halflayer[~~(~~(i / 13) / 13) % 13];
|
|
472
521
|
ul = Shape_halflayer[~~(~~(~~(i / 13) / 13) / 13)];
|
|
473
522
|
value = ul << 18 | ur << 12 | dl << 6 | dr;
|
|
474
|
-
bitCount(value)
|
|
523
|
+
bitCount(value) === 16 && (Shape_ShapeIdx[count++] = value);
|
|
475
524
|
}
|
|
476
525
|
s = new Shape_Shape();
|
|
477
526
|
for (i = 0; i < 7356; ++i) {
|
|
@@ -500,35 +549,35 @@ function Shape_init() {
|
|
|
500
549
|
done = 4;
|
|
501
550
|
done0 = 0;
|
|
502
551
|
depth = -1;
|
|
503
|
-
while (done
|
|
552
|
+
while (done !== done0) {
|
|
504
553
|
done0 = done;
|
|
505
554
|
++depth;
|
|
506
555
|
for (i = 0; i < 7536; ++i) {
|
|
507
|
-
if (ShapePrun[i]
|
|
556
|
+
if (ShapePrun[i] === depth) {
|
|
508
557
|
m = 0;
|
|
509
558
|
idx = i;
|
|
510
559
|
do {
|
|
511
560
|
idx = Shape_TopMove[idx];
|
|
512
561
|
m += idx & 15;
|
|
513
562
|
idx >>= 4;
|
|
514
|
-
if (ShapePrun[idx]
|
|
563
|
+
if (ShapePrun[idx] === -1) {
|
|
515
564
|
++done;
|
|
516
565
|
ShapePrun[idx] = depth + 1;
|
|
517
566
|
}
|
|
518
|
-
} while (m
|
|
567
|
+
} while (m !== 12);
|
|
519
568
|
m = 0;
|
|
520
569
|
idx = i;
|
|
521
570
|
do {
|
|
522
571
|
idx = Shape_BottomMove[idx];
|
|
523
572
|
m += idx & 15;
|
|
524
573
|
idx >>= 4;
|
|
525
|
-
if (ShapePrun[idx]
|
|
574
|
+
if (ShapePrun[idx] === -1) {
|
|
526
575
|
++done;
|
|
527
576
|
ShapePrun[idx] = depth + 1;
|
|
528
577
|
}
|
|
529
|
-
} while (m
|
|
578
|
+
} while (m !== 12);
|
|
530
579
|
idx = Shape_TwistMove[i];
|
|
531
|
-
if (ShapePrun[idx]
|
|
580
|
+
if (ShapePrun[idx] === -1) {
|
|
532
581
|
++done;
|
|
533
582
|
ShapePrun[idx] = depth + 1;
|
|
534
583
|
}
|
|
@@ -560,14 +609,18 @@ function Square_$clinit() {
|
|
|
560
609
|
Square_BottomMove = [];
|
|
561
610
|
fact = [1, 1, 2, 6, 24, 120, 720, 5040];
|
|
562
611
|
Cnk = [];
|
|
563
|
-
for (var i = 0; i < 12; ++i)
|
|
612
|
+
for (var i = 0; i < 12; ++i) {
|
|
564
613
|
Cnk[i] = [];
|
|
614
|
+
}
|
|
565
615
|
Square_init();
|
|
566
616
|
}
|
|
567
617
|
function Square_Square() {
|
|
568
618
|
}
|
|
569
619
|
function get8Perm(arr) {
|
|
570
|
-
var i
|
|
620
|
+
var i;
|
|
621
|
+
var idx;
|
|
622
|
+
var v;
|
|
623
|
+
var val;
|
|
571
624
|
idx = 0;
|
|
572
625
|
val = 1985229328;
|
|
573
626
|
for (i = 0; i < 7; ++i) {
|
|
@@ -578,7 +631,19 @@ function get8Perm(arr) {
|
|
|
578
631
|
return idx & 65535;
|
|
579
632
|
}
|
|
580
633
|
function Square_init() {
|
|
581
|
-
var check
|
|
634
|
+
var check;
|
|
635
|
+
var depth;
|
|
636
|
+
var done;
|
|
637
|
+
var find;
|
|
638
|
+
var i;
|
|
639
|
+
var idx;
|
|
640
|
+
var idxx;
|
|
641
|
+
var inv;
|
|
642
|
+
var j;
|
|
643
|
+
var m;
|
|
644
|
+
var ml;
|
|
645
|
+
var pos;
|
|
646
|
+
var temp;
|
|
582
647
|
for (i = 0; i < 12; ++i) {
|
|
583
648
|
Cnk[i][0] = 1;
|
|
584
649
|
Cnk[i][i] = 1;
|
|
@@ -624,33 +689,36 @@ function Square_init() {
|
|
|
624
689
|
++depth;
|
|
625
690
|
OUT:
|
|
626
691
|
for (i = 0; i < 80640; ++i) {
|
|
627
|
-
if (SquarePrun[i]
|
|
692
|
+
if (SquarePrun[i] === find) {
|
|
628
693
|
idx = ~~i >> 1;
|
|
629
694
|
ml = i & 1;
|
|
630
695
|
idxx = Square_TwistMove[idx] << 1 | 1 - ml;
|
|
631
|
-
if (SquarePrun[idxx]
|
|
696
|
+
if (SquarePrun[idxx] === check) {
|
|
632
697
|
++done;
|
|
633
698
|
SquarePrun[inv ? i : idxx] = ~~(depth << 24) >> 24;
|
|
634
|
-
if (inv)
|
|
699
|
+
if (inv) {
|
|
635
700
|
continue OUT;
|
|
701
|
+
}
|
|
636
702
|
}
|
|
637
703
|
idxx = idx;
|
|
638
704
|
for (m = 0; m < 4; ++m) {
|
|
639
705
|
idxx = Square_TopMove[idxx];
|
|
640
|
-
if (SquarePrun[idxx << 1 | ml]
|
|
706
|
+
if (SquarePrun[idxx << 1 | ml] === check) {
|
|
641
707
|
++done;
|
|
642
708
|
SquarePrun[inv ? i : idxx << 1 | ml] = ~~(depth << 24) >> 24;
|
|
643
|
-
if (inv)
|
|
709
|
+
if (inv) {
|
|
644
710
|
continue OUT;
|
|
711
|
+
}
|
|
645
712
|
}
|
|
646
713
|
}
|
|
647
714
|
for (m = 0; m < 4; ++m) {
|
|
648
715
|
idxx = Square_BottomMove[idxx];
|
|
649
|
-
if (SquarePrun[idxx << 1 | ml]
|
|
716
|
+
if (SquarePrun[idxx << 1 | ml] === check) {
|
|
650
717
|
++done;
|
|
651
718
|
SquarePrun[inv ? i : idxx << 1 | ml] = ~~(depth << 24) >> 24;
|
|
652
|
-
if (inv)
|
|
719
|
+
if (inv) {
|
|
653
720
|
continue OUT;
|
|
721
|
+
}
|
|
654
722
|
}
|
|
655
723
|
}
|
|
656
724
|
}
|
|
@@ -658,7 +726,11 @@ function Square_init() {
|
|
|
658
726
|
}
|
|
659
727
|
}
|
|
660
728
|
function set8Perm(arr, idx) {
|
|
661
|
-
var i
|
|
729
|
+
var i;
|
|
730
|
+
var m;
|
|
731
|
+
var p;
|
|
732
|
+
var v;
|
|
733
|
+
var val;
|
|
662
734
|
val = 1985229328;
|
|
663
735
|
for (i = 0; i < 7; ++i) {
|
|
664
736
|
p = fact[7 - i];
|
|
@@ -694,7 +766,10 @@ function bitCount(x) {
|
|
|
694
766
|
return x & 63;
|
|
695
767
|
}
|
|
696
768
|
function binarySearch(sortedArray, key) {
|
|
697
|
-
var high
|
|
769
|
+
var high;
|
|
770
|
+
var low;
|
|
771
|
+
var mid;
|
|
772
|
+
var midVal;
|
|
698
773
|
low = 0;
|
|
699
774
|
high = sortedArray.length - 1;
|
|
700
775
|
while (low <= high) {
|
|
@@ -748,4 +823,4 @@ async function getRandomSquare1ScrambleString() {
|
|
|
748
823
|
export {
|
|
749
824
|
getRandomSquare1ScrambleString
|
|
750
825
|
};
|
|
751
|
-
//# sourceMappingURL=search-dynamic-solve-sq1-
|
|
826
|
+
//# sourceMappingURL=search-dynamic-solve-sq1-W6PSSLR6.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/cubing/vendor/sq12phase/sq1-solver.js"],
|
|
4
|
+
"sourcesContent": ["/*\n\nscramble_sq1.js\n\nSquare-1 Solver / Scramble Generator in JavaScript.\n\nCode by by Shuang Chen.\nCompiled to JavaScript using GWT.\n\n*/\n\nimport { randomUIntBelowFactory } from \"../random-uint-below\";\n\nfunction FullCube_copy(obj, c) {\n obj.ul = c.ul;\n obj.ur = c.ur;\n obj.dl = c.dl;\n obj.dr = c.dr;\n obj.ml = c.ml;\n}\n\nfunction FullCube_doMove(obj, move) {\n var temp;\n move <<= 2;\n if (move > 24) {\n move = 48 - move;\n temp = obj.ul;\n obj.ul = ((~~obj.ul >> move) | (obj.ur << (24 - move))) & 16777215;\n obj.ur = ((~~obj.ur >> move) | (temp << (24 - move))) & 16777215;\n } else if (move > 0) {\n temp = obj.ul;\n obj.ul = ((obj.ul << move) | (~~obj.ur >> (24 - move))) & 16777215;\n obj.ur = ((obj.ur << move) | (~~temp >> (24 - move))) & 16777215;\n } else if (move === 0) {\n temp = obj.ur;\n obj.ur = obj.dl;\n obj.dl = temp;\n obj.ml = 1 - obj.ml;\n } else if (move >= -24) {\n move = -move;\n temp = obj.dl;\n obj.dl = ((obj.dl << move) | (~~obj.dr >> (24 - move))) & 16777215;\n obj.dr = ((obj.dr << move) | (~~temp >> (24 - move))) & 16777215;\n } else if (move < -24) {\n move = 48 + move;\n temp = obj.dl;\n obj.dl = ((~~obj.dl >> move) | (obj.dr << (24 - move))) & 16777215;\n obj.dr = ((~~obj.dr >> move) | (temp << (24 - move))) & 16777215;\n }\n}\n\nfunction FullCube_getParity(obj) {\n var a;\n var b;\n var cnt;\n var i;\n var p;\n cnt = 0;\n obj.arr[0] = FullCube_pieceAt(obj, 0);\n for (i = 1; i < 24; ++i) {\n FullCube_pieceAt(obj, i) !== obj.arr[cnt] &&\n (obj.arr[++cnt] = FullCube_pieceAt(obj, i));\n }\n p = 0;\n for (a = 0; a < 16; ++a) {\n for (b = a + 1; b < 16; ++b) {\n obj.arr[a] > obj.arr[b] && (p ^= 1);\n }\n }\n return p;\n}\n\nfunction FullCube_getShapeIdx(obj) {\n var dlx;\n var drx;\n var ulx;\n var urx;\n urx = obj.ur & 1118481;\n urx |= ~~urx >> 3;\n urx |= ~~urx >> 6;\n urx = (urx & 15) | ((~~urx >> 12) & 48);\n ulx = obj.ul & 1118481;\n ulx |= ~~ulx >> 3;\n ulx |= ~~ulx >> 6;\n ulx = (ulx & 15) | ((~~ulx >> 12) & 48);\n drx = obj.dr & 1118481;\n drx |= ~~drx >> 3;\n drx |= ~~drx >> 6;\n drx = (drx & 15) | ((~~drx >> 12) & 48);\n dlx = obj.dl & 1118481;\n dlx |= ~~dlx >> 3;\n dlx |= ~~dlx >> 6;\n dlx = (dlx & 15) | ((~~dlx >> 12) & 48);\n return Shape_getShape2Idx(\n (FullCube_getParity(obj) << 24) |\n (ulx << 18) |\n (urx << 12) |\n (dlx << 6) |\n drx,\n );\n}\n\nfunction FullCube_getSquare(obj, sq) {\n var a;\n var b;\n for (a = 0; a < 8; ++a) {\n obj.prm[a] = ~~((~~FullCube_pieceAt(obj, a * 3 + 1) >> 1) << 24) >> 24;\n }\n sq.cornperm = get8Perm(obj.prm);\n sq.topEdgeFirst = FullCube_pieceAt(obj, 0) === FullCube_pieceAt(obj, 1);\n a = sq.topEdgeFirst ? 2 : 0;\n for (b = 0; b < 4; a += 3, ++b) {\n obj.prm[b] = ~~((~~FullCube_pieceAt(obj, a) >> 1) << 24) >> 24;\n }\n sq.botEdgeFirst = FullCube_pieceAt(obj, 12) === FullCube_pieceAt(obj, 13);\n a = sq.botEdgeFirst ? 14 : 12;\n for (; b < 8; a += 3, ++b) {\n obj.prm[b] = ~~((~~FullCube_pieceAt(obj, a) >> 1) << 24) >> 24;\n }\n sq.edgeperm = get8Perm(obj.prm);\n sq.ml = obj.ml;\n}\n\nfunction FullCube_pieceAt(obj, idx) {\n var ret;\n idx < 6\n ? (ret = ~~obj.ul >> ((5 - idx) << 2))\n : idx < 12\n ? (ret = ~~obj.ur >> ((11 - idx) << 2))\n : idx < 18\n ? (ret = ~~obj.dl >> ((17 - idx) << 2))\n : (ret = ~~obj.dr >> ((23 - idx) << 2));\n return ~~((ret & 15) << 24) >> 24;\n}\n\nfunction FullCube_setPiece(obj, idx, value) {\n if (idx < 6) {\n obj.ul &= ~(0xf << ((5 - idx) << 2));\n obj.ul |= value << ((5 - idx) << 2);\n } else if (idx < 12) {\n obj.ur &= ~(0xf << ((11 - idx) << 2));\n obj.ur |= value << ((11 - idx) << 2);\n } else if (idx < 18) {\n obj.dl &= ~(0xf << ((17 - idx) << 2));\n obj.dl |= value << ((17 - idx) << 2);\n } else {\n obj.dr &= ~(0xf << ((23 - idx) << 2));\n obj.dr |= value << ((23 - idx) << 2);\n }\n}\n\nfunction FullCube_FullCube__Ljava_lang_String_2V() {\n this.arr = [];\n this.prm = [];\n}\n\nasync function FullCube_randomCube() {\n const randomUintBelow = await randomUIntBelowFactory();\n\n var f;\n var i;\n var shape;\n var edge;\n var corner;\n var n_edge;\n var n_corner;\n var rnd;\n var m;\n f = new FullCube_FullCube__Ljava_lang_String_2V();\n shape = Shape_ShapeIdx[randomUintBelow(3678)];\n corner = (0x01234567 << 1) | 0x11111111;\n edge = 0x01234567 << 1;\n n_corner = n_edge = 8;\n for (i = 0; i < 24; i++) {\n if (((shape >> i) & 1) === 0) {\n //edge\n rnd = randomUintBelow(n_edge) << 2;\n FullCube_setPiece(f, 23 - i, (edge >> rnd) & 0xf);\n m = (1 << rnd) - 1;\n edge = (edge & m) + ((edge >> 4) & ~m);\n --n_edge;\n } else {\n //corner\n rnd = randomUintBelow(n_corner) << 2;\n FullCube_setPiece(f, 23 - i, (corner >> rnd) & 0xf);\n FullCube_setPiece(f, 22 - i, (corner >> rnd) & 0xf);\n m = (1 << rnd) - 1;\n corner = (corner & m) + ((corner >> 4) & ~m);\n --n_corner;\n ++i;\n }\n }\n f.ml = randomUintBelow(2);\n //\tconsole.log(f);\n return f;\n}\n\nfunction FullCube() {}\n\nlet _ = (FullCube_FullCube__Ljava_lang_String_2V.prototype =\n FullCube.prototype);\n_.dl = 10062778;\n_.dr = 14536702;\n_.ml = 0;\n_.ul = 70195;\n_.ur = 4544119;\nfunction Search_init2(obj) {\n var corner;\n var edge;\n var i;\n var j;\n var ml;\n var prun;\n FullCube_copy(obj.Search_d, obj.Search_c);\n for (i = 0; i < obj.Search_length1; ++i) {\n FullCube_doMove(obj.Search_d, obj.Search_move[i]);\n }\n FullCube_getSquare(obj.Search_d, obj.Search_sq);\n edge = obj.Search_sq.edgeperm;\n corner = obj.Search_sq.cornperm;\n ml = obj.Search_sq.ml;\n prun = Math.max(\n SquarePrun[(obj.Search_sq.edgeperm << 1) | ml],\n SquarePrun[(obj.Search_sq.cornperm << 1) | ml],\n );\n for (i = prun; i < obj.Search_maxlen2; ++i) {\n if (\n Search_phase2(\n obj,\n edge,\n corner,\n obj.Search_sq.topEdgeFirst,\n obj.Search_sq.botEdgeFirst,\n ml,\n i,\n obj.Search_length1,\n 0,\n )\n ) {\n for (j = 0; j < i; ++j) {\n FullCube_doMove(obj.Search_d, obj.Search_move[obj.Search_length1 + j]);\n //console.log(obj.Search_move[obj.Search_length1 + j]);\n }\n //console.log(obj.Search_d);\n //console.log(obj.Search_move);\n obj.Search_sol_string = Search_move2string(obj, i + obj.Search_length1);\n return true;\n }\n }\n return false;\n}\n\nfunction Search_move2string(obj, len) {\n var s = \"\";\n var top = 0;\n var bottom = 0;\n for (var i = len - 1; i >= 0; i--) {\n var val = obj.Search_move[i];\n //console.log(val);\n if (val > 0) {\n val = 12 - val;\n top = val > 6 ? val - 12 : val;\n } else if (val < 0) {\n val = 12 + val;\n bottom = val > 6 ? val - 12 : val;\n } else {\n if (top === 0 && bottom === 0) {\n s += \" / \";\n } else {\n s += `(${top}, ${bottom}) / `;\n }\n top = bottom = 0;\n }\n }\n if (top !== 0 || bottom !== 0) {\n s += `(${top}, ${bottom})`;\n }\n return s; // + \" (\" + len + \"t)\";\n}\n\nfunction Search_phase1(obj, shape, prunvalue, maxl, depth, lm) {\n var m;\n var prunx;\n var shapex;\n if (prunvalue === 0 && maxl < 4) {\n return maxl === 0 && Search_init2(obj);\n }\n if (lm !== 0) {\n shapex = Shape_TwistMove[shape];\n prunx = ShapePrun[shapex];\n if (prunx < maxl) {\n obj.Search_move[depth] = 0;\n if (Search_phase1(obj, shapex, prunx, maxl - 1, depth + 1, 0)) {\n return true;\n }\n }\n }\n shapex = shape;\n if (lm <= 0) {\n m = 0;\n for (;;) {\n m += Shape_TopMove[shapex];\n shapex = ~~m >> 4;\n m &= 15;\n if (m >= 12) {\n break;\n }\n prunx = ShapePrun[shapex];\n if (prunx > maxl) {\n break;\n } else if (prunx < maxl) {\n obj.Search_move[depth] = m;\n if (Search_phase1(obj, shapex, prunx, maxl - 1, depth + 1, 1)) {\n return true;\n }\n }\n }\n }\n shapex = shape;\n if (lm <= 1) {\n m = 0;\n for (;;) {\n m += Shape_BottomMove[shapex];\n shapex = ~~m >> 4;\n m &= 15;\n if (m >= 6) {\n break;\n }\n prunx = ShapePrun[shapex];\n if (prunx > maxl) {\n break;\n } else if (prunx < maxl) {\n obj.Search_move[depth] = -m;\n if (Search_phase1(obj, shapex, prunx, maxl - 1, depth + 1, 2)) {\n return true;\n }\n }\n }\n }\n return false;\n}\n\nfunction Search_phase2(\n obj,\n edge,\n corner,\n topEdgeFirst,\n botEdgeFirst,\n ml,\n maxl,\n depth,\n lm,\n) {\n var botEdgeFirstx;\n var cornerx;\n var edgex;\n var m;\n var prun1;\n var prun2;\n var topEdgeFirstx;\n if (maxl === 0 && !topEdgeFirst && botEdgeFirst) {\n return true;\n }\n if (lm !== 0 && topEdgeFirst === botEdgeFirst) {\n edgex = Square_TwistMove[edge];\n cornerx = Square_TwistMove[corner];\n if (\n SquarePrun[(edgex << 1) | (1 - ml)] < maxl &&\n SquarePrun[(cornerx << 1) | (1 - ml)] < maxl\n ) {\n obj.Search_move[depth] = 0;\n if (\n Search_phase2(\n obj,\n edgex,\n cornerx,\n topEdgeFirst,\n botEdgeFirst,\n 1 - ml,\n maxl - 1,\n depth + 1,\n 0,\n )\n ) {\n return true;\n }\n }\n }\n if (lm <= 0) {\n topEdgeFirstx = !topEdgeFirst;\n edgex = topEdgeFirstx ? Square_TopMove[edge] : edge;\n cornerx = topEdgeFirstx ? corner : Square_TopMove[corner];\n m = topEdgeFirstx ? 1 : 2;\n prun1 = SquarePrun[(edgex << 1) | ml];\n prun2 = SquarePrun[(cornerx << 1) | ml];\n while (m < 12 && prun1 <= maxl && prun1 <= maxl) {\n if (prun1 < maxl && prun2 < maxl) {\n obj.Search_move[depth] = m;\n if (\n Search_phase2(\n obj,\n edgex,\n cornerx,\n topEdgeFirstx,\n botEdgeFirst,\n ml,\n maxl - 1,\n depth + 1,\n 1,\n )\n ) {\n return true;\n }\n }\n topEdgeFirstx = !topEdgeFirstx;\n if (topEdgeFirstx) {\n edgex = Square_TopMove[edgex];\n prun1 = SquarePrun[(edgex << 1) | ml];\n m += 1;\n } else {\n cornerx = Square_TopMove[cornerx];\n prun2 = SquarePrun[(cornerx << 1) | ml];\n m += 2;\n }\n }\n }\n if (lm <= 1) {\n botEdgeFirstx = !botEdgeFirst;\n edgex = botEdgeFirstx ? Square_BottomMove[edge] : edge;\n cornerx = botEdgeFirstx ? corner : Square_BottomMove[corner];\n m = botEdgeFirstx ? 1 : 2;\n prun1 = SquarePrun[(edgex << 1) | ml];\n prun2 = SquarePrun[(cornerx << 1) | ml];\n while (m < (maxl > 3 ? 6 : 12) && prun1 <= maxl && prun1 <= maxl) {\n if (prun1 < maxl && prun2 < maxl) {\n obj.Search_move[depth] = -m;\n if (\n Search_phase2(\n obj,\n edgex,\n cornerx,\n topEdgeFirst,\n botEdgeFirstx,\n ml,\n maxl - 1,\n depth + 1,\n 2,\n )\n ) {\n return true;\n }\n }\n botEdgeFirstx = !botEdgeFirstx;\n if (botEdgeFirstx) {\n edgex = Square_BottomMove[edgex];\n prun1 = SquarePrun[(edgex << 1) | ml];\n m += 1;\n } else {\n cornerx = Square_BottomMove[cornerx];\n prun2 = SquarePrun[(cornerx << 1) | ml];\n m += 2;\n }\n }\n }\n return false;\n}\n\nfunction Search_solution(obj, c) {\n var shape;\n obj.Search_c = c;\n shape = FullCube_getShapeIdx(c);\n //console.log(shape);\n for (\n obj.Search_length1 = ShapePrun[shape];\n obj.Search_length1 < 100;\n ++obj.Search_length1\n ) {\n //console.log(obj.Search_length1);\n obj.Search_maxlen2 = Math.min(31 - obj.Search_length1, 17);\n if (\n Search_phase1(obj, shape, ShapePrun[shape], obj.Search_length1, 0, -1)\n ) {\n break;\n }\n }\n return obj.Search_sol_string;\n}\n\nfunction Search_Search() {\n this.Search_move = [];\n this.Search_d = new FullCube_FullCube__Ljava_lang_String_2V();\n this.Search_sq = new Square_Square();\n}\n\nfunction Search() {}\n\n_ = Search_Search.prototype = Search.prototype;\n_.Search_c = null;\n_.Search_length1 = 0;\n_.Search_maxlen2 = 0;\n_.Search_sol_string = null;\nlet Shape_$clinit_ran = false;\nfunction Shape_$clinit() {\n if (Shape_$clinit_ran) {\n return;\n }\n Shape_$clinit_ran = true;\n Shape_halflayer = [0, 3, 6, 12, 15, 24, 27, 30, 48, 51, 54, 60, 63];\n Shape_ShapeIdx = [];\n ShapePrun = [];\n Shape_TopMove = [];\n Shape_BottomMove = [];\n Shape_TwistMove = [];\n Shape_init();\n}\n\nfunction Shape_bottomMove(obj) {\n var move;\n var moveParity;\n move = 0;\n moveParity = 0;\n do {\n if ((obj.bottom & 2048) === 0) {\n move += 1;\n obj.bottom = obj.bottom << 1;\n } else {\n move += 2;\n obj.bottom = (obj.bottom << 2) ^ 12291;\n }\n moveParity = 1 - moveParity;\n } while ((bitCount(obj.bottom & 63) & 1) !== 0);\n (bitCount(obj.bottom) & 2) === 0 && (obj.Shape_parity ^= moveParity);\n return move;\n}\n\nfunction Shape_getIdx(obj) {\n var ret;\n ret =\n (binarySearch(Shape_ShapeIdx, (obj.top << 12) | obj.bottom) << 1) |\n obj.Shape_parity;\n return ret;\n}\n\nfunction Shape_setIdx(obj, idx) {\n obj.Shape_parity = idx & 1;\n obj.top = Shape_ShapeIdx[~~idx >> 1];\n obj.bottom = obj.top & 4095;\n obj.top >>= 12;\n}\n\nfunction Shape_topMove(obj) {\n var move;\n var moveParity;\n move = 0;\n moveParity = 0;\n do {\n if ((obj.top & 2048) === 0) {\n move += 1;\n obj.top = obj.top << 1;\n } else {\n move += 2;\n obj.top = (obj.top << 2) ^ 12291;\n }\n moveParity = 1 - moveParity;\n } while ((bitCount(obj.top & 63) & 1) !== 0);\n (bitCount(obj.top) & 2) === 0 && (obj.Shape_parity ^= moveParity);\n return move;\n}\n\nfunction Shape_Shape() {}\n\nfunction Shape_getShape2Idx(shp) {\n var ret;\n ret = (binarySearch(Shape_ShapeIdx, shp & 16777215) << 1) | (~~shp >> 24);\n return ret;\n}\n\nfunction Shape_init() {\n var count;\n var depth;\n var dl;\n var done;\n var done0;\n var dr;\n var i;\n var idx;\n var m;\n var s;\n var ul;\n var ur;\n var value;\n var p1;\n var p3;\n var temp;\n count = 0;\n for (i = 0; i < 28561; ++i) {\n dr = Shape_halflayer[i % 13];\n dl = Shape_halflayer[~~(i / 13) % 13];\n ur = Shape_halflayer[~~(~~(i / 13) / 13) % 13];\n ul = Shape_halflayer[~~(~~(~~(i / 13) / 13) / 13)];\n value = (ul << 18) | (ur << 12) | (dl << 6) | dr;\n bitCount(value) === 16 && (Shape_ShapeIdx[count++] = value);\n }\n s = new Shape_Shape();\n for (i = 0; i < 7356; ++i) {\n Shape_setIdx(s, i);\n Shape_TopMove[i] = Shape_topMove(s);\n Shape_TopMove[i] |= Shape_getIdx(s) << 4;\n Shape_setIdx(s, i);\n Shape_BottomMove[i] = Shape_bottomMove(s);\n Shape_BottomMove[i] |= Shape_getIdx(s) << 4;\n Shape_setIdx(s, i);\n temp = s.top & 63;\n p1 = bitCount(temp);\n p3 = bitCount(s.bottom & 4032);\n s.Shape_parity ^= 1 & (~~(p1 & p3) >> 1);\n s.top = (s.top & 4032) | ((~~s.bottom >> 6) & 63);\n s.bottom = (s.bottom & 63) | (temp << 6);\n Shape_TwistMove[i] = Shape_getIdx(s);\n }\n for (i = 0; i < 7536; ++i) {\n ShapePrun[i] = -1;\n }\n ShapePrun[Shape_getShape2Idx(14378715)] = 0;\n ShapePrun[Shape_getShape2Idx(31157686)] = 0;\n ShapePrun[Shape_getShape2Idx(23967451)] = 0;\n ShapePrun[Shape_getShape2Idx(7191990)] = 0;\n done = 4;\n done0 = 0;\n depth = -1;\n while (done !== done0) {\n done0 = done;\n ++depth;\n for (i = 0; i < 7536; ++i) {\n if (ShapePrun[i] === depth) {\n m = 0;\n idx = i;\n do {\n idx = Shape_TopMove[idx];\n m += idx & 15;\n idx >>= 4;\n if (ShapePrun[idx] === -1) {\n ++done;\n ShapePrun[idx] = depth + 1;\n }\n } while (m !== 12);\n m = 0;\n idx = i;\n do {\n idx = Shape_BottomMove[idx];\n m += idx & 15;\n idx >>= 4;\n if (ShapePrun[idx] === -1) {\n ++done;\n ShapePrun[idx] = depth + 1;\n }\n } while (m !== 12);\n idx = Shape_TwistMove[i];\n if (ShapePrun[idx] === -1) {\n ++done;\n ShapePrun[idx] = depth + 1;\n }\n }\n }\n }\n}\n\nfunction Shape() {}\n\n_ = Shape_Shape.prototype = Shape.prototype;\n_.bottom = 0;\n_.Shape_parity = 0;\n_.top = 0;\nvar Shape_BottomMove;\nvar Shape_ShapeIdx;\nvar ShapePrun;\nvar Shape_TopMove;\nvar Shape_TwistMove;\nvar Shape_halflayer;\nlet Square_$clinit_ran = false;\nfunction Square_$clinit() {\n if (Square_$clinit_ran) {\n return;\n }\n Square_$clinit_ran = true;\n SquarePrun = [];\n Square_TwistMove = [];\n Square_TopMove = [];\n Square_BottomMove = [];\n fact = [1, 1, 2, 6, 24, 120, 720, 5040];\n Cnk = [];\n for (var i = 0; i < 12; ++i) {\n Cnk[i] = [];\n }\n Square_init();\n}\n\nfunction Square_Square() {}\n\nfunction get8Perm(arr) {\n var i;\n var idx;\n var v;\n var val;\n idx = 0;\n val = 1985229328;\n for (i = 0; i < 7; ++i) {\n v = arr[i] << 2;\n idx = (8 - i) * idx + ((~~val >> v) & 7);\n val -= 286331152 << v;\n }\n return idx & 65535;\n}\n\nfunction Square_init() {\n var check;\n var depth;\n var done;\n var find;\n var i;\n var idx;\n var idxx;\n var inv;\n var j;\n var m;\n var ml;\n var pos;\n var temp;\n for (i = 0; i < 12; ++i) {\n Cnk[i][0] = 1;\n Cnk[i][i] = 1;\n for (j = 1; j < i; ++j) {\n Cnk[i][j] = Cnk[i - 1][j - 1] + Cnk[i - 1][j];\n }\n }\n pos = [];\n for (i = 0; i < 40320; ++i) {\n set8Perm(pos, i);\n temp = pos[2];\n pos[2] = pos[4];\n pos[4] = temp;\n temp = pos[3];\n pos[3] = pos[5];\n pos[5] = temp;\n Square_TwistMove[i] = get8Perm(pos);\n set8Perm(pos, i);\n temp = pos[0];\n pos[0] = pos[1];\n pos[1] = pos[2];\n pos[2] = pos[3];\n pos[3] = temp;\n Square_TopMove[i] = get8Perm(pos);\n set8Perm(pos, i);\n temp = pos[4];\n pos[4] = pos[5];\n pos[5] = pos[6];\n pos[6] = pos[7];\n pos[7] = temp;\n Square_BottomMove[i] = get8Perm(pos);\n }\n for (i = 0; i < 80640; ++i) {\n SquarePrun[i] = -1;\n }\n SquarePrun[0] = 0;\n depth = 0;\n done = 1;\n while (done < 80640) {\n // console.log(done);\n inv = depth >= 11;\n find = inv ? -1 : depth;\n check = inv ? depth : -1;\n ++depth;\n OUT: for (i = 0; i < 80640; ++i) {\n if (SquarePrun[i] === find) {\n idx = ~~i >> 1;\n ml = i & 1;\n idxx = (Square_TwistMove[idx] << 1) | (1 - ml);\n if (SquarePrun[idxx] === check) {\n ++done;\n SquarePrun[inv ? i : idxx] = ~~(depth << 24) >> 24;\n if (inv) {\n continue OUT;\n }\n }\n idxx = idx;\n for (m = 0; m < 4; ++m) {\n idxx = Square_TopMove[idxx];\n if (SquarePrun[(idxx << 1) | ml] === check) {\n ++done;\n SquarePrun[inv ? i : (idxx << 1) | ml] = ~~(depth << 24) >> 24;\n if (inv) {\n continue OUT;\n }\n }\n }\n for (m = 0; m < 4; ++m) {\n idxx = Square_BottomMove[idxx];\n if (SquarePrun[(idxx << 1) | ml] === check) {\n ++done;\n SquarePrun[inv ? i : (idxx << 1) | ml] = ~~(depth << 24) >> 24;\n if (inv) {\n continue OUT;\n }\n }\n }\n }\n }\n }\n}\n\nfunction set8Perm(arr, idx) {\n var i;\n var m;\n var p;\n var v;\n var val;\n val = 1985229328;\n for (i = 0; i < 7; ++i) {\n p = fact[7 - i];\n v = ~~(idx / p);\n idx -= v * p;\n v <<= 2;\n arr[i] = ~~(((~~val >> v) & 7) << 24) >> 24;\n m = (1 << v) - 1;\n val = (val & m) + ((~~val >> 4) & ~m);\n }\n arr[7] = ~~(val << 24) >> 24;\n}\n\nfunction Square() {}\n\n_ = Square_Square.prototype = Square.prototype;\n_.botEdgeFirst = false;\n_.cornperm = 0;\n_.edgeperm = 0;\n_.ml = 0;\n_.topEdgeFirst = false;\nvar Square_BottomMove;\nvar Cnk;\nvar SquarePrun;\nvar Square_TopMove;\nvar Square_TwistMove;\nvar fact;\n\nfunction bitCount(x) {\n x -= (~~x >> 1) & 1431655765;\n x = ((~~x >> 2) & 858993459) + (x & 858993459);\n x = ((~~x >> 4) + x) & 252645135;\n x += ~~x >> 8;\n x += ~~x >> 16;\n return x & 63;\n}\n\nfunction binarySearch(sortedArray, key) {\n var high;\n var low;\n var mid;\n var midVal;\n low = 0;\n high = sortedArray.length - 1;\n while (low <= high) {\n mid = low + (~~(high - low) >> 1);\n midVal = sortedArray[mid];\n if (midVal < key) {\n low = mid + 1;\n } else if (midVal > key) {\n high = mid - 1;\n } else {\n return mid;\n }\n }\n return -low - 1;\n}\n\n/*\n * Some helper functions.\n */\n\nvar square1Solver_initialized = false;\n\nvar square1SolverInitialize = function (doneCallback, _, statusCallback) {\n if (!square1Solver_initialized) {\n Shape_$clinit();\n Square_$clinit();\n }\n\n if (statusCallback) {\n statusCallback(\"Done initializing Square-1.\");\n }\n\n square1Solver_initialized = true;\n if (doneCallback != null) {\n doneCallback();\n }\n};\n\nvar square1SolverGetRandomPosition = async function () {\n if (!square1Solver_initialized) {\n square1SolverInitialize();\n }\n return FullCube_randomCube();\n};\n\nvar square1SolverGenerate = function (state) {\n var search_search = new Search_Search(); // Can this be factored out?\n return Search_solution(search_search, state);\n};\n\nvar square1SolverGetRandomScramble = async function () {\n var randomState = await square1SolverGetRandomPosition();\n var scrambleString = square1SolverGenerate(randomState);\n\n return {\n state: randomState,\n scramble_string: scrambleString,\n };\n};\n\nexport async function getRandomSquare1ScrambleString() {\n return (await square1SolverGetRandomScramble()).scramble_string;\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["_"]
|
|
7
|
+
}
|