cubing 0.25.1 → 0.25.5
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 +13 -29
- package/dist/esm/{2x2x2.sgs.json-QKP2WRPT.js → 2x2x2.sgs.json-FBJ4RQ4C.js} +2 -2
- package/dist/esm/{2x2x2.sgs.json-QKP2WRPT.js.map → 2x2x2.sgs.json-FBJ4RQ4C.js.map} +0 -0
- package/dist/esm/{3d-dynamic-inside-GKERM3IG.js → 3d-dynamic-TNYERP4O.js} +28 -26
- package/dist/esm/3d-dynamic-TNYERP4O.js.map +7 -0
- package/dist/esm/{gwt-B7CBESZR.js → 3x3x3-min2phase-FPRJ5PCJ.js} +2 -2
- package/dist/esm/{gwt-B7CBESZR.js.map → 3x3x3-min2phase-FPRJ5PCJ.js.map} +1 -1
- package/dist/esm/{scramble_444-FXLLIDCW.js → 444-solver-YZ6PC54L.js} +4 -4
- package/dist/esm/{scramble_444-FXLLIDCW.js.map → 444-solver-YZ6PC54L.js.map} +1 -1
- package/dist/esm/bluetooth/index.js +1 -1
- package/dist/esm/{chunk-GXV3K7MX.js → chunk-4VNM5SER.js} +7 -2
- package/dist/esm/{chunk-GXV3K7MX.js.map → chunk-4VNM5SER.js.map} +2 -2
- package/dist/esm/chunk-BEXHMXCT.js +9 -0
- package/dist/esm/chunk-BEXHMXCT.js.map +7 -0
- package/dist/esm/{chunk-KRL5KQQK.js → chunk-F5WNHV7V.js} +2 -2
- package/dist/esm/{chunk-KRL5KQQK.js.map → chunk-F5WNHV7V.js.map} +2 -2
- package/dist/esm/chunk-IVQ4ITE2.js +33 -0
- package/dist/esm/chunk-IVQ4ITE2.js.map +7 -0
- package/dist/esm/{chunk-Z5INA5XR.js → chunk-JLNFWJIT.js} +30 -22
- package/dist/esm/chunk-JLNFWJIT.js.map +7 -0
- package/dist/esm/{chunk-T5KQKRR3.js → chunk-KJZNEDOV.js} +2 -2
- package/dist/esm/{chunk-T5KQKRR3.js.map → chunk-KJZNEDOV.js.map} +0 -0
- package/dist/esm/{chunk-HCNUMBT5.js → chunk-LGM2HUUG.js} +3 -3
- package/dist/esm/{chunk-HCNUMBT5.js.map → chunk-LGM2HUUG.js.map} +2 -2
- package/dist/esm/{chunk-QMZKTP7F.js → chunk-QEDC2QTN.js} +2 -2
- package/dist/esm/{chunk-QMZKTP7F.js.map → chunk-QEDC2QTN.js.map} +0 -0
- package/dist/esm/{chunk-QUTXXRPT.js → chunk-RJSX2HO4.js} +2 -2
- package/dist/esm/{chunk-QUTXXRPT.js.map → chunk-RJSX2HO4.js.map} +0 -0
- package/dist/esm/{chunk-37NJ765B.js → chunk-V5K5JN2N.js} +83 -26
- package/dist/esm/chunk-V5K5JN2N.js.map +7 -0
- package/dist/esm/chunk-WDJDRVZZ.js +28 -0
- package/dist/esm/chunk-WDJDRVZZ.js.map +7 -0
- package/dist/esm/{ftosolver-smaller-phase3-table-UTQRO776.js → fto-solver-HI6NIV74.js} +2 -2
- package/dist/esm/{ftosolver-smaller-phase3-table-UTQRO776.js.map → fto-solver-HI6NIV74.js.map} +1 -1
- package/dist/esm/{fto.sgs.json-T5WY2HR7.js → fto.dynamic-RAXDXLKL.js} +8 -3
- package/dist/esm/fto.dynamic-RAXDXLKL.js.map +7 -0
- package/dist/esm/kilominx.kpuzzle.svg-7XJBOKFU.js +83 -0
- package/dist/esm/kilominx.kpuzzle.svg-7XJBOKFU.js.map +7 -0
- package/dist/esm/kilosolver-N6JM5PUY.js +713 -0
- package/dist/esm/kilosolver-N6JM5PUY.js.map +7 -0
- package/dist/esm/{masterpyra-QOJCNGZM.js → master_tetraminx-solver-KBQJGW4A.js} +2 -5
- package/dist/esm/{masterpyra-QOJCNGZM.js.map → master_tetraminx-solver-KBQJGW4A.js.map} +3 -3
- package/dist/esm/{megaminx.sgs.json-KKR4VPHV.js → megaminx.sgs.json-3ZEDZMWF.js} +3 -3
- package/dist/esm/{megaminx.sgs.json-KKR4VPHV.js.map → megaminx.sgs.json-3ZEDZMWF.js.map} +0 -0
- package/dist/esm/puzzle-geometry/index.js +1 -1
- package/dist/esm/puzzles/index.js +3 -1
- package/dist/esm/{pyraminx.sgs.json-5HPDQAOM.js → pyraminx.sgs.json-AUUH6ELM.js} +3 -3
- package/dist/esm/{pyraminx.sgs.json-5HPDQAOM.js.map → pyraminx.sgs.json-AUUH6ELM.js.map} +0 -0
- package/dist/esm/scramble/index.js +5 -3
- package/dist/esm/search/index.js +5 -3
- package/dist/esm/{entry-RSZSKW5X.js → search-worker-js-entry-B76LGKC2.js} +32 -19
- package/dist/esm/search-worker-js-entry-B76LGKC2.js.map +7 -0
- package/dist/esm/search-worker-ts-entry-JZTMF3AC.js +22 -0
- package/dist/esm/search-worker-ts-entry-JZTMF3AC.js.map +7 -0
- package/dist/esm/{skewb.sgs.json-MWONK6HT.js → skewb.sgs.json-6NDFH63U.js} +3 -3
- package/dist/esm/{skewb.sgs.json-MWONK6HT.js.map → skewb.sgs.json-6NDFH63U.js.map} +0 -0
- package/dist/esm/{scramble_sq1-OZR6K4WV.js → sq1-solver-P3IWWET7.js} +2 -2
- package/dist/esm/{scramble_sq1-OZR6K4WV.js.map → sq1-solver-P3IWWET7.js.map} +1 -1
- package/dist/esm/twisty/index.js +58 -12
- package/dist/esm/twisty/index.js.map +3 -3
- package/dist/esm/worker-inside-generated-string-QVH4RRM7.js +3522 -0
- package/dist/esm/worker-inside-generated-string-QVH4RRM7.js.map +7 -0
- package/dist/types/puzzles/events.d.ts +8 -0
- package/dist/types/puzzles/implementations/kilominx/index.d.ts +2 -0
- package/dist/types/puzzles/implementations/kilominx/kilominx.kpuzzle.svg.d.ts +1 -0
- package/dist/types/puzzles/index.d.ts +6 -11
- package/dist/types/{esm-test-worker.d.ts → search/inside/search-worker-js-entry.d.ts} +0 -0
- package/dist/types/search/inside/{module-entry-path-getter.d.ts → search-worker-ts-entry-path-getter.d.ts} +0 -0
- package/dist/types/search/inside/{module-entry.d.ts → search-worker-ts-entry.d.ts} +0 -0
- package/dist/types/search/inside/solve/puzzles/{fto.sgs.json.d.ts → fto.dynamic.d.ts} +1 -0
- package/dist/types/search/inside/solve/puzzles/kilominx.d.ts +2 -0
- package/dist/types/search/inside/worker-guard.d.ts +3 -0
- package/dist/types/search/worker-inside-generated-string.d.ts +1 -1
- package/dist/types/twisty/heavy-code-imports/3d.d.ts +1 -1
- package/dist/types/twisty/heavy-code-imports/dynamic-entries/{3d-dynamic-inside.d.ts → 3d-dynamic.d.ts} +0 -0
- package/dist/types/twisty/model/TwistyPlayerModel.d.ts +4 -0
- package/dist/types/twisty/model/props/TwistyPropDebugger.d.ts +1 -2
- package/dist/types/twisty/model/props/general/ArbitraryStringProp.d.ts +4 -0
- package/dist/types/twisty/model/props/puzzle/structure/PuzzleIDRequestProp.d.ts +1 -0
- package/dist/types/twisty/views/TwistyPlayer.d.ts +6 -0
- package/dist/types/twisty/views/TwistyPlayerSettable.d.ts +6 -0
- package/dist/types/twisty/views/twizzle/TwizzleLink.d.ts +1 -1
- package/dist/types/vendor/comlink-everywhere/inside/index.d.ts +4 -1
- package/dist/types/vendor/comlink-everywhere/node-adapter.d.ts +6 -0
- package/dist/types/vendor/comlink-everywhere/outside/index.d.ts +4 -2
- package/dist/types/vendor/cstimer/src/js/scramble/{scramble_444.d.ts → 444-solver.d.ts} +0 -0
- package/dist/types/vendor/min2phase/{gwt.d.ts → 3x3x3-min2phase.d.ts} +0 -0
- package/dist/types/vendor/sq12phase/{scramble_sq1.d.ts → sq1-solver.d.ts} +0 -0
- package/dist/types/vendor/xyzzy/{ftosolver.d.ts → fto-solver-original.d.ts} +0 -26
- package/dist/types/vendor/xyzzy/{ftosolver-smaller-phase3-table.d.ts → fto-solver.d.ts} +0 -0
- package/dist/types/vendor/xyzzy/kilosolver.d.ts +2 -140
- package/dist/types/vendor/xyzzy/{masterpyra.d.ts → master_tetraminx-solver.d.ts} +0 -0
- package/dist/types/vendor/xyzzy/rediscrambler.d.ts +1 -23
- package/package.json +66 -71
- package/dist/esm/3d-dynamic-inside-GKERM3IG.js.map +0 -7
- package/dist/esm/chunk-37NJ765B.js.map +0 -7
- package/dist/esm/chunk-L7W7Q42Q.js +0 -18
- package/dist/esm/chunk-L7W7Q42Q.js.map +0 -7
- package/dist/esm/chunk-Z5INA5XR.js.map +0 -7
- package/dist/esm/entry-RSZSKW5X.js.map +0 -7
- package/dist/esm/esm-test-worker.js +0 -15
- package/dist/esm/esm-test-worker.js.map +0 -7
- package/dist/esm/fto.sgs.json-T5WY2HR7.js.map +0 -7
- package/dist/esm/module-entry-UDFTQHXX.js +0 -18
- package/dist/esm/module-entry-UDFTQHXX.js.map +0 -7
- package/dist/esm/node-KTVORTZB.js +0 -41
- package/dist/esm/node-KTVORTZB.js.map +0 -7
- package/dist/esm/node-LMAS5PGZ.js +0 -14
- package/dist/esm/node-LMAS5PGZ.js.map +0 -7
- package/dist/esm/worker-inside-generated-string-WGUQ4QSO.js +0 -2828
- package/dist/esm/worker-inside-generated-string-WGUQ4QSO.js.map +0 -7
- package/dist/types/search/esm-test-worker.d.ts +0 -3
- package/dist/types/search/inside/entry.d.ts +0 -1
- package/dist/types/vendor/comlink-everywhere/inside/node.d.ts +0 -1
- package/dist/types/vendor/comlink-everywhere/outside/node.d.ts +0 -2
|
@@ -1,21 +1,22 @@
|
|
|
1
|
+
import {
|
|
2
|
+
expose
|
|
3
|
+
} from "./chunk-WDJDRVZZ.js";
|
|
1
4
|
import {
|
|
2
5
|
cachedMegaminxKPuzzleWithoutMO
|
|
3
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-KJZNEDOV.js";
|
|
4
7
|
import {
|
|
5
8
|
sgsDataPyraminxFixedOrientation
|
|
6
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-RJSX2HO4.js";
|
|
7
10
|
import {
|
|
8
11
|
sgsDataSkewbFixedCorner,
|
|
9
12
|
skewbKPuzzleWithoutMOCached
|
|
10
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-QEDC2QTN.js";
|
|
11
14
|
import "./chunk-27KJGD3S.js";
|
|
12
|
-
import {
|
|
13
|
-
expose
|
|
14
|
-
} from "./chunk-L7W7Q42Q.js";
|
|
15
15
|
import {
|
|
16
16
|
countMoves
|
|
17
17
|
} from "./chunk-U2TSTTDG.js";
|
|
18
|
-
import "./chunk-
|
|
18
|
+
import "./chunk-F5WNHV7V.js";
|
|
19
|
+
import "./chunk-IVQ4ITE2.js";
|
|
19
20
|
import {
|
|
20
21
|
addOrientationSuffix,
|
|
21
22
|
initialize333,
|
|
@@ -25,7 +26,7 @@ import {
|
|
|
25
26
|
random333Scramble,
|
|
26
27
|
setIsInsideWorker,
|
|
27
28
|
solve333
|
|
28
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-LGM2HUUG.js";
|
|
29
30
|
import {
|
|
30
31
|
randomChoiceFactory,
|
|
31
32
|
randomPermute,
|
|
@@ -33,7 +34,7 @@ import {
|
|
|
33
34
|
} from "./chunk-RENZB7QN.js";
|
|
34
35
|
import {
|
|
35
36
|
puzzles
|
|
36
|
-
} from "./chunk-
|
|
37
|
+
} from "./chunk-V5K5JN2N.js";
|
|
37
38
|
import {
|
|
38
39
|
KState
|
|
39
40
|
} from "./chunk-Y32HHZUY.js";
|
|
@@ -164,7 +165,7 @@ var TREMBLE_DEPTH = 3;
|
|
|
164
165
|
var cachedTrembleSolver = null;
|
|
165
166
|
async function getCachedTrembleSolver() {
|
|
166
167
|
return cachedTrembleSolver || (cachedTrembleSolver = (async () => {
|
|
167
|
-
const sgsCachedData = await (await import("./2x2x2.sgs.json-
|
|
168
|
+
const sgsCachedData = await (await import("./2x2x2.sgs.json-FBJ4RQ4C.js")).cachedData222();
|
|
168
169
|
return new TrembleSolver(await puzzles["2x2x2"].kpuzzle(), sgsCachedData, "URFLBD".split(""));
|
|
169
170
|
})());
|
|
170
171
|
}
|
|
@@ -211,7 +212,7 @@ var randomSuffixes = [
|
|
|
211
212
|
];
|
|
212
213
|
var cachedImport = null;
|
|
213
214
|
function dynamicScramble444() {
|
|
214
|
-
return cachedImport ?? (cachedImport = import("./
|
|
215
|
+
return cachedImport ?? (cachedImport = import("./444-solver-YZ6PC54L.js"));
|
|
215
216
|
}
|
|
216
217
|
async function initialize444() {
|
|
217
218
|
return (await dynamicScramble444()).initialize();
|
|
@@ -299,13 +300,22 @@ async function oriented555RandomMoves() {
|
|
|
299
300
|
|
|
300
301
|
// src/cubing/search/inside/solve/puzzles/fto.ts
|
|
301
302
|
async function randomFTOScramble() {
|
|
302
|
-
|
|
303
|
+
mustBeInsideWorker();
|
|
304
|
+
const { randomFTOScrambleString } = await import("./fto.dynamic-RAXDXLKL.js");
|
|
303
305
|
return new Alg(await randomFTOScrambleString());
|
|
304
306
|
}
|
|
305
307
|
|
|
308
|
+
// src/cubing/search/inside/solve/puzzles/kilominx.ts
|
|
309
|
+
async function randomKilominxScramble() {
|
|
310
|
+
mustBeInsideWorker();
|
|
311
|
+
const { getRandomKilominxScramble } = await import("./kilosolver-N6JM5PUY.js");
|
|
312
|
+
return await getRandomKilominxScramble();
|
|
313
|
+
}
|
|
314
|
+
|
|
306
315
|
// src/cubing/search/inside/solve/puzzles/master_tetraminx.ts
|
|
307
316
|
async function randomMasterTetraminxScramble() {
|
|
308
|
-
const { randomMasterTetraminxScrambleString } = await import("./
|
|
317
|
+
const { randomMasterTetraminxScrambleString } = await import("./master_tetraminx-solver-KBQJGW4A.js");
|
|
318
|
+
mustBeInsideWorker();
|
|
309
319
|
return new Alg(await randomMasterTetraminxScrambleString());
|
|
310
320
|
}
|
|
311
321
|
|
|
@@ -314,7 +324,7 @@ var TREMBLE_DEPTH2 = 2;
|
|
|
314
324
|
var cachedTrembleSolver2 = null;
|
|
315
325
|
async function getCachedTrembleSolver2() {
|
|
316
326
|
return cachedTrembleSolver2 || (cachedTrembleSolver2 = (async () => {
|
|
317
|
-
const sgs = await import("./megaminx.sgs.json-
|
|
327
|
+
const sgs = await import("./megaminx.sgs.json-3ZEDZMWF.js");
|
|
318
328
|
const json = await sgs.cachedSGSDataMegaminx();
|
|
319
329
|
return new TrembleSolver(await cachedMegaminxKPuzzleWithoutMO(), json, [
|
|
320
330
|
"U",
|
|
@@ -347,7 +357,7 @@ var TREMBLE_DEPTH3 = 3;
|
|
|
347
357
|
var cachedTrembleSolver3 = null;
|
|
348
358
|
async function getCachedTrembleSolver3() {
|
|
349
359
|
return cachedTrembleSolver3 || (cachedTrembleSolver3 = (async () => {
|
|
350
|
-
const sgs = await import("./pyraminx.sgs.json-
|
|
360
|
+
const sgs = await import("./pyraminx.sgs.json-AUUH6ELM.js");
|
|
351
361
|
const json = await sgs.sgsDataPyraminx();
|
|
352
362
|
return new TrembleSolver(await puzzles.pyraminx.kpuzzle(), json, "RLUB".split(""));
|
|
353
363
|
})());
|
|
@@ -359,6 +369,7 @@ async function solvePyraminx(state) {
|
|
|
359
369
|
return alg;
|
|
360
370
|
}
|
|
361
371
|
async function randomPyraminxStateFixedOrientation() {
|
|
372
|
+
mustBeInsideWorker();
|
|
362
373
|
return randomStateFromSGS(await puzzles.pyraminx.kpuzzle(), await sgsDataPyraminxFixedOrientation());
|
|
363
374
|
}
|
|
364
375
|
async function randomPyraminxScrambleFixedOrientation() {
|
|
@@ -370,7 +381,7 @@ var TREMBLE_DEPTH4 = 3;
|
|
|
370
381
|
var cachedTrembleSolver4 = null;
|
|
371
382
|
async function getCachedTrembleSolver4() {
|
|
372
383
|
return cachedTrembleSolver4 || (cachedTrembleSolver4 = (async () => {
|
|
373
|
-
const sgs = await import("./skewb.sgs.json-
|
|
384
|
+
const sgs = await import("./skewb.sgs.json-6NDFH63U.js");
|
|
374
385
|
const json = await sgs.sgsDataSkewb();
|
|
375
386
|
return new TrembleSolver(await sgs.skewbKPuzzleWithoutMOCached(), json, "RLUB".split(""));
|
|
376
387
|
})());
|
|
@@ -400,7 +411,7 @@ async function randomSkewbFixedCornerScramble() {
|
|
|
400
411
|
// src/cubing/search/inside/solve/puzzles/sq1.ts
|
|
401
412
|
var cachedImport2 = null;
|
|
402
413
|
function dynamicScrambleSq1() {
|
|
403
|
-
return cachedImport2 ?? (cachedImport2 = import("./
|
|
414
|
+
return cachedImport2 ?? (cachedImport2 = import("./sq1-solver-P3IWWET7.js"));
|
|
404
415
|
}
|
|
405
416
|
async function getRandomSquare1Scramble() {
|
|
406
417
|
return Alg.fromString(await (await dynamicScrambleSq1()).getRandomSquare1ScrambleString());
|
|
@@ -478,6 +489,8 @@ var insideAPI = {
|
|
|
478
489
|
return measurePerf("randomFTOScramble", randomFTOScramble);
|
|
479
490
|
case "master_tetraminx":
|
|
480
491
|
return measurePerf("randomMasterTetraminxScramble", randomMasterTetraminxScramble);
|
|
492
|
+
case "kilominx":
|
|
493
|
+
return measurePerf("randomKilominxScramble", randomKilominxScramble);
|
|
481
494
|
default:
|
|
482
495
|
throw new Error(`unsupported event: ${eventID}`);
|
|
483
496
|
}
|
|
@@ -510,6 +523,6 @@ var insideAPI = {
|
|
|
510
523
|
}
|
|
511
524
|
};
|
|
512
525
|
|
|
513
|
-
// src/cubing/search/inside/entry.js
|
|
526
|
+
// src/cubing/search/inside/search-worker-js-entry.js
|
|
514
527
|
expose(insideAPI);
|
|
515
|
-
//# sourceMappingURL=entry-
|
|
528
|
+
//# sourceMappingURL=search-worker-js-entry-B76LGKC2.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/cubing/search/inside/solve/tremble.ts", "../../src/cubing/search/inside/solve/puzzles/2x2x2.ts", "../../src/cubing/search/inside/solve/puzzles/4x4x4.ts", "../../src/cubing/search/inside/solve/puzzles/big-cubes.ts", "../../src/cubing/search/inside/solve/puzzles/5x5x5.ts", "../../src/cubing/search/inside/solve/puzzles/fto.ts", "../../src/cubing/search/inside/solve/puzzles/kilominx.ts", "../../src/cubing/search/inside/solve/puzzles/master_tetraminx.ts", "../../src/cubing/search/inside/solve/puzzles/megaminx.ts", "../../src/cubing/search/inside/solve/puzzles/pyraminx.ts", "../../src/cubing/search/inside/solve/puzzles/skewb.ts", "../../src/cubing/search/inside/solve/puzzles/sq1.ts", "../../src/cubing/search/inside/api.ts", "../../src/cubing/search/inside/search-worker-js-entry.js"],
|
|
4
|
+
"sourcesContent": ["import { Alg, AlgBuilder, Move, QuantumMove } from \"../../../alg\";\nimport type { KPuzzle, KTransformation } from \"../../../kpuzzle\";\nimport type { KState } from \"../../../kpuzzle/KState\";\nimport { experimentalCountMoves } from \"../../../notation\";\nimport { randomChoiceFactory } from \"../../../vendor/random-uint-below\";\nimport type { SGSAction, SGSCachedData } from \"./parseSGS\";\n\nconst DEFAULT_STAGE1_DEPTH_LIMIT = 2; // Moderately performant default.\n\nconst DOUBLECHECK_PLACED_PIECES = true;\nconst DEBUG = false;\n\n// TODO: Take moves instead of move names?\nfunction calculateMoves(\n kpuzzle: KPuzzle,\n moveNames: string[],\n): {\n move: Move;\n transformation: KTransformation;\n}[] {\n const searchMoves: {\n move: Move;\n transformation: KTransformation;\n }[] = [];\n // const identity = identityTransformation(def); // TODO\n // TODO: Make it easy to filter moves.\n moveNames.forEach(function (moveName) {\n const rootMove = new Move(moveName);\n if (rootMove.amount !== 1) {\n throw new Error(\n \"SGS cannot handle def moves with an amount other than 1 yet.\",\n );\n }\n let transformation = kpuzzle.identityTransformation();\n // eslint-disable-next-line no-constant-condition\n for (let i = 1; true; i++) {\n transformation = transformation.applyMove(rootMove);\n if (transformation.isIdentityTransformation()) {\n break;\n }\n searchMoves.push({\n move: rootMove.modified({ amount: i }),\n transformation,\n });\n }\n });\n return searchMoves;\n}\n\n// function badRandomMoves(moves: string[], ksp: KSolvePuzzle): KSolvePuzzleState {\n// // var sum = 0;\n// var scramble = \"\";\n// for (var i = 0; i < 1000; i++) {\n// scramble = scramble + \" \" + moves[Math.floor(moves.length * Math.random())];\n// }\n// // var sol = \"\";\n// const indexer = new TreeAlgIndexer(ksp, Alg.fromString(scramble));\n// return indexer.transformAtIndex(indexer.numMoves()) as any; // TODO\n// }\n\nexport class TrembleSolver {\n private searchMoves: {\n move: Move;\n transformation: KTransformation;\n }[];\n\n constructor(\n private kpuzzle: KPuzzle,\n private sgs: SGSCachedData,\n trembleMoveNames?: string[],\n ) {\n this.searchMoves = calculateMoves(\n this.kpuzzle,\n trembleMoveNames ?? Object.keys(this.kpuzzle.definition.moves),\n );\n }\n\n // public badRandomMoves(): KSolvePuzzleState {\n // return badRandomMoves(this.moves, this.ksp);\n // }\n\n public async solve(\n state: KState,\n stage1DepthLimit: number = DEFAULT_STAGE1_DEPTH_LIMIT,\n quantumMoveOrder?: (quantumMove: QuantumMove) => number,\n ): Promise<Alg> {\n const transformation = state.experimentalToTransformation();\n if (!transformation) {\n throw new Error(\n \"distinguishable pieces are not supported in tremble solver yt\",\n );\n }\n let bestAlg: Alg | null = null;\n let bestLen = 1000000;\n const recur = (\n recursiveTransformation: KTransformation, // TODO: Support KStatq1\n togo: number,\n sofar: Alg,\n ) => {\n // console.log(\"recur\");\n if (togo === 0) {\n const sgsAlg = this.sgsPhaseSolve(recursiveTransformation, bestLen);\n if (!sgsAlg) {\n return;\n }\n // console.log(\"sgs done!\", sofar.toString(), \"|\", sgsAlg.toString());\n const newAlg = sofar\n .concat(sgsAlg)\n .simplify({ collapseMoves: true, quantumMoveOrder });\n\n const len = experimentalCountMoves(newAlg);\n if (bestAlg === null || len < bestLen) {\n if (DEBUG) {\n console.log(`New best (${len} moves): ${newAlg.toString()}`);\n console.log(`Tremble moves are: ${sofar.toString()}`);\n }\n bestAlg = newAlg;\n bestLen = len;\n }\n return;\n }\n for (const searchMove of this.searchMoves) {\n recur(\n recursiveTransformation.applyTransformation(\n searchMove.transformation,\n ),\n togo - 1,\n sofar.concat([searchMove.move]),\n );\n }\n };\n for (let d = 0; d <= stage1DepthLimit; d++) {\n recur(transformation, d, new Alg());\n }\n if (bestAlg === null) {\n throw new Error(\"SGS search failed.\");\n }\n return bestAlg;\n }\n\n private sgsPhaseSolve(\n initialTransformation: KTransformation, // TODO: Handle KState\n bestLenSofar: number,\n ): Alg | null {\n // const pieceNames = \"UFR URB UBL ULF DRF DFL DLB DBR\".split(\" \");\n\n // function loggo(s: string) {\n // // console.warn(s);\n // // document.body.appendChild(document.createElement(\"div\")).textContent = s;\n // }\n\n // console.log(\"sgsPhaseSolve\");\n const algBuilder = new AlgBuilder();\n let transformation = initialTransformation;\n for (const step of this.sgs.ordering) {\n const cubieSeq = step.pieceOrdering;\n let key = \"\";\n const inverseTransformation = transformation.invert();\n for (let i = 0; i < cubieSeq.length; i++) {\n const loc = cubieSeq[i];\n const orbitName = loc.orbitName;\n const idx = loc.permutationIdx;\n key += ` ${inverseTransformation.transformationData[orbitName].permutation[idx]} ${inverseTransformation.transformationData[orbitName].orientation[idx]}`;\n }\n // console.log(key, step.lookup);\n const info = step.lookup[key];\n if (!info) {\n throw new Error(\"Missing algorithm in sgs or esgs?\");\n }\n algBuilder.experimentalPushAlg(info.alg);\n if (algBuilder.experimentalNumUnits() >= bestLenSofar) {\n return null;\n }\n transformation = transformation.applyTransformation(info.transformation);\n if (DOUBLECHECK_PLACED_PIECES) {\n for (let i = 0; i < cubieSeq.length; i++) {\n const location = cubieSeq[i];\n const orbitName = location.orbitName;\n const idx = location.permutationIdx;\n if (\n transformation.transformationData[orbitName].permutation[idx] !==\n idx ||\n transformation.transformationData[orbitName].orientation[idx] !== 0\n ) {\n throw new Error(\"bad SGS :-(\");\n }\n }\n }\n }\n return algBuilder.toAlg();\n }\n}\n\nexport async function randomStateFromSGS(\n kpuzzle: KPuzzle,\n sgs: SGSCachedData,\n): Promise<KState> {\n const randomChoice = await randomChoiceFactory<SGSAction>(); // TODO: make this sync by putting the factory into a TLA\n\n let transformation = kpuzzle.identityTransformation();\n for (const step of sgs.ordering) {\n const sgsAction = randomChoice(Object.values(step.lookup));\n transformation = transformation.applyTransformation(\n sgsAction.transformation,\n );\n }\n return transformation.toKState();\n}\n", "import type { Alg } from \"../../../../alg\";\nimport type { KPuzzle } from \"../../../../kpuzzle\";\nimport { KState } from \"../../../../kpuzzle\";\nimport { puzzles } from \"../../../../puzzles\";\nimport {\n randomPermute,\n randomUIntBelowFactory,\n} from \"../../../../vendor/random-uint-below\";\nimport { mustBeInsideWorker } from \"../../inside-worker\";\nimport type { SGSCachedData } from \"../parseSGS\";\nimport { TrembleSolver } from \"../tremble\";\n\n// Empirical ly determined depth:\n// - \u224811 moves on average (as opposed to >13 moves for depth 2),\n// - in close to 40ms(on a MacBook Pro).\nconst TREMBLE_DEPTH = 3;\n\nlet cachedTrembleSolver: Promise<TrembleSolver> | null = null;\nasync function getCachedTrembleSolver(): Promise<TrembleSolver> {\n return (\n cachedTrembleSolver ||\n (cachedTrembleSolver = (async (): Promise<TrembleSolver> => {\n const sgsCachedData: SGSCachedData = await (\n await import(\"./2x2x2.sgs.json\")\n ).cachedData222();\n return new TrembleSolver(\n await puzzles[\"2x2x2\"].kpuzzle(),\n sgsCachedData,\n \"URFLBD\".split(\"\"),\n );\n })())\n );\n}\n\nexport async function preInitialize222(): Promise<void> {\n await getCachedTrembleSolver();\n}\n\n// TODO: fix def consistency.\nexport async function solve222(state: KState): Promise<Alg> {\n mustBeInsideWorker();\n const trembleSolver = await getCachedTrembleSolver();\n const alg = await trembleSolver.solve(state, TREMBLE_DEPTH, () => 4); // TODO: Attach quantum move order lookup to puzzle.\n return alg;\n}\n\n// TODO: factor out and test.\nasync function mutatingRandomizeOrbit(\n kpuzzle: KPuzzle,\n orbitName: string,\n state: KState,\n options?: { orientationSum?: number },\n): Promise<void> {\n const randomUIntBelow = await randomUIntBelowFactory();\n await randomPermute(state.stateData[orbitName].pieces);\n\n const orbitDef = kpuzzle.definition.orbits[orbitName];\n const ori = state.stateData[orbitName].orientation;\n\n let sum = 0;\n for (let i = 0; i < orbitDef.numPieces; i++) {\n const o = randomUIntBelow(orbitDef.numOrientations);\n ori[i] = o;\n sum += o;\n }\n\n // console.log(\"aaaa\", options && \"orientationSum\" in options);\n if (options && \"orientationSum\" in options) {\n // console.log(\"sfdsf\", options!.orientationSum),\n ori[0] =\n (((ori[0] + options.orientationSum! - sum) % orbitDef.numOrientations) +\n orbitDef.numOrientations) %\n orbitDef.numOrientations;\n }\n}\n\n// TODO: Use SGS?\nexport async function random222State(): Promise<KState> {\n const kpuzzle = await puzzles[\"2x2x2\"].kpuzzle();\n const stateCopy: KState = new KState(\n kpuzzle,\n JSON.parse(JSON.stringify(kpuzzle.startState().stateData)),\n ); // TODO\n await mutatingRandomizeOrbit(kpuzzle, \"CORNERS\", stateCopy, {\n orientationSum: 0,\n });\n return stateCopy;\n}\n\nexport async function random222Scramble(): Promise<Alg> {\n return await solve222(await random222State());\n}\n", "import type { Alg } from \"../../../../alg\";\nimport { addOrientationSuffix } from \"../addOrientationSuffix\";\n\nconst randomSuffixes = [\n [null, \"x\", \"x2\", \"x'\", \"z\", \"z'\"],\n [null, \"y\", \"y2\", \"y'\"],\n];\n\nlet cachedImport: Promise<\n typeof import(\"../../../../vendor/cstimer/src/js/scramble/444-solver\")\n> | null = null;\nfunction dynamicScramble444(): Promise<\n typeof import(\"../../../../vendor/cstimer/src/js/scramble/444-solver\")\n> {\n return (cachedImport ??= import(\n \"../../../../vendor/cstimer/src/js/scramble/444-solver\"\n ));\n}\n\nexport async function initialize444(): Promise<void> {\n return (await dynamicScramble444()).initialize();\n}\n\nexport async function random444Scramble(): Promise<Alg> {\n return (await dynamicScramble444()).random444Scramble();\n}\n\nexport async function random444OrientedScramble(): Promise<Alg> {\n return addOrientationSuffix(await random444Scramble(), randomSuffixes);\n}\n", "import { Alg, AlgBuilder, Move, QuantumMove } from \"../../../../alg\";\nimport {\n randomChoiceFactory,\n randomUIntBelowFactory,\n} from \"../../../../vendor/random-uint-below\";\n\nfunction numMoves(n: number): number {\n switch (n) {\n case 5:\n return 60;\n case 6:\n return 80;\n default:\n return 100;\n }\n}\n\nconst axesFaces = [\n [\"U\", \"D\"],\n [\"L\", \"R\"],\n [\"F\", \"B\"],\n];\nconst axesMovesCache: Map<number, QuantumMove[][]> = new Map();\nfunction cachedAxesMoves(n: number): QuantumMove[][] {\n const existing = axesMovesCache.get(n);\n if (existing) {\n return existing;\n }\n const axesMoves = [];\n for (const faces of axesFaces) {\n const axisMoveFamilies: QuantumMove[] = [];\n axesMoves.push(axisMoveFamilies);\n\n for (const face of faces) {\n axisMoveFamilies.push(new QuantumMove(face));\n if (n > 3) {\n axisMoveFamilies.push(new QuantumMove(`${face}w`));\n }\n for (let i = 3; i <= n / 2; i++) {\n axisMoveFamilies.push(new QuantumMove(`${face}w`, i));\n }\n }\n }\n axesMovesCache.set(n, axesMoves);\n return axesMoves;\n}\n\n// TODO: Document this algorithm and compare to TNoodle.\nexport async function bigCubeRandomMoves(n: number): Promise<Alg> {\n const randomUintBelow = await randomUIntBelowFactory();\n const randomChoice = await randomChoiceFactory<QuantumMove>();\n const randomNumChoice = randomChoice as any as (arr: Array<number>) => number; // TODO: Avoid needing multiple instantiations or recasting.\n\n const axesMoves = cachedAxesMoves(n);\n\n const cachedNumMoves = numMoves(n);\n const algBuilder = new AlgBuilder();\n let currentAxisIdx = 0;\n const currentAxisQuantumMoves = new Set();\n while (algBuilder.experimentalNumUnits() < cachedNumMoves) {\n const newAxisIdx = randomUintBelow(3);\n if (newAxisIdx !== currentAxisIdx) {\n currentAxisQuantumMoves.clear();\n }\n currentAxisIdx = newAxisIdx;\n\n const quantumMove = randomChoice(axesMoves[currentAxisIdx]);\n const quantumMoveStr = quantumMove.toString();\n if (currentAxisQuantumMoves.has(quantumMoveStr)) {\n // Skip duplicates and resample with replacement.\n continue;\n }\n currentAxisQuantumMoves.add(quantumMoveStr);\n algBuilder.push(new Move(quantumMove, randomNumChoice([1, 2, -1])));\n }\n\n return algBuilder.toAlg();\n}\n", "import type { Alg } from \"../../../../alg\";\nimport { addOrientationSuffix } from \"../addOrientationSuffix\";\nimport { bigCubeRandomMoves } from \"./big-cubes\";\n\nconst randomSuffixes = [\n [null, \"3Rw\", \"3Rw2\", \"3Rw'\", \"3Fw\", \"3Fw'\"],\n [null, \"3Dw\", \"3Dw2\", \"3Dw'\"],\n];\n\nexport async function oriented555RandomMoves(): Promise<Alg> {\n return addOrientationSuffix(await bigCubeRandomMoves(5), randomSuffixes);\n}\n", "import { Alg } from \"../../../../alg\";\nimport type { KState } from \"../../../../kpuzzle/KState\";\nimport { puzzles } from \"../../../../puzzles\";\nimport { mustBeInsideWorker } from \"../../inside-worker\";\nimport type { SGSCachedData } from \"../parseSGS\";\nimport { TrembleSolver } from \"../tremble\";\n\nconst TREMBLE_DEPTH = 3;\n\nlet cachedTrembleSolver: Promise<TrembleSolver> | null = null;\nasync function getCachedTrembleSolver(): Promise<TrembleSolver> {\n return (\n cachedTrembleSolver ||\n (cachedTrembleSolver = (async (): Promise<TrembleSolver> => {\n const sgs = await import(\"./fto.dynamic\");\n const json: SGSCachedData = await sgs.sgsDataFTO();\n return new TrembleSolver(await puzzles[\"fto\"].kpuzzle(), json, [\n \"U\",\n \"R\",\n \"F\",\n \"L\",\n \"D\",\n \"B\",\n \"BR\",\n \"BL\",\n ]);\n })())\n );\n}\n\nexport async function preInitializeFTO(): Promise<void> {\n await getCachedTrembleSolver();\n}\n\n// TODO: centers\nexport async function solveFTO(state: KState): Promise<Alg> {\n mustBeInsideWorker();\n const trembleSolver = await getCachedTrembleSolver();\n const alg = await trembleSolver.solve(\n state,\n TREMBLE_DEPTH,\n () => 3, // TODO: Attach quantum move order lookup to puzzle.\n );\n return alg;\n}\n\nexport async function randomFTOScramble(): Promise<Alg> {\n mustBeInsideWorker();\n const { randomFTOScrambleString } = await import(\"./fto.dynamic\");\n return new Alg(await randomFTOScrambleString());\n}\n", "import type { Alg } from \"../../../../alg\";\nimport { mustBeInsideWorker } from \"../../inside-worker\";\n\nexport async function randomKilominxScramble(): Promise<Alg> {\n mustBeInsideWorker();\n const { getRandomKilominxScramble } = await import(\n \"../../../../vendor/xyzzy/kilosolver\"\n );\n return await getRandomKilominxScramble();\n}\n", "import { Alg } from \"../../../../alg\";\nimport { mustBeInsideWorker } from \"../../inside-worker\";\n\nexport async function randomMasterTetraminxScramble(): Promise<Alg> {\n const { randomMasterTetraminxScrambleString } = await import(\n \"../../../../vendor/xyzzy/master_tetraminx-solver.js\"\n );\n mustBeInsideWorker();\n return new Alg(await randomMasterTetraminxScrambleString());\n}\n", "import type { Alg } from \"../../../../alg\";\nimport type { KStateData } from \"../../../../kpuzzle\";\nimport { KState } from \"../../../../kpuzzle\";\nimport { mustBeInsideWorker } from \"../../inside-worker\";\nimport type { SGSCachedData } from \"../parseSGS\";\nimport { TrembleSolver } from \"../tremble\";\nimport { cachedMegaminxKPuzzleWithoutMO } from \"./megaminx.sgs.json\";\n\nconst TREMBLE_DEPTH = 2;\n\nlet cachedTrembleSolver: Promise<TrembleSolver> | null = null;\nasync function getCachedTrembleSolver(): Promise<TrembleSolver> {\n return (\n cachedTrembleSolver ||\n (cachedTrembleSolver = (async (): Promise<TrembleSolver> => {\n const sgs = await import(\"./megaminx.sgs.json\");\n const json: SGSCachedData = await sgs.cachedSGSDataMegaminx();\n return new TrembleSolver(await cachedMegaminxKPuzzleWithoutMO(), json, [\n \"U\",\n \"R\",\n \"F\",\n \"L\",\n \"BR\",\n \"BL\",\n \"FR\",\n \"FL\",\n \"DR\",\n \"DL\",\n \"B\",\n \"D\",\n ]);\n })())\n );\n}\n\nexport async function preInitializeMegaminx(): Promise<void> {\n await getCachedTrembleSolver();\n}\n\n// TODO: centers\nexport async function solveMegaminx(state: KState): Promise<Alg> {\n mustBeInsideWorker();\n const trembleSolver = await getCachedTrembleSolver();\n const stateDataWithoutMO: KStateData = JSON.parse(\n JSON.stringify(state.stateData),\n );\n stateDataWithoutMO.CENTERS.orientation = new Array(12).fill(0);\n const stateWithoutMO = new KState(\n await cachedMegaminxKPuzzleWithoutMO(),\n stateDataWithoutMO,\n );\n const alg = await trembleSolver.solve(\n stateWithoutMO,\n TREMBLE_DEPTH,\n () => 5, // TODO: Attach quantum move order lookup to puzzle.\n );\n return alg;\n}\n", "import type { Alg } from \"../../../../alg\";\nimport type { KState } from \"../../../../kpuzzle/KState\";\nimport { puzzles } from \"../../../../puzzles\";\nimport { mustBeInsideWorker } from \"../../inside-worker\";\nimport type { SGSCachedData } from \"../parseSGS\";\nimport { randomStateFromSGS, TrembleSolver } from \"../tremble\";\nimport { sgsDataPyraminxFixedOrientation } from \"./pyraminx.sgs.json\";\n\nconst TREMBLE_DEPTH = 3;\n\nlet cachedTrembleSolver: Promise<TrembleSolver> | null = null;\nasync function getCachedTrembleSolver(): Promise<TrembleSolver> {\n return (\n cachedTrembleSolver ||\n (cachedTrembleSolver = (async (): Promise<TrembleSolver> => {\n const sgs = await import(\"./pyraminx.sgs.json\");\n const json: SGSCachedData = await sgs.sgsDataPyraminx();\n return new TrembleSolver(\n await puzzles.pyraminx.kpuzzle(),\n json,\n \"RLUB\".split(\"\"),\n );\n })())\n );\n}\n\nexport async function preInitializePyraminx(): Promise<void> {\n await getCachedTrembleSolver();\n}\n\nexport async function solvePyraminx(state: KState): Promise<Alg> {\n mustBeInsideWorker();\n const trembleSolver = await getCachedTrembleSolver();\n const alg = await trembleSolver.solve(state, TREMBLE_DEPTH, () => 3); // TODO: Attach quantum move order lookup to puzzle.\n return alg;\n}\n\nexport async function randomPyraminxStateFixedOrientation(): Promise<KState> {\n mustBeInsideWorker();\n // Note: this sets all center orientations to 0.\n return randomStateFromSGS(\n await puzzles.pyraminx.kpuzzle(),\n await sgsDataPyraminxFixedOrientation(),\n );\n}\n\nexport async function randomPyraminxScrambleFixedOrientation(): Promise<Alg> {\n return solvePyraminx(await randomPyraminxStateFixedOrientation());\n}\n", "import type { Alg, QuantumMove } from \"../../../../alg\";\nimport { KState } from \"../../../../kpuzzle\";\nimport { mustBeInsideWorker } from \"../../inside-worker\";\nimport type { SGSCachedData } from \"../parseSGS\";\nimport { randomStateFromSGS, TrembleSolver } from \"../tremble\";\nimport {\n sgsDataSkewbFixedCorner,\n skewbKPuzzleWithoutMOCached,\n} from \"./skewb.sgs.json\";\n\nconst TREMBLE_DEPTH = 3;\n\nlet cachedTrembleSolver: Promise<TrembleSolver> | null = null;\nasync function getCachedTrembleSolver(): Promise<TrembleSolver> {\n return (\n cachedTrembleSolver ||\n (cachedTrembleSolver = (async (): Promise<TrembleSolver> => {\n const sgs = await import(\"./skewb.sgs.json\");\n const json: SGSCachedData = await sgs.sgsDataSkewb();\n return new TrembleSolver(\n await sgs.skewbKPuzzleWithoutMOCached(),\n json,\n \"RLUB\".split(\"\"),\n );\n })())\n );\n}\n\nexport async function preInitializeSkewb(): Promise<void> {\n await getCachedTrembleSolver();\n}\n\nfunction resetCenterOrientation(state: KState): KState {\n return new KState(state.kpuzzle, {\n CORNERS: state.stateData.CORNERS,\n CENTERS: {\n pieces: state.stateData.CENTERS.pieces,\n orientation: new Array(6).fill(0),\n },\n });\n}\n\n// TODO: fix def consistency.\nexport async function solveSkewb(state: KState): Promise<Alg> {\n mustBeInsideWorker();\n const trembleSolver = await getCachedTrembleSolver();\n const alg = await trembleSolver.solve(\n resetCenterOrientation(state),\n TREMBLE_DEPTH,\n (quantumMove: QuantumMove) => (quantumMove.family === \"y\" ? 4 : 3), // TODO: Attach quantum move order lookup to puzzle.\n );\n return alg;\n}\n\nexport async function randomSkewbFixedCornerState(): Promise<KState> {\n // Note: this sets all center orientations to 0.\n return randomStateFromSGS(\n await skewbKPuzzleWithoutMOCached(),\n await sgsDataSkewbFixedCorner(),\n );\n}\n\nexport async function randomSkewbFixedCornerScramble(): Promise<Alg> {\n return solveSkewb(await randomSkewbFixedCornerState());\n}\n", "import { Alg } from \"../../../../alg\";\n\nlet cachedImport: Promise<\n typeof import(\"../../../../vendor/sq12phase/sq1-solver\")\n> | null = null;\nfunction dynamicScrambleSq1(): Promise<\n typeof import(\"../../../../vendor/sq12phase/sq1-solver\")\n> {\n return (cachedImport ??= import(\"../../../../vendor/sq12phase/sq1-solver\"));\n}\n\nexport async function getRandomSquare1Scramble(): Promise<Alg> {\n return Alg.fromString(\n await (await dynamicScrambleSq1()).getRandomSquare1ScrambleString(),\n );\n}\n", "import type { Alg } from \"../../alg\";\nimport type { KStateData } from \"../../kpuzzle\";\nimport { KState } from \"../../kpuzzle\";\nimport { puzzles } from \"../../puzzles\";\nimport { setIsInsideWorker } from \"./inside-worker\";\nimport {\n preInitialize222,\n random222Scramble,\n solve222,\n} from \"./solve/puzzles/2x2x2\";\nimport {\n initialize333,\n random333FewestMovesScramble,\n random333OrientedScramble,\n random333Scramble,\n solve333,\n} from \"./solve/puzzles/3x3x3\";\nimport {\n initialize444,\n random444OrientedScramble,\n random444Scramble,\n} from \"./solve/puzzles/4x4x4\";\nimport { oriented555RandomMoves } from \"./solve/puzzles/5x5x5\";\nimport { bigCubeRandomMoves } from \"./solve/puzzles/big-cubes\";\nimport { randomFTOScramble } from \"./solve/puzzles/fto\";\nimport { randomKilominxScramble } from \"./solve/puzzles/kilominx\";\nimport { randomMasterTetraminxScramble } from \"./solve/puzzles/master_tetraminx\";\nimport { solveMegaminx } from \"./solve/puzzles/megaminx\";\nimport {\n randomPyraminxScrambleFixedOrientation,\n solvePyraminx,\n} from \"./solve/puzzles/pyraminx\";\nimport {\n randomSkewbFixedCornerScramble,\n solveSkewb,\n} from \"./solve/puzzles/skewb\";\nimport { getRandomSquare1Scramble } from \"./solve/puzzles/sq1\";\n\nsetIsInsideWorker(true);\n\nlet DEBUG_MEASURE_PERF = true;\nexport function setDebugMeasurePerf(newDebugMeasurePerf: boolean): void {\n DEBUG_MEASURE_PERF = newDebugMeasurePerf;\n}\n\nfunction now() {\n return (typeof performance === \"undefined\" ? Date : performance).now();\n}\n\nasync function measurePerf<T>(\n name: string,\n f: () => T | Promise<T>,\n): Promise<T> {\n if (!DEBUG_MEASURE_PERF) {\n return f();\n }\n\n const start = now();\n const result = f();\n if ((result as any)?.then) {\n await result;\n }\n const end = now();\n console.warn(`${name}: ${Math.round(end - start)}ms`);\n return result;\n}\n\nexport const insideAPI = {\n initialize: async (eventID: string) => {\n switch (eventID) {\n case \"222\":\n return measurePerf(\"preInitialize222\", preInitialize222);\n case \"333\":\n case \"333oh\":\n case \"333ft\":\n return measurePerf(\"initialize333\", initialize333);\n case \"444\":\n return measurePerf(\"initialize444\", initialize444);\n default:\n throw new Error(`unsupported event: ${eventID}`);\n }\n },\n\n randomScrambleForEvent: async (eventID: string): Promise<Alg> => {\n switch (eventID) {\n case \"222\":\n return measurePerf(\"random222Scramble\", random222Scramble);\n case \"333\":\n case \"333oh\":\n case \"333ft\":\n return measurePerf(\"random333Scramble\", random333Scramble);\n case \"333fm\":\n return measurePerf(\n \"random333FewestMovesScramble\",\n random333FewestMovesScramble,\n );\n case \"333bf\":\n case \"333mb\":\n return measurePerf(\n \"random333OrientedScramble\",\n random333OrientedScramble,\n );\n case \"444\":\n return measurePerf(\"random444Scramble\", random444Scramble);\n case \"444bf\":\n return measurePerf(\n \"random444OrientedScramble\",\n random444OrientedScramble,\n );\n case \"555\":\n return measurePerf(\n \"bigCubeScramble(5)\",\n bigCubeRandomMoves.bind(bigCubeRandomMoves, 5),\n );\n case \"555bf\":\n return measurePerf(\"oriented555RandomMoves\", oriented555RandomMoves);\n case \"666\":\n return measurePerf(\n \"bigCubeScramble(6)\",\n bigCubeRandomMoves.bind(bigCubeRandomMoves, 6),\n );\n case \"777\":\n return measurePerf(\n \"bigCubeScramble(7)\",\n bigCubeRandomMoves.bind(bigCubeRandomMoves, 7),\n );\n case \"skewb\":\n return measurePerf(\n \"randomSkewbFixedCornerScramble\",\n randomSkewbFixedCornerScramble,\n );\n case \"pyram\":\n return measurePerf(\n \"randomPyraminxScrambleFixedOrientation\",\n randomPyraminxScrambleFixedOrientation,\n );\n case \"sq1\":\n return measurePerf(\n \"getRandomSquare1Scramble\",\n getRandomSquare1Scramble,\n );\n case \"fto\":\n return measurePerf(\"randomFTOScramble\", randomFTOScramble);\n case \"master_tetraminx\":\n return measurePerf(\n \"randomMasterTetraminxScramble\",\n randomMasterTetraminxScramble,\n );\n case \"kilominx\":\n return measurePerf(\"randomKilominxScramble\", randomKilominxScramble);\n default:\n throw new Error(`unsupported event: ${eventID}`);\n }\n },\n\n randomScrambleStringForEvent: async (eventID: string): Promise<string> => {\n return (await insideAPI.randomScrambleForEvent(eventID)).toString();\n },\n\n solve333ToString: async (stateData: KStateData): Promise<string> => {\n const state = new KState(await puzzles[\"3x3x3\"].kpuzzle(), stateData);\n return (await solve333(state)).toString();\n },\n\n solve222ToString: async (stateData: KStateData): Promise<string> => {\n const state = new KState(await puzzles[\"2x2x2\"].kpuzzle(), stateData);\n return (await solve222(state)).toString();\n },\n\n solveSkewbToString: async (stateData: KStateData): Promise<string> => {\n const state = new KState(await puzzles[\"skewb\"].kpuzzle(), stateData);\n return (await solveSkewb(state)).toString();\n },\n\n solvePyraminxToString: async (stateData: KStateData): Promise<string> => {\n const state = new KState(await puzzles[\"pyraminx\"].kpuzzle(), stateData);\n return (await solvePyraminx(state)).toString();\n },\n\n solveMegaminxToString: async (stateData: KStateData): Promise<string> => {\n const state = new KState(await puzzles[\"megaminx\"].kpuzzle(), stateData);\n return (await solveMegaminx(state)).toString();\n },\n\n setDebugMeasurePerf: async (measure: boolean): Promise<void> => {\n setDebugMeasurePerf(measure);\n },\n};\n\nexport type WorkerInsideAPI = typeof insideAPI;\n", "import { expose } from \"../../vendor/comlink-everywhere/inside\";\nimport { insideAPI } from \"./api\";\n\nexpose(insideAPI);\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import {
|
|
2
|
+
nodeEndpointPort
|
|
3
|
+
} from "./chunk-WDJDRVZZ.js";
|
|
4
|
+
import {
|
|
5
|
+
exposeAPI
|
|
6
|
+
} from "./chunk-BEXHMXCT.js";
|
|
7
|
+
import "./chunk-IVQ4ITE2.js";
|
|
8
|
+
import "./chunk-WO2AXYFE.js";
|
|
9
|
+
|
|
10
|
+
// src/cubing/search/inside/search-worker-ts-entry.ts
|
|
11
|
+
if (exposeAPI.expose) {
|
|
12
|
+
(async () => {
|
|
13
|
+
await import("./search-worker-js-entry-B76LGKC2.js");
|
|
14
|
+
const messagePort = globalThis.postMessage ? globalThis : await nodeEndpointPort();
|
|
15
|
+
messagePort.postMessage("comlink-exposed");
|
|
16
|
+
})();
|
|
17
|
+
}
|
|
18
|
+
var WORKER_ENTRY_FILE_URL = import.meta.url;
|
|
19
|
+
export {
|
|
20
|
+
WORKER_ENTRY_FILE_URL
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=search-worker-ts-entry-JZTMF3AC.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/cubing/search/inside/search-worker-ts-entry.ts"],
|
|
4
|
+
"sourcesContent": ["import { nodeEndpointPort } from \"../../vendor/comlink-everywhere/inside/index\";\nimport { exposeAPI } from \"./worker-guard\";\n\nif (exposeAPI.expose) {\n (async () => {\n await import(\"./search-worker-js-entry.js\");\n\n // // Workaround for `node`\n const messagePort = (globalThis as any).postMessage\n ? globalThis\n : await nodeEndpointPort();\n messagePort.postMessage(\"comlink-exposed\");\n })();\n}\n\nexport const WORKER_ENTRY_FILE_URL = import.meta.url;\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;AAGA,IAAI,UAAU,QAAQ;AACpB,EAAC,aAAY;AACX,UAAM,OAAO;AAGb,UAAM,cAAe,WAAmB,cACpC,aACA,MAAM;AACV,gBAAY,YAAY;AAAA;AAAA;AAIrB,IAAM,wBAAwB,YAAY;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -2,9 +2,9 @@ import {
|
|
|
2
2
|
sgsDataSkewb,
|
|
3
3
|
sgsDataSkewbFixedCorner,
|
|
4
4
|
skewbKPuzzleWithoutMOCached
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-QEDC2QTN.js";
|
|
6
6
|
import "./chunk-27KJGD3S.js";
|
|
7
|
-
import "./chunk-
|
|
7
|
+
import "./chunk-F5WNHV7V.js";
|
|
8
8
|
import "./chunk-Y32HHZUY.js";
|
|
9
9
|
import "./chunk-EWRBHQFX.js";
|
|
10
10
|
import "./chunk-WO2AXYFE.js";
|
|
@@ -13,4 +13,4 @@ export {
|
|
|
13
13
|
sgsDataSkewbFixedCorner,
|
|
14
14
|
skewbKPuzzleWithoutMOCached
|
|
15
15
|
};
|
|
16
|
-
//# sourceMappingURL=skewb.sgs.json-
|
|
16
|
+
//# sourceMappingURL=skewb.sgs.json-6NDFH63U.js.map
|
|
File without changes
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
} from "./chunk-RENZB7QN.js";
|
|
4
4
|
import "./chunk-WO2AXYFE.js";
|
|
5
5
|
|
|
6
|
-
// src/cubing/vendor/sq12phase/
|
|
6
|
+
// src/cubing/vendor/sq12phase/sq1-solver.js
|
|
7
7
|
function FullCube_copy(obj, c) {
|
|
8
8
|
obj.ul = c.ul;
|
|
9
9
|
obj.ur = c.ur;
|
|
@@ -703,4 +703,4 @@ async function getRandomSquare1ScrambleString() {
|
|
|
703
703
|
export {
|
|
704
704
|
getRandomSquare1ScrambleString
|
|
705
705
|
};
|
|
706
|
-
//# sourceMappingURL=
|
|
706
|
+
//# sourceMappingURL=sq1-solver-P3IWWET7.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../src/cubing/vendor/sq12phase/
|
|
3
|
+
"sources": ["../../src/cubing/vendor/sq12phase/sq1-solver.js"],
|
|
4
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, b, cnt, i, 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, drx, ulx, 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, 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 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 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, i, shape, edge, corner, n_edge, n_corner, rnd, 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, edge, i, j, ml, 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 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, prunx, 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, cornerx, edgex, m, prun1, prun2, 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, 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, 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 depth,\n dl,\n done,\n done0,\n dr,\n i,\n idx,\n m,\n s,\n ul,\n ur,\n value,\n p1,\n p3,\n 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,\n Shape_ShapeIdx,\n ShapePrun,\n Shape_TopMove,\n Shape_TwistMove,\n 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) Cnk[i] = [];\n Square_init();\n}\n\nfunction Square_Square() {}\n\nfunction get8Perm(arr) {\n var i, idx, v, 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, depth, done, find, i, idx, idxx, inv, j, m, ml, pos, 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) continue OUT;\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) continue OUT;\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) continue OUT;\n }\n }\n }\n }\n }\n}\n\nfunction set8Perm(arr, idx) {\n var i, m, p, v, 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, Cnk, SquarePrun, Square_TopMove, Square_TwistMove, 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, low, mid, 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
5
|
"mappings": "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",
|
|
6
6
|
"names": []
|
package/dist/esm/twisty/index.js
CHANGED
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
TwistyPropDerived,
|
|
11
11
|
TwistyPropSource,
|
|
12
12
|
proxy3D
|
|
13
|
-
} from "../chunk-
|
|
13
|
+
} from "../chunk-4VNM5SER.js";
|
|
14
14
|
import {
|
|
15
15
|
countAnimatedLeaves,
|
|
16
16
|
countMoves
|
|
@@ -20,7 +20,7 @@ import {
|
|
|
20
20
|
cubeAppearance,
|
|
21
21
|
customPGPuzzleLoader,
|
|
22
22
|
puzzles
|
|
23
|
-
} from "../chunk-
|
|
23
|
+
} from "../chunk-V5K5JN2N.js";
|
|
24
24
|
import "../chunk-Y32HHZUY.js";
|
|
25
25
|
import {
|
|
26
26
|
Alg,
|
|
@@ -518,12 +518,12 @@ var colorMaps = {
|
|
|
518
518
|
"yellow": "#888800"
|
|
519
519
|
},
|
|
520
520
|
oriented: {
|
|
521
|
-
"white": "#
|
|
522
|
-
"orange": "#
|
|
523
|
-
"limegreen": "#
|
|
524
|
-
"red": "#
|
|
525
|
-
"rgb(34, 102, 255)": "#
|
|
526
|
-
"yellow": "#
|
|
521
|
+
"white": "#44ddcc",
|
|
522
|
+
"orange": "#44ddcc",
|
|
523
|
+
"limegreen": "#44ddcc",
|
|
524
|
+
"red": "#44ddcc",
|
|
525
|
+
"rgb(34, 102, 255)": "#44ddcc",
|
|
526
|
+
"yellow": "#44ddcc"
|
|
527
527
|
},
|
|
528
528
|
ignored: {
|
|
529
529
|
"white": "#444444",
|
|
@@ -1175,9 +1175,7 @@ var DragTracker = class extends EventTarget {
|
|
|
1175
1175
|
__privateAdd(this, _lazyListenersRegistered, false);
|
|
1176
1176
|
target.addEventListener("pointerdown", this.onPointerDown.bind(this));
|
|
1177
1177
|
this.target.addEventListener("contextmenu", (e) => {
|
|
1178
|
-
|
|
1179
|
-
e.preventDefault();
|
|
1180
|
-
}
|
|
1178
|
+
e.preventDefault();
|
|
1181
1179
|
});
|
|
1182
1180
|
this.target.addEventListener("touchmove", (e) => e.preventDefault());
|
|
1183
1181
|
this.target.addEventListener("dblclick", (e) => e.preventDefault());
|
|
@@ -1715,6 +1713,9 @@ var Twisty3DSceneWrapper = class extends ManagedCustomElement {
|
|
|
1715
1713
|
}
|
|
1716
1714
|
}
|
|
1717
1715
|
async onPuzzle(inputs) {
|
|
1716
|
+
if (inputs[1] === "2D") {
|
|
1717
|
+
return;
|
|
1718
|
+
}
|
|
1718
1719
|
__privateGet(this, _currentTwisty3DPuzzleWrapper)?.disconnect();
|
|
1719
1720
|
const [scene, twisty3DPuzzleWrapper] = await __privateGet(this, _twisty3DStaleDropper).queue(Promise.all([
|
|
1720
1721
|
this.scene(),
|
|
@@ -2656,6 +2657,7 @@ var VisualizationStrategyProp = class extends TwistyPropDerived {
|
|
|
2656
2657
|
switch (inputs.puzzleID) {
|
|
2657
2658
|
case "clock":
|
|
2658
2659
|
case "square1":
|
|
2660
|
+
case "kilominx":
|
|
2659
2661
|
return "2D";
|
|
2660
2662
|
case "3x3x3":
|
|
2661
2663
|
switch (inputs.visualizationRequest) {
|
|
@@ -3745,6 +3747,13 @@ var SetupTransformationProp = class extends SimpleTwistyPropSource {
|
|
|
3745
3747
|
}
|
|
3746
3748
|
};
|
|
3747
3749
|
|
|
3750
|
+
// src/cubing/twisty/model/props/general/ArbitraryStringProp.ts
|
|
3751
|
+
var ArbitraryStringProp = class extends SimpleTwistyPropSource {
|
|
3752
|
+
getDefaultValue() {
|
|
3753
|
+
return null;
|
|
3754
|
+
}
|
|
3755
|
+
};
|
|
3756
|
+
|
|
3748
3757
|
// src/cubing/twisty/model/TwistyPlayerModel.ts
|
|
3749
3758
|
var TwistyPlayerModel = class {
|
|
3750
3759
|
constructor() {
|
|
@@ -3773,6 +3782,9 @@ var TwistyPlayerModel = class {
|
|
|
3773
3782
|
this.timestampRequest = new TimestampRequestProp();
|
|
3774
3783
|
this.viewerLink = new ViewerLinkProp();
|
|
3775
3784
|
this.visualizationFormat = new VisualizationFormatProp();
|
|
3785
|
+
this.title = new ArbitraryStringProp();
|
|
3786
|
+
this.videoURL = new URLProp();
|
|
3787
|
+
this.competitionID = new ArbitraryStringProp();
|
|
3776
3788
|
this.foundationStickerSprite = new SpriteProp({
|
|
3777
3789
|
spriteURL: this.foundationStickerSpriteURL
|
|
3778
3790
|
});
|
|
@@ -4003,6 +4015,24 @@ var TwistyPlayerSettable = class extends ManagedCustomElement {
|
|
|
4003
4015
|
get visualization() {
|
|
4004
4016
|
throw err("visualization");
|
|
4005
4017
|
}
|
|
4018
|
+
set experimentalTitle(title) {
|
|
4019
|
+
this.experimentalModel.title.set(title);
|
|
4020
|
+
}
|
|
4021
|
+
get experimentalTitle() {
|
|
4022
|
+
throw err("experimentalTitle");
|
|
4023
|
+
}
|
|
4024
|
+
set experimentalVideoURL(videoURL) {
|
|
4025
|
+
this.experimentalModel.videoURL.set(videoURL);
|
|
4026
|
+
}
|
|
4027
|
+
get experimentalVideoURL() {
|
|
4028
|
+
throw err("experimentalVideoURL");
|
|
4029
|
+
}
|
|
4030
|
+
set experimentalCompetitionID(competitionID) {
|
|
4031
|
+
this.experimentalModel.competitionID.set(competitionID);
|
|
4032
|
+
}
|
|
4033
|
+
get experimentalCompetitionID() {
|
|
4034
|
+
throw err("experimentalCompetitionID");
|
|
4035
|
+
}
|
|
4006
4036
|
set viewerLink(viewerLinkPage) {
|
|
4007
4037
|
this.experimentalModel.viewerLink.set(viewerLinkPage);
|
|
4008
4038
|
}
|
|
@@ -4097,6 +4127,9 @@ var twistyPlayerAttributeMap = {
|
|
|
4097
4127
|
"back-view": "backView",
|
|
4098
4128
|
"viewer-link": "viewerLink",
|
|
4099
4129
|
"experimental-move-press-input": "experimentalMovePressInput",
|
|
4130
|
+
"experimental-title": "experimentalTitle",
|
|
4131
|
+
"experimental-video-url": "experimentalVideoURL",
|
|
4132
|
+
"experimental-competition-id": "experimentalCompetitionID",
|
|
4100
4133
|
"camera-latitude": "cameraLatitude",
|
|
4101
4134
|
"camera-longitude": "cameraLongitude",
|
|
4102
4135
|
"camera-distance": "cameraDistance",
|
|
@@ -5091,6 +5124,12 @@ var twizzleLinkCSS = new CSSSource(`
|
|
|
5091
5124
|
padding: 0.25em 0.5em;
|
|
5092
5125
|
}
|
|
5093
5126
|
|
|
5127
|
+
.heading.title {
|
|
5128
|
+
background: rgb(255, 245, 235);
|
|
5129
|
+
font-size: 150%;
|
|
5130
|
+
white-space: pre;
|
|
5131
|
+
}
|
|
5132
|
+
|
|
5094
5133
|
twisty-player {
|
|
5095
5134
|
width: 100%;
|
|
5096
5135
|
resize: vertical;
|
|
@@ -5160,7 +5199,10 @@ function getConfigFromURL(prefix = "", url = location.href) {
|
|
|
5160
5199
|
"setup-anchor": "experimental-setup-anchor",
|
|
5161
5200
|
"puzzle": "puzzle",
|
|
5162
5201
|
"stickering": "experimental-stickering",
|
|
5163
|
-
"puzzle-description": "experimental-puzzle-description"
|
|
5202
|
+
"puzzle-description": "experimental-puzzle-description",
|
|
5203
|
+
"title": "experimental-title",
|
|
5204
|
+
"video-url": "experimental-video-url",
|
|
5205
|
+
"competition": "experimental-competition-id"
|
|
5164
5206
|
};
|
|
5165
5207
|
const params = new URL(url).searchParams;
|
|
5166
5208
|
const config = {};
|
|
@@ -5219,6 +5261,9 @@ var TwizzleLink = class extends ManagedCustomElement {
|
|
|
5219
5261
|
...config,
|
|
5220
5262
|
viewerLink: isExplorer ? "experimental-twizzle-explorer" : "auto"
|
|
5221
5263
|
}));
|
|
5264
|
+
if (config.experimentalTitle) {
|
|
5265
|
+
this.addHeading(config.experimentalTitle).classList.add("title");
|
|
5266
|
+
}
|
|
5222
5267
|
if (config.experimentalSetupAlg) {
|
|
5223
5268
|
this.addHeading("Setup");
|
|
5224
5269
|
const setupAlgDiv = this.addElement(document.createElement("div"));
|
|
@@ -5236,6 +5281,7 @@ var TwizzleLink = class extends ManagedCustomElement {
|
|
|
5236
5281
|
const headingDiv = this.addElement(document.createElement("div"));
|
|
5237
5282
|
headingDiv.classList.add("heading");
|
|
5238
5283
|
headingDiv.textContent = text;
|
|
5284
|
+
return headingDiv;
|
|
5239
5285
|
}
|
|
5240
5286
|
};
|
|
5241
5287
|
_cssElem = new WeakMap();
|