cubing 0.66.0 → 0.66.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bin/chunks/{chunk-VTD7RU7S.js → chunk-HS7R54XN.js} +2 -2
- package/dist/bin/order.js +1 -1
- package/dist/bin/puzzle-geometry-bin.js +1 -1
- package/dist/bin/scramble.js +1 -1
- package/dist/bin/svg.js +1 -1
- package/dist/lib/cubing/alg/index.d.ts +1 -1
- package/dist/lib/cubing/alg/index.js +1 -2
- package/dist/lib/cubing/bluetooth/index.d.ts +2 -2
- package/dist/lib/cubing/bluetooth/index.js +5 -6
- package/dist/lib/cubing/chunks/{big-puzzle-orientation-KCHMEEM7.js → big-puzzle-orientation-KJL4OFV2.js} +1 -2
- package/dist/lib/cubing/chunks/{chunk-XAOXLHYH.js → chunk-6R47S6MP.js} +24 -25
- package/dist/lib/cubing/chunks/{chunk-ZCZVKGKB.js → chunk-7LEVC3YR.js} +1 -2
- package/dist/lib/cubing/chunks/{chunk-7GUL3OBQ.js → chunk-BHVTDDUY.js} +0 -1
- package/dist/lib/cubing/chunks/{chunk-JL5REGXZ.js → chunk-IIJFVP3K.js} +6 -7
- package/dist/lib/cubing/chunks/{chunk-6RZGNWLS.js → chunk-KH2MQ7KY.js} +2 -3
- package/dist/lib/cubing/chunks/{chunk-L6OQRJJX.js → chunk-LBER75W4.js} +1 -2
- package/dist/lib/cubing/chunks/{chunk-ZV7PYR2S.js → chunk-NJ66FRKF.js} +3 -4
- package/dist/lib/cubing/chunks/{chunk-CAQY24I5.js → chunk-QOLD6GH2.js} +5 -6
- package/dist/lib/cubing/chunks/{chunk-CFZLXDM6.js → chunk-QZK3M7IM.js} +0 -1
- package/dist/lib/cubing/chunks/chunk-RDKH6CDA.js +0 -0
- package/dist/lib/cubing/chunks/{chunk-4KLW7Y6J.js → chunk-T5M3DY5P.js} +2 -3
- package/dist/lib/cubing/chunks/{chunk-K237RIQJ.js → chunk-UKAXYOG2.js} +2 -3
- package/dist/lib/cubing/chunks/{chunk-GHFBZYSV.js → chunk-YJH5LHFN.js} +0 -1
- package/dist/lib/cubing/chunks/{inside-BAQGCKLY.js → inside-UWSZBO4Y.js} +14 -15
- package/dist/lib/cubing/chunks/{puzzles-dynamic-3x3x3-FYXD7SIU.js → puzzles-dynamic-3x3x3-CMH2HHH5.js} +0 -1
- package/dist/lib/cubing/chunks/{puzzles-dynamic-4x4x4-AIGABOAR.js → puzzles-dynamic-4x4x4-UFAQS3QG.js} +0 -1
- package/dist/lib/cubing/chunks/{puzzles-dynamic-megaminx-2LVHIDL4.js → puzzles-dynamic-megaminx-EFR4GQFA.js} +0 -1
- package/dist/lib/cubing/chunks/{puzzles-dynamic-side-events-653A7JCM.js → puzzles-dynamic-side-events-KF3PEOJN.js} +0 -1
- package/dist/lib/cubing/chunks/{puzzles-dynamic-unofficial-2CY6GVZ4.js → puzzles-dynamic-unofficial-6BF3EWTI.js} +0 -1
- package/dist/lib/cubing/chunks/{search-dynamic-sgs-side-events-KPAPKICT.js → search-dynamic-sgs-side-events-5GQDHSJR.js} +5 -6
- package/dist/lib/cubing/chunks/{search-dynamic-sgs-unofficial-WJZ2CWX5.js → search-dynamic-sgs-unofficial-YM23KVCN.js} +90 -78
- package/dist/lib/cubing/chunks/{search-dynamic-solve-3x3x3-B2L4IN34.js → search-dynamic-solve-3x3x3-6UMZH4WB.js} +3 -6
- package/dist/lib/cubing/chunks/{search-dynamic-solve-4x4x4-OLWUV6G6.js → search-dynamic-solve-4x4x4-KNSBAM7Q.js} +14 -17
- package/dist/lib/cubing/chunks/{search-dynamic-solve-fto-WLOW7LAM.js → search-dynamic-solve-fto-CSXJYISF.js} +200 -90
- package/dist/lib/cubing/chunks/{search-dynamic-solve-kilominx-KKUOVW5Y.js → search-dynamic-solve-kilominx-EHAUQJXS.js} +105 -113
- package/dist/lib/cubing/chunks/{search-dynamic-solve-master_tetraminx-GIS7T5B7.js → search-dynamic-solve-master_tetraminx-ZQ25QK7E.js} +99 -100
- package/dist/lib/cubing/chunks/search-worker-entry.js +2 -3
- package/dist/lib/cubing/chunks/{twips-J732JDZJ.js → twips-IMF5RNH5.js} +3 -4
- package/dist/lib/cubing/chunks/{twips_wasm_bg-TJNYGA2C-AP2O4LGG.js → twips_wasm_bg-TJNYGA2C-4JIZWC6Q.js} +1 -2
- package/dist/lib/cubing/chunks/{twisty-dynamic-3d-SFR3X64P.js → twisty-dynamic-3d-HSYJR5CM.js} +5 -6
- package/dist/lib/cubing/{index-Bfranlt_.d.ts → index-lAUL_nRN.d.ts} +1 -1
- package/dist/lib/cubing/{index-B2nOJwLe.d.ts → index-nWspzjVK.d.ts} +43 -39
- package/dist/lib/cubing/kpuzzle/index.d.ts +1 -1
- package/dist/lib/cubing/kpuzzle/index.js +2 -3
- package/dist/lib/cubing/notation/index.d.ts +1 -1
- package/dist/lib/cubing/notation/index.js +4 -5
- package/dist/lib/cubing/{outside-BdYfq43N.d.ts → outside-CD19aDjE.d.ts} +1 -1
- package/dist/lib/cubing/protocol/index.d.ts +1 -1
- package/dist/lib/cubing/protocol/index.js +4 -5
- package/dist/lib/cubing/puzzle-geometry/index.d.ts +1 -1
- package/dist/lib/cubing/puzzle-geometry/index.js +375 -375
- package/dist/lib/cubing/puzzles/index.d.ts +1 -1
- package/dist/lib/cubing/puzzles/index.js +4 -5
- package/dist/lib/cubing/scramble/index.d.ts +1 -1
- package/dist/lib/cubing/scramble/index.js +8 -9
- package/dist/lib/cubing/search/index.d.ts +1 -1
- package/dist/lib/cubing/search/index.js +7 -8
- package/dist/lib/cubing/stream/index.d.ts +1 -1
- package/dist/lib/cubing/stream/index.js +1 -2
- package/dist/lib/cubing/twisty/index.d.ts +1 -1
- package/dist/lib/cubing/twisty/index.js +6 -7
- package/package.json +1 -1
- package/dist/lib/cubing/alg/index.js.map +0 -7
- package/dist/lib/cubing/bluetooth/index.js.map +0 -7
- package/dist/lib/cubing/chunks/big-puzzle-orientation-KCHMEEM7.js.map +0 -7
- package/dist/lib/cubing/chunks/chunk-4KLW7Y6J.js.map +0 -7
- package/dist/lib/cubing/chunks/chunk-6RZGNWLS.js.map +0 -7
- package/dist/lib/cubing/chunks/chunk-7GUL3OBQ.js.map +0 -7
- package/dist/lib/cubing/chunks/chunk-CAQY24I5.js.map +0 -7
- package/dist/lib/cubing/chunks/chunk-CFZLXDM6.js.map +0 -7
- package/dist/lib/cubing/chunks/chunk-GHFBZYSV.js.map +0 -7
- package/dist/lib/cubing/chunks/chunk-JL5REGXZ.js.map +0 -7
- package/dist/lib/cubing/chunks/chunk-K237RIQJ.js.map +0 -7
- package/dist/lib/cubing/chunks/chunk-L6OQRJJX.js.map +0 -7
- package/dist/lib/cubing/chunks/chunk-NAPITA3L.js +0 -1
- package/dist/lib/cubing/chunks/chunk-NAPITA3L.js.map +0 -7
- package/dist/lib/cubing/chunks/chunk-XAOXLHYH.js.map +0 -7
- package/dist/lib/cubing/chunks/chunk-ZCZVKGKB.js.map +0 -7
- package/dist/lib/cubing/chunks/chunk-ZV7PYR2S.js.map +0 -7
- package/dist/lib/cubing/chunks/inside-BAQGCKLY.js.map +0 -7
- package/dist/lib/cubing/chunks/puzzles-dynamic-3x3x3-FYXD7SIU.js.map +0 -7
- package/dist/lib/cubing/chunks/puzzles-dynamic-4x4x4-AIGABOAR.js.map +0 -7
- package/dist/lib/cubing/chunks/puzzles-dynamic-megaminx-2LVHIDL4.js.map +0 -7
- package/dist/lib/cubing/chunks/puzzles-dynamic-side-events-653A7JCM.js.map +0 -7
- package/dist/lib/cubing/chunks/puzzles-dynamic-unofficial-2CY6GVZ4.js.map +0 -7
- package/dist/lib/cubing/chunks/search-dynamic-sgs-side-events-KPAPKICT.js.map +0 -7
- package/dist/lib/cubing/chunks/search-dynamic-sgs-unofficial-WJZ2CWX5.js.map +0 -7
- package/dist/lib/cubing/chunks/search-dynamic-solve-3x3x3-B2L4IN34.js.map +0 -7
- package/dist/lib/cubing/chunks/search-dynamic-solve-4x4x4-OLWUV6G6.js.map +0 -7
- package/dist/lib/cubing/chunks/search-dynamic-solve-fto-WLOW7LAM.js.map +0 -7
- package/dist/lib/cubing/chunks/search-dynamic-solve-kilominx-KKUOVW5Y.js.map +0 -7
- package/dist/lib/cubing/chunks/search-dynamic-solve-master_tetraminx-GIS7T5B7.js.map +0 -7
- package/dist/lib/cubing/chunks/search-worker-entry.js.map +0 -7
- package/dist/lib/cubing/chunks/twips-J732JDZJ.js.map +0 -7
- package/dist/lib/cubing/chunks/twips_wasm_bg-TJNYGA2C-AP2O4LGG.js.map +0 -7
- package/dist/lib/cubing/chunks/twisty-dynamic-3d-SFR3X64P.js.map +0 -7
- package/dist/lib/cubing/kpuzzle/index.js.map +0 -7
- package/dist/lib/cubing/notation/index.js.map +0 -7
- package/dist/lib/cubing/protocol/index.js.map +0 -7
- package/dist/lib/cubing/puzzle-geometry/index.js.map +0 -7
- package/dist/lib/cubing/puzzles/index.js.map +0 -7
- package/dist/lib/cubing/scramble/index.js.map +0 -7
- package/dist/lib/cubing/search/index.js.map +0 -7
- package/dist/lib/cubing/stream/index.js.map +0 -7
- package/dist/lib/cubing/twisty/index.js.map +0 -7
- /package/dist/bin/chunks/{chunk-VTD7RU7S.js.map → chunk-HS7R54XN.js.map} +0 -0
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Alg
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-QZK3M7IM.js";
|
|
4
4
|
|
|
5
|
-
// src/cubing/vendor/mit/cs0x7f/fto/scramble_fto_standalone.
|
|
5
|
+
// src/cubing/vendor/mit/cs0x7f/fto/scramble_fto_standalone.ts
|
|
6
6
|
import { randomUIntBelow } from "random-uint-below";
|
|
7
7
|
var DEBUG = false;
|
|
8
|
-
var mathlib = (
|
|
8
|
+
var mathlib = (() => {
|
|
9
9
|
var fact = [1];
|
|
10
10
|
for (var i = 0; i < 32; ++i) {
|
|
11
11
|
fact[i + 1] = fact[i] * (i + 1);
|
|
@@ -203,7 +203,6 @@ var mathlib = (function() {
|
|
|
203
203
|
return setMPerm(arr, idx, this.n, this.cnts.slice(), this.x);
|
|
204
204
|
};
|
|
205
205
|
} else {
|
|
206
|
-
debugger;
|
|
207
206
|
}
|
|
208
207
|
}
|
|
209
208
|
function fillFacelet(facelets, f, perm, ori, divcol) {
|
|
@@ -280,7 +279,11 @@ var mathlib = (function() {
|
|
|
280
279
|
moveTable[m][i2] = hash2idx[newHash];
|
|
281
280
|
}
|
|
282
281
|
}
|
|
283
|
-
DEBUG && console.log(
|
|
282
|
+
DEBUG && console.log(
|
|
283
|
+
"[move hash] " + states.length + " states generated, tt=",
|
|
284
|
+
+/* @__PURE__ */ new Date() - tt,
|
|
285
|
+
JSON.stringify(depthEnds)
|
|
286
|
+
);
|
|
284
287
|
return [moveTable, hash2idx];
|
|
285
288
|
}
|
|
286
289
|
function createPrun(prun, init, size, maxd, doMove, N_MOVES, N_POWER, N_INV) {
|
|
@@ -342,16 +345,12 @@ var mathlib = (function() {
|
|
|
342
345
|
}
|
|
343
346
|
}
|
|
344
347
|
function Searcher(isSolved, getPrun, doMove, N_AXIS, N_POWER, ckmv) {
|
|
345
|
-
this.isSolved = isSolved ||
|
|
346
|
-
return true;
|
|
347
|
-
};
|
|
348
|
+
this.isSolved = isSolved || (() => true);
|
|
348
349
|
this.getPrun = getPrun;
|
|
349
350
|
this.doMove = doMove;
|
|
350
351
|
this.N_AXIS = N_AXIS;
|
|
351
352
|
this.N_POWER = N_POWER;
|
|
352
|
-
this.ckmv = ckmv || valuedArray(N_AXIS,
|
|
353
|
-
return 1 << i2;
|
|
354
|
-
});
|
|
353
|
+
this.ckmv = ckmv || valuedArray(N_AXIS, (i2) => 1 << i2);
|
|
355
354
|
}
|
|
356
355
|
var _ = Searcher.prototype;
|
|
357
356
|
_.solve = function(idx, minl, MAXL, callback) {
|
|
@@ -359,9 +358,7 @@ var mathlib = (function() {
|
|
|
359
358
|
return sols == null ? null : sols[0];
|
|
360
359
|
};
|
|
361
360
|
_.solveMulti = function(idxs, minl, MAXL, callback) {
|
|
362
|
-
this.callback = callback ||
|
|
363
|
-
return true;
|
|
364
|
-
};
|
|
361
|
+
this.callback = callback || (() => true);
|
|
365
362
|
var sol = [];
|
|
366
363
|
outer_loop: for (var l = minl; l <= MAXL; l++) {
|
|
367
364
|
for (var s = 0; s < idxs.length; s++) {
|
|
@@ -462,7 +459,7 @@ var mathlib = (function() {
|
|
|
462
459
|
permOriMult
|
|
463
460
|
};
|
|
464
461
|
})();
|
|
465
|
-
var ftosolver = (
|
|
462
|
+
var ftosolver = (() => {
|
|
466
463
|
function FtoCubie(cp, co, ep, uf, rl) {
|
|
467
464
|
this.cp = cp && cp.slice() || [0, 1, 2, 3, 4, 5];
|
|
468
465
|
this.co = co && co.slice() || [0, 0, 0, 0, 0, 0];
|
|
@@ -547,7 +544,7 @@ var ftosolver = (function() {
|
|
|
547
544
|
var f = [];
|
|
548
545
|
for (var i2 = 0; i2 < 72; ++i2) {
|
|
549
546
|
f[i2] = facelet[i2];
|
|
550
|
-
count +=
|
|
547
|
+
count += 16 ** f[i2];
|
|
551
548
|
}
|
|
552
549
|
if (count != 2576980377) {
|
|
553
550
|
return -1;
|
|
@@ -597,7 +594,7 @@ var ftosolver = (function() {
|
|
|
597
594
|
FtoCubie.prototype.toString = function(todiv) {
|
|
598
595
|
var f = this.toFaceCube(todiv);
|
|
599
596
|
var ret = " U8 U7 U6 U5 U4 B8 B7 B6 B5 B4\nL4 U3 U2 U1 R8 r4 B3 B2 B1 l8\nL5 L1 U0 R3 R7 r5 r1 B0 l3 l7\nL6 L2 L0 R0 R2 R6 r6 r2 r0 l0 l2 l6\nL7 L3 F0 R1 R5 r7 r3 D0 l1 l5\nL8 F1 F2 F3 R4 r8 D1 D2 D3 l4\n F4 F5 F6 F7 F8 D4 D5 D6 D7 D8";
|
|
600
|
-
ret = ret.replace(/([UFrlDBRL])([0-8])/g,
|
|
597
|
+
ret = ret.replace(/([UFrlDBRL])([0-8])/g, (m, p1, p2) => {
|
|
601
598
|
var i2 = "UFrlDBRL".indexOf(p1) * 9 + ~~p2;
|
|
602
599
|
return "UFrlDBRL"[~~(f[i2] / 9)] + f[i2] % 9;
|
|
603
600
|
});
|
|
@@ -749,7 +746,12 @@ var ftosolver = (function() {
|
|
|
749
746
|
for (var s = 0; s < 12; s++) {
|
|
750
747
|
symMulM[s] = [];
|
|
751
748
|
for (var j = 0; j < 8; j++) {
|
|
752
|
-
FtoCubie.FtoMult(
|
|
749
|
+
FtoCubie.FtoMult(
|
|
750
|
+
symCube[symMulI[0][s]],
|
|
751
|
+
moveCube[j * 2],
|
|
752
|
+
symCube[s],
|
|
753
|
+
fc
|
|
754
|
+
);
|
|
753
755
|
var k = moveHash.indexOf(fc.ep.join(","));
|
|
754
756
|
symMulM[s][j] = k >> 1;
|
|
755
757
|
}
|
|
@@ -760,7 +762,6 @@ var ftosolver = (function() {
|
|
|
760
762
|
FtoCubie.symMulI = symMulI;
|
|
761
763
|
FtoCubie.symMulM = symMulM;
|
|
762
764
|
}
|
|
763
|
-
;
|
|
764
765
|
initMoveCube();
|
|
765
766
|
function ftoPermMove(key, perm, move) {
|
|
766
767
|
var ret = [];
|
|
@@ -798,7 +799,12 @@ var ftosolver = (function() {
|
|
|
798
799
|
}
|
|
799
800
|
function phase2EdgeHash(ep) {
|
|
800
801
|
var edge2group = [0, 1, 2, 3, 3, 3, 0, 1, 1, 2, 2, 0];
|
|
801
|
-
var groups = [
|
|
802
|
+
var groups = [
|
|
803
|
+
[0, 6, 11],
|
|
804
|
+
[1, 7, 8],
|
|
805
|
+
[2, 9, 10],
|
|
806
|
+
[3, 4, 5]
|
|
807
|
+
];
|
|
802
808
|
var ret = 0;
|
|
803
809
|
var egoff = [-1, -1, -1, -1];
|
|
804
810
|
for (var i2 = 0; i2 < 12; i2++) {
|
|
@@ -807,7 +813,7 @@ var ftosolver = (function() {
|
|
|
807
813
|
if (egoff[g] == -1) {
|
|
808
814
|
egoff[g] = gidx;
|
|
809
815
|
}
|
|
810
|
-
ret += (g * 4 + (gidx - egoff[g] + 3) % 3) *
|
|
816
|
+
ret += (g * 4 + (gidx - egoff[g] + 3) % 3) * 16 ** i2;
|
|
811
817
|
}
|
|
812
818
|
return ret;
|
|
813
819
|
}
|
|
@@ -842,8 +848,16 @@ var ftosolver = (function() {
|
|
|
842
848
|
for (var m1 = 0; m1 < moves.length; m1++) {
|
|
843
849
|
ckmv[m1] = 1 << m1;
|
|
844
850
|
for (var m2 = 0; m2 < m1; m2++) {
|
|
845
|
-
FtoCubie.FtoMult(
|
|
846
|
-
|
|
851
|
+
FtoCubie.FtoMult(
|
|
852
|
+
FtoCubie.moveCube[moves[m1]],
|
|
853
|
+
FtoCubie.moveCube[moves[m2]],
|
|
854
|
+
tmp1
|
|
855
|
+
);
|
|
856
|
+
FtoCubie.FtoMult(
|
|
857
|
+
FtoCubie.moveCube[moves[m2]],
|
|
858
|
+
FtoCubie.moveCube[moves[m1]],
|
|
859
|
+
tmp2
|
|
860
|
+
);
|
|
847
861
|
if (tmp1.isEqual(tmp2)) {
|
|
848
862
|
ckmv[m1] |= 1 << m2;
|
|
849
863
|
}
|
|
@@ -858,36 +872,56 @@ var ftosolver = (function() {
|
|
|
858
872
|
var solv1 = null;
|
|
859
873
|
var pyraSymCube = [];
|
|
860
874
|
for (var i = 0; i < 12; i++) {
|
|
861
|
-
pyraSymCube.push(
|
|
862
|
-
FtoCubie
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
875
|
+
pyraSymCube.push(
|
|
876
|
+
new FtoCubie(
|
|
877
|
+
FtoCubie.symCube[i].cp,
|
|
878
|
+
FtoCubie.symCube[i].co,
|
|
879
|
+
null,
|
|
880
|
+
FtoCubie.symCube[i].uf,
|
|
881
|
+
null
|
|
882
|
+
)
|
|
883
|
+
);
|
|
868
884
|
}
|
|
869
885
|
function phase1Init() {
|
|
870
886
|
var fc = new FtoCubie();
|
|
871
|
-
p1epMoves = mathlib.createMoveHash(
|
|
872
|
-
|
|
887
|
+
p1epMoves = mathlib.createMoveHash(
|
|
888
|
+
fc.ep.slice(),
|
|
889
|
+
phase1Moves,
|
|
890
|
+
phase1EdgeHash,
|
|
891
|
+
ftoPermMove.bind(null, "ep")
|
|
892
|
+
);
|
|
893
|
+
p1rlMoves = mathlib.createMoveHash(
|
|
894
|
+
fc.rl.slice(),
|
|
895
|
+
phase1Moves,
|
|
896
|
+
phase1CtrlHash,
|
|
897
|
+
ftoPermMove.bind(null, "rl")
|
|
898
|
+
);
|
|
873
899
|
var N_P1EP = p1epMoves[0][0].length;
|
|
874
900
|
var N_P1RL = p1rlMoves[0][0].length;
|
|
875
901
|
DEBUG && console.log("p1ep len=" + N_P1EP + " p1rl len=" + N_P1RL);
|
|
876
902
|
ckmv1 = genCkmv(phase1Moves);
|
|
877
903
|
var p1eprlPrun = [];
|
|
878
|
-
mathlib.createPrun(
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
904
|
+
mathlib.createPrun(
|
|
905
|
+
p1eprlPrun,
|
|
906
|
+
0,
|
|
907
|
+
N_P1EP * N_P1RL,
|
|
908
|
+
14,
|
|
909
|
+
(idx, move) => {
|
|
910
|
+
var rl = ~~(idx / N_P1EP);
|
|
911
|
+
var ep = idx % N_P1EP;
|
|
912
|
+
return p1rlMoves[0][move][rl] * N_P1EP + p1epMoves[0][move][ep];
|
|
913
|
+
},
|
|
914
|
+
phase1Moves.length,
|
|
915
|
+
2
|
|
916
|
+
);
|
|
917
|
+
solv1 = new mathlib.Searcher(
|
|
918
|
+
null,
|
|
919
|
+
(idx) => mathlib.getPruning(p1eprlPrun, idx[1] * N_P1EP + idx[0]),
|
|
920
|
+
(idx, move) => [p1epMoves[0][move][idx[0]], p1rlMoves[0][move][idx[1]]],
|
|
921
|
+
8,
|
|
922
|
+
2,
|
|
923
|
+
ckmv1
|
|
924
|
+
);
|
|
891
925
|
}
|
|
892
926
|
function phase1GenIdxs(fc) {
|
|
893
927
|
var idxs = [];
|
|
@@ -943,7 +977,7 @@ var ftosolver = (function() {
|
|
|
943
977
|
var syms = idxs[1];
|
|
944
978
|
idxs = idxs[0];
|
|
945
979
|
var p1sols = [];
|
|
946
|
-
var sol1s = solv1.solveMulti(idxs, 0, 12,
|
|
980
|
+
var sol1s = solv1.solveMulti(idxs, 0, 12, (sol, sidx) => {
|
|
947
981
|
var param = phase1ProcSol(sol.slice(), syms[sidx].slice(), fc);
|
|
948
982
|
p1sols.push(param);
|
|
949
983
|
return p1sols.length >= N_PHASE1_SOLS;
|
|
@@ -1012,9 +1046,24 @@ var ftosolver = (function() {
|
|
|
1012
1046
|
}
|
|
1013
1047
|
function phase2Init() {
|
|
1014
1048
|
var fc = new FtoCubie();
|
|
1015
|
-
p2epMoves = mathlib.createMoveHash(
|
|
1016
|
-
|
|
1017
|
-
|
|
1049
|
+
p2epMoves = mathlib.createMoveHash(
|
|
1050
|
+
fc.ep.slice(),
|
|
1051
|
+
phase2Moves,
|
|
1052
|
+
phase2EdgeHash,
|
|
1053
|
+
ftoPermMove.bind(null, "ep")
|
|
1054
|
+
);
|
|
1055
|
+
p2rlMoves = mathlib.createMoveHash(
|
|
1056
|
+
fc.rl.slice(),
|
|
1057
|
+
phase2Moves,
|
|
1058
|
+
phase2CtHash,
|
|
1059
|
+
ftoPermMove.bind(null, "rl")
|
|
1060
|
+
);
|
|
1061
|
+
p2ccMoves = mathlib.createMoveHash(
|
|
1062
|
+
fc,
|
|
1063
|
+
phase2Moves,
|
|
1064
|
+
phase2CpcoHash,
|
|
1065
|
+
ftoFullMove
|
|
1066
|
+
);
|
|
1018
1067
|
var arr = [];
|
|
1019
1068
|
var arr2 = [];
|
|
1020
1069
|
var p2ufMoveStd = [[], [], [], [], []];
|
|
@@ -1123,32 +1172,48 @@ var ftosolver = (function() {
|
|
|
1123
1172
|
var N_P2EP = p2epMoves[0][0].length;
|
|
1124
1173
|
var N_P2RL = p2rlMoves[0][0].length;
|
|
1125
1174
|
var p2eprlPrun = [];
|
|
1126
|
-
mathlib.createPrun(
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1175
|
+
mathlib.createPrun(
|
|
1176
|
+
p2eprlPrun,
|
|
1177
|
+
0,
|
|
1178
|
+
N_P2EP * N_P2RL,
|
|
1179
|
+
P2EPRL_MAXL - 2,
|
|
1180
|
+
(idx2, move) => {
|
|
1181
|
+
var rl = ~~(idx2 / N_P2EP);
|
|
1182
|
+
var ep = idx2 % N_P2EP;
|
|
1183
|
+
return p2rlMoves[0][move][rl] * N_P2EP + p2epMoves[0][move][ep];
|
|
1184
|
+
},
|
|
1185
|
+
phase2Moves.length,
|
|
1186
|
+
2
|
|
1187
|
+
);
|
|
1131
1188
|
ckmv2 = genCkmv(phase2Moves);
|
|
1132
|
-
solv2 = new mathlib.Searcher(
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1189
|
+
solv2 = new mathlib.Searcher(
|
|
1190
|
+
(idx2) => ufStd2Bit[idx2[3] >> 4] == cc2Bit[p2ccRecol[idx2[3] & 15][idx2[2]]],
|
|
1191
|
+
(idx2) => {
|
|
1192
|
+
var xors = ufStd2Bit[idx2[3] >> 4] ^ cc2Bit[p2ccRecol[idx2[3] & 15][idx2[2]]];
|
|
1193
|
+
xors = (xors | xors >> 1) & 5592405;
|
|
1194
|
+
var necIdx = mathlib.bitCount(xors & 12632319) * 7 + mathlib.bitCount(xors & 4144896);
|
|
1195
|
+
return Math.max(
|
|
1196
|
+
Math.min(
|
|
1197
|
+
P2EPRL_MAXL,
|
|
1198
|
+
mathlib.getPruning(p2eprlPrun, idx2[1] * N_P2EP + idx2[0])
|
|
1199
|
+
),
|
|
1200
|
+
p2necPrun[necIdx]
|
|
1201
|
+
);
|
|
1202
|
+
},
|
|
1203
|
+
(idx2, move) => {
|
|
1204
|
+
var ufidx1 = p2ufMoveStd[move][idx2[3] >> 4];
|
|
1205
|
+
var ufcol = FtoCubie.symMult[ufidx1 & 15][idx2[3] & 15];
|
|
1206
|
+
return [
|
|
1207
|
+
p2epMoves[0][move][idx2[0]],
|
|
1208
|
+
p2rlMoves[0][move][idx2[1]],
|
|
1209
|
+
p2ccMoves[0][move][idx2[2]],
|
|
1210
|
+
ufidx1 & ~15 | ufcol
|
|
1211
|
+
];
|
|
1212
|
+
},
|
|
1213
|
+
phase2Moves.length,
|
|
1214
|
+
2,
|
|
1215
|
+
ckmv2
|
|
1216
|
+
);
|
|
1152
1217
|
}
|
|
1153
1218
|
function solvePhase2(solvInfos) {
|
|
1154
1219
|
if (!solv2) {
|
|
@@ -1185,21 +1250,34 @@ var ftosolver = (function() {
|
|
|
1185
1250
|
var solv3 = null;
|
|
1186
1251
|
function phase3Init() {
|
|
1187
1252
|
var fc = new FtoCubie();
|
|
1188
|
-
p3epMoves = mathlib.createMoveHash(
|
|
1189
|
-
|
|
1253
|
+
p3epMoves = mathlib.createMoveHash(
|
|
1254
|
+
fc.ep.slice(),
|
|
1255
|
+
phase3Moves,
|
|
1256
|
+
phase3EdgeHash,
|
|
1257
|
+
ftoPermMove.bind(null, "ep")
|
|
1258
|
+
);
|
|
1259
|
+
p3ufMoves = mathlib.createMoveHash(
|
|
1260
|
+
new FtoCubie(),
|
|
1261
|
+
phase3Moves,
|
|
1262
|
+
phase3CcufHash,
|
|
1263
|
+
ftoFullMove
|
|
1264
|
+
);
|
|
1190
1265
|
p3epPrun = [];
|
|
1191
1266
|
p3ufPrun = [];
|
|
1192
1267
|
mathlib.createPrun(p3epPrun, 0, 81, 14, p3epMoves[0], 4, 2);
|
|
1193
1268
|
mathlib.createPrun(p3ufPrun, 0, 11520, 14, p3ufMoves[0], 4, 2);
|
|
1194
1269
|
ckmv3 = genCkmv(phase3Moves);
|
|
1195
|
-
solv3 = new mathlib.Searcher(
|
|
1196
|
-
|
|
1270
|
+
solv3 = new mathlib.Searcher(
|
|
1271
|
+
null,
|
|
1272
|
+
(idx) => Math.max(
|
|
1197
1273
|
mathlib.getPruning(p3epPrun, idx[0]),
|
|
1198
1274
|
mathlib.getPruning(p3ufPrun, idx[1])
|
|
1199
|
-
)
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
|
|
1275
|
+
),
|
|
1276
|
+
(idx, move) => [p3epMoves[0][move][idx[0]], p3ufMoves[0][move][idx[1]]],
|
|
1277
|
+
4,
|
|
1278
|
+
2,
|
|
1279
|
+
ckmv3
|
|
1280
|
+
);
|
|
1203
1281
|
}
|
|
1204
1282
|
function solvePhase3(solvInfo) {
|
|
1205
1283
|
var fc = solvInfo[0];
|
|
@@ -1244,7 +1322,24 @@ var ftosolver = (function() {
|
|
|
1244
1322
|
}
|
|
1245
1323
|
return fc;
|
|
1246
1324
|
}
|
|
1247
|
-
var move2str = [
|
|
1325
|
+
var move2str = [
|
|
1326
|
+
"U",
|
|
1327
|
+
"U'",
|
|
1328
|
+
"F",
|
|
1329
|
+
"F'",
|
|
1330
|
+
"r",
|
|
1331
|
+
"r'",
|
|
1332
|
+
"l",
|
|
1333
|
+
"l'",
|
|
1334
|
+
"D",
|
|
1335
|
+
"D'",
|
|
1336
|
+
"B",
|
|
1337
|
+
"B'",
|
|
1338
|
+
"R",
|
|
1339
|
+
"R'",
|
|
1340
|
+
"L",
|
|
1341
|
+
"L'"
|
|
1342
|
+
];
|
|
1248
1343
|
function prettyMoves(moves) {
|
|
1249
1344
|
var buf = [];
|
|
1250
1345
|
for (var i2 = 0; i2 < moves.length; i2++) {
|
|
@@ -1270,7 +1365,11 @@ var ftosolver = (function() {
|
|
|
1270
1365
|
var sym1Idx = solvInfo1[2];
|
|
1271
1366
|
this.sol2 = solvInfo2[1].slice();
|
|
1272
1367
|
this.tt2 = solvInfo2[5];
|
|
1273
|
-
solvInfo2[0] = FtoCubie.FtoMult(
|
|
1368
|
+
solvInfo2[0] = FtoCubie.FtoMult(
|
|
1369
|
+
pyraSymCube[FtoCubie.symMulI[0][~~(sym1Idx / 12)]],
|
|
1370
|
+
solvInfo2[0],
|
|
1371
|
+
null
|
|
1372
|
+
);
|
|
1274
1373
|
var solvInfo3 = solvePhase3(solvInfo2);
|
|
1275
1374
|
this.sol3 = solvInfo3[1].slice();
|
|
1276
1375
|
this.tt3 = solvInfo3[4];
|
|
@@ -1285,17 +1384,29 @@ var ftosolver = (function() {
|
|
|
1285
1384
|
};
|
|
1286
1385
|
var solver = new FtoSolver();
|
|
1287
1386
|
function solveTest(n_moves) {
|
|
1288
|
-
var solvInfo = randomMoves(
|
|
1387
|
+
var solvInfo = randomMoves(
|
|
1388
|
+
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
|
|
1389
|
+
n_moves
|
|
1390
|
+
);
|
|
1289
1391
|
var scramble = prettyMoves(solvInfo[1].slice());
|
|
1290
1392
|
var solution = solver.solveFto(solvInfo[0]);
|
|
1291
1393
|
var fc = solvInfo[0];
|
|
1292
1394
|
DEBUG && console.log("scrambled state\n", fc.toString(1));
|
|
1293
1395
|
fc = applyMoves(fc, solver.sol1);
|
|
1294
|
-
DEBUG && console.log(
|
|
1396
|
+
DEBUG && console.log(
|
|
1397
|
+
"after phase 1 (" + prettyMoves(solver.sol1) + "):\n",
|
|
1398
|
+
fc.toString(1)
|
|
1399
|
+
);
|
|
1295
1400
|
fc = applyMoves(fc, solver.sol2);
|
|
1296
|
-
DEBUG && console.log(
|
|
1401
|
+
DEBUG && console.log(
|
|
1402
|
+
"after phase 2 (" + prettyMoves(solver.sol2) + "):\n",
|
|
1403
|
+
fc.toString(1)
|
|
1404
|
+
);
|
|
1297
1405
|
fc = applyMoves(fc, solver.sol3);
|
|
1298
|
-
DEBUG && console.log(
|
|
1406
|
+
DEBUG && console.log(
|
|
1407
|
+
"after phase 3 (" + prettyMoves(solver.sol3) + "):\n",
|
|
1408
|
+
fc.toString(1)
|
|
1409
|
+
);
|
|
1299
1410
|
var facelets = fc.toFaceCube();
|
|
1300
1411
|
var isSolved = true;
|
|
1301
1412
|
outer_loop: for (var i2 = 0; i2 < 8; i2++) {
|
|
@@ -1350,7 +1461,7 @@ var ftosolver = (function() {
|
|
|
1350
1461
|
testbench
|
|
1351
1462
|
};
|
|
1352
1463
|
})();
|
|
1353
|
-
var fto_scrambler = (
|
|
1464
|
+
var fto_scrambler = (() => {
|
|
1354
1465
|
function getRandomScramble(solvedEdge, solvedCenter, solvedCorner) {
|
|
1355
1466
|
var fc = new ftosolver.FtoCubie();
|
|
1356
1467
|
if (!solvedEdge) {
|
|
@@ -1402,4 +1513,3 @@ function getRandomFTOScramble() {
|
|
|
1402
1513
|
export {
|
|
1403
1514
|
getRandomFTOScramble
|
|
1404
1515
|
};
|
|
1405
|
-
//# sourceMappingURL=search-dynamic-solve-fto-WLOW7LAM.js.map
|