cubing 0.29.1 → 0.30.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. package/README.md +1 -6
  2. package/dist/esm/.DS_Store +0 -0
  3. package/dist/esm/alg/index.js +1 -2
  4. package/dist/esm/bluetooth/index.js +36 -32
  5. package/dist/esm/bluetooth/index.js.map +2 -2
  6. package/dist/esm/{chunk-XRZBPKES.js → chunk-35OK6TQ4.js} +328 -66
  7. package/dist/esm/chunk-35OK6TQ4.js.map +7 -0
  8. package/dist/esm/{chunk-WYKXX2XY.js → chunk-4QZRHN6S.js} +10 -8
  9. package/dist/esm/{chunk-WYKXX2XY.js.map → chunk-4QZRHN6S.js.map} +2 -2
  10. package/dist/esm/{chunk-2JDBIQSV.js → chunk-5OQ34D3X.js} +7 -7
  11. package/dist/esm/{chunk-2JDBIQSV.js.map → chunk-5OQ34D3X.js.map} +2 -2
  12. package/dist/esm/{chunk-U2ONHTIX.js → chunk-6FB2XWAK.js} +33 -31
  13. package/dist/esm/chunk-6FB2XWAK.js.map +7 -0
  14. package/dist/esm/{chunk-ZNAYJGVL.js → chunk-C6KMV2PL.js} +2 -2
  15. package/dist/esm/{chunk-ZNAYJGVL.js.map → chunk-C6KMV2PL.js.map} +0 -0
  16. package/dist/esm/{chunk-XU5ILFX5.js → chunk-GQBRF4EM.js} +6 -4
  17. package/dist/esm/{chunk-XU5ILFX5.js.map → chunk-GQBRF4EM.js.map} +2 -2
  18. package/dist/esm/{chunk-WXCNEGW3.js → chunk-HR5D6SD4.js} +2 -2
  19. package/dist/esm/{chunk-WXCNEGW3.js.map → chunk-HR5D6SD4.js.map} +2 -2
  20. package/dist/esm/{chunk-XT3R2ENM.js → chunk-KOAJIBEX.js} +47 -38
  21. package/dist/esm/chunk-KOAJIBEX.js.map +7 -0
  22. package/dist/esm/{chunk-OX6O2ZO5.js → chunk-QHWK5RXN.js} +1 -1
  23. package/dist/esm/chunk-QHWK5RXN.js.map +7 -0
  24. package/dist/esm/{chunk-GW4FGG42.js → chunk-RI2DAEY6.js} +2 -2
  25. package/dist/esm/{chunk-GW4FGG42.js.map → chunk-RI2DAEY6.js.map} +0 -0
  26. package/dist/esm/{chunk-AHEXXC6V.js → chunk-VIUWS2PX.js} +4 -4
  27. package/dist/esm/chunk-VIUWS2PX.js.map +7 -0
  28. package/dist/esm/{chunk-2IZUSAXQ.js → chunk-WEYPAZEE.js} +1 -1
  29. package/dist/esm/{chunk-2IZUSAXQ.js.map → chunk-WEYPAZEE.js.map} +1 -1
  30. package/dist/esm/{chunk-NI7U4XAZ.js → chunk-ZQT3QSWD.js} +226 -113
  31. package/dist/esm/chunk-ZQT3QSWD.js.map +7 -0
  32. package/dist/esm/kpuzzle/index.js +2 -3
  33. package/dist/esm/notation/index.js +2 -3
  34. package/dist/esm/protocol/index.js +4 -5
  35. package/dist/esm/puzzle-geometry/index.js +110 -85
  36. package/dist/esm/puzzle-geometry/index.js.map +2 -2
  37. package/dist/esm/puzzles/index.js +10 -7
  38. package/dist/esm/{puzzles-dynamic-3x3x3-KIG5A6QR.js → puzzles-dynamic-3x3x3-ZKMODX2P.js} +1 -3
  39. package/dist/esm/{puzzles-dynamic-3x3x3-KIG5A6QR.js.map → puzzles-dynamic-3x3x3-ZKMODX2P.js.map} +1 -1
  40. package/dist/esm/{puzzles-dynamic-4x4x4-PEDAPUZK.js → puzzles-dynamic-4x4x4-DT42HVIY.js} +1 -3
  41. package/dist/esm/{puzzles-dynamic-4x4x4-PEDAPUZK.js.map → puzzles-dynamic-4x4x4-DT42HVIY.js.map} +1 -1
  42. package/dist/esm/{puzzles-dynamic-side-events-5C7LMBWX.js → puzzles-dynamic-side-events-HMUBMHA5.js} +2 -4
  43. package/dist/esm/{puzzles-dynamic-side-events-5C7LMBWX.js.map → puzzles-dynamic-side-events-HMUBMHA5.js.map} +2 -2
  44. package/dist/esm/{puzzles-dynamic-unofficial-WWJ4NJMX.js → puzzles-dynamic-unofficial-QXSDLTK5.js} +1 -3
  45. package/dist/esm/{puzzles-dynamic-unofficial-WWJ4NJMX.js.map → puzzles-dynamic-unofficial-QXSDLTK5.js.map} +1 -1
  46. package/dist/esm/scramble/index.js +3 -4
  47. package/dist/esm/search/index.js +8 -9
  48. package/dist/esm/{search-dynamic-sgs-side-events-4H3X5HLH.js → search-dynamic-sgs-side-events-XNTCWRI4.js} +6 -7
  49. package/dist/esm/search-dynamic-sgs-side-events-XNTCWRI4.js.map +7 -0
  50. package/dist/esm/{search-dynamic-sgs-unofficial-7IRW4LVD.js → search-dynamic-sgs-unofficial-5KMZ747E.js} +122 -68
  51. package/dist/esm/search-dynamic-sgs-unofficial-5KMZ747E.js.map +7 -0
  52. package/dist/esm/{search-dynamic-solve-3x3x3-7XZTYQMO.js → search-dynamic-solve-3x3x3-TSXPWENP.js} +649 -407
  53. package/dist/esm/search-dynamic-solve-3x3x3-TSXPWENP.js.map +7 -0
  54. package/dist/esm/{search-dynamic-solve-4x4x4-7JTJCCSY.js → search-dynamic-solve-4x4x4-FKQ2JWK2.js} +399 -151
  55. package/dist/esm/search-dynamic-solve-4x4x4-FKQ2JWK2.js.map +7 -0
  56. package/dist/esm/{search-dynamic-solve-fto-4LI23P6K.js → search-dynamic-solve-fto-GPLW7S5F.js} +74 -35
  57. package/dist/esm/search-dynamic-solve-fto-GPLW7S5F.js.map +7 -0
  58. package/dist/esm/{search-dynamic-solve-kilominx-3HEVQ4MC.js → search-dynamic-solve-kilominx-HB2QFUGF.js} +136 -72
  59. package/dist/esm/search-dynamic-solve-kilominx-HB2QFUGF.js.map +7 -0
  60. package/dist/esm/{search-dynamic-solve-master_tetraminx-UB32C7MM.js → search-dynamic-solve-master_tetraminx-LR3LJI7O.js} +84 -42
  61. package/dist/esm/search-dynamic-solve-master_tetraminx-LR3LJI7O.js.map +7 -0
  62. package/dist/esm/{search-dynamic-solve-sq1-HA72TYF2.js → search-dynamic-solve-sq1-W33UXTDZ.js} +129 -55
  63. package/dist/esm/search-dynamic-solve-sq1-W33UXTDZ.js.map +7 -0
  64. package/dist/esm/search-worker-inside-generated-string-5HKZNHKK.js +3884 -0
  65. package/dist/esm/search-worker-inside-generated-string-5HKZNHKK.js.map +7 -0
  66. package/dist/esm/{search-worker-js-entry-T6YIT7YD.js → search-worker-js-entry-PDXEE46R.js} +44 -36
  67. package/dist/esm/search-worker-js-entry-PDXEE46R.js.map +7 -0
  68. package/dist/esm/{search-worker-ts-entry-OUEC4L5I.js → search-worker-ts-entry-UV2RY2EY.js} +3 -4
  69. package/dist/esm/{search-worker-ts-entry-OUEC4L5I.js.map → search-worker-ts-entry-UV2RY2EY.js.map} +1 -1
  70. package/dist/esm/stream/index.js +1 -2
  71. package/dist/esm/stream/index.js.map +2 -2
  72. package/dist/esm/twisty/index.js +368 -300
  73. package/dist/esm/twisty/index.js.map +3 -3
  74. package/dist/esm/{twisty-dynamic-3d-AZUSXQ5S.js → twisty-dynamic-3d-GPF6TW32.js} +57 -60
  75. package/dist/esm/twisty-dynamic-3d-GPF6TW32.js.map +7 -0
  76. package/dist/types/{Alg-137fb0d5.d.ts → Alg-1c8c3757.d.ts} +25 -26
  77. package/dist/types/{KState-a73111d7.d.ts → KState-7c9e40f4.d.ts} +1 -1
  78. package/dist/types/{TwizzleLink-bef52ecd.d.ts → TwizzleLink-3f8a01d2.d.ts} +19 -18
  79. package/dist/types/alg/index.d.ts +30 -8
  80. package/dist/types/bluetooth/index.d.ts +4 -4
  81. package/dist/types/{bluetooth-puzzle-8a678993.d.ts → bluetooth-puzzle-a64e9756.d.ts} +2 -2
  82. package/dist/types/kpuzzle/index.d.ts +2 -2
  83. package/dist/types/notation/index.d.ts +1 -1
  84. package/dist/types/{outside-e55f28a0.d.ts → outside-b62aa614.d.ts} +2 -2
  85. package/dist/types/{parseAlg-a28f7568.d.ts → parseAlg-d5fbee87.d.ts} +1 -1
  86. package/dist/types/protocol/index.d.ts +2 -2
  87. package/dist/types/puzzle-geometry/index.d.ts +3 -3
  88. package/dist/types/puzzles/index.d.ts +8 -6
  89. package/dist/types/scramble/index.d.ts +3 -3
  90. package/dist/types/search/index.d.ts +3 -3
  91. package/dist/types/stream/index.d.ts +3 -3
  92. package/dist/types/twisty/index.d.ts +5 -5
  93. package/package.json +51 -147
  94. package/dist/esm/chunk-AHEXXC6V.js.map +0 -7
  95. package/dist/esm/chunk-NI7U4XAZ.js.map +0 -7
  96. package/dist/esm/chunk-OX6O2ZO5.js.map +0 -7
  97. package/dist/esm/chunk-SBZRVSPK.js +0 -30
  98. package/dist/esm/chunk-SBZRVSPK.js.map +0 -7
  99. package/dist/esm/chunk-U2ONHTIX.js.map +0 -7
  100. package/dist/esm/chunk-XRZBPKES.js.map +0 -7
  101. package/dist/esm/chunk-XT3R2ENM.js.map +0 -7
  102. package/dist/esm/search-dynamic-sgs-side-events-4H3X5HLH.js.map +0 -7
  103. package/dist/esm/search-dynamic-sgs-unofficial-7IRW4LVD.js.map +0 -7
  104. package/dist/esm/search-dynamic-solve-3x3x3-7XZTYQMO.js.map +0 -7
  105. package/dist/esm/search-dynamic-solve-4x4x4-7JTJCCSY.js.map +0 -7
  106. package/dist/esm/search-dynamic-solve-fto-4LI23P6K.js.map +0 -7
  107. package/dist/esm/search-dynamic-solve-kilominx-3HEVQ4MC.js.map +0 -7
  108. package/dist/esm/search-dynamic-solve-master_tetraminx-UB32C7MM.js.map +0 -7
  109. package/dist/esm/search-dynamic-solve-sq1-HA72TYF2.js.map +0 -7
  110. package/dist/esm/search-worker-inside-generated-string-ZEY77HTF.js +0 -3886
  111. package/dist/esm/search-worker-inside-generated-string-ZEY77HTF.js.map +0 -7
  112. package/dist/esm/search-worker-js-entry-T6YIT7YD.js.map +0 -7
  113. package/dist/esm/twisty-dynamic-3d-AZUSXQ5S.js.map +0 -7
@@ -1,18 +1,17 @@
1
1
  import {
2
2
  parseSGS
3
- } from "./chunk-GW4FGG42.js";
3
+ } from "./chunk-RI2DAEY6.js";
4
4
  import {
5
5
  puzzles
6
- } from "./chunk-XRZBPKES.js";
7
- import "./chunk-U2ONHTIX.js";
8
- import "./chunk-XU5ILFX5.js";
6
+ } from "./chunk-35OK6TQ4.js";
7
+ import "./chunk-6FB2XWAK.js";
8
+ import "./chunk-GQBRF4EM.js";
9
9
  import {
10
10
  randomUIntBelowFactory
11
- } from "./chunk-WXCNEGW3.js";
11
+ } from "./chunk-HR5D6SD4.js";
12
12
  import {
13
13
  Alg
14
- } from "./chunk-NI7U4XAZ.js";
15
- import "./chunk-SBZRVSPK.js";
14
+ } from "./chunk-ZQT3QSWD.js";
16
15
 
17
16
  // src/cubing/search/inside/solve/puzzles/dynamic/sgs-unofficial/fto.sgs.ts
18
17
  var cachedData = null;
@@ -647,18 +646,22 @@ Alg U BR' U' BR BL' BR BL BR'
647
646
 
648
647
  // src/cubing/vendor/xyzzy/redi_cube.js
649
648
  function factorial(n) {
650
- if (n < 2)
649
+ if (n < 2) {
651
650
  return n;
651
+ }
652
652
  let f = 1;
653
- for (let i = 2; i <= n; i++)
653
+ for (let i = 2; i <= n; i++) {
654
654
  f *= i;
655
+ }
655
656
  return f;
656
657
  }
657
658
  function C(n, k) {
658
- if (k < 0 || k > n)
659
+ if (k < 0 || k > n) {
659
660
  return 0;
660
- if (k === 0 || k === n)
661
+ }
662
+ if (k === 0 || k === n) {
661
663
  return 1;
664
+ }
662
665
  let c = 1;
663
666
  for (let i = 0; i < k; i++) {
664
667
  c = c * (n - i) / (i + 1) | 0;
@@ -702,8 +705,9 @@ function permutation_parity(A) {
702
705
  let parity = 0;
703
706
  for (let i = 0; i < n - 1; i++) {
704
707
  for (let j = i; j < n; j++) {
705
- if (A[i] > A[j])
708
+ if (A[i] > A[j]) {
706
709
  parity ^= 1;
710
+ }
707
711
  }
708
712
  }
709
713
  return parity;
@@ -720,14 +724,16 @@ function index_to_evenpermutation(ind, n) {
720
724
  perm[n - 1] = 0;
721
725
  for (let i = n - 2; i >= 0; i--) {
722
726
  for (let j = i + 1; j < n; j++) {
723
- if (perm[j] >= perm[i])
727
+ if (perm[j] >= perm[i]) {
724
728
  perm[j]++;
725
- else
729
+ } else {
726
730
  parity ^= 1;
731
+ }
727
732
  }
728
733
  }
729
- if (parity === 1)
734
+ if (parity === 1) {
730
735
  [perm[n - 2], perm[n - 1]] = [perm[n - 1], perm[n - 2]];
736
+ }
731
737
  return perm;
732
738
  }
733
739
  function evenpermutation_to_index(perm) {
@@ -736,11 +742,13 @@ function evenpermutation_to_index(perm) {
736
742
  function comb_to_index(l) {
737
743
  let bits = l.length;
738
744
  let ones = 0;
739
- for (let i = 0; i < bits; i++)
745
+ for (let i = 0; i < bits; i++) {
740
746
  ones += +(l[i] === 1);
747
+ }
741
748
  let zeros = bits - ones;
742
- if (zeros === 0 || ones === 0 || bits === 1)
749
+ if (zeros === 0 || ones === 0 || bits === 1) {
743
750
  return 0;
751
+ }
744
752
  let b = C(bits - 1, ones);
745
753
  let ind = 0;
746
754
  for (let i = 0; zeros > 0 && ones > 0 && bits > 1; i++) {
@@ -775,14 +783,16 @@ function index_to_comb(ind, ones, bits) {
775
783
  }
776
784
  function compose(A, B) {
777
785
  let C2 = [];
778
- for (let i = 0; i < B.length; i++)
786
+ for (let i = 0; i < B.length; i++) {
779
787
  C2[i] = A[B[i]];
788
+ }
780
789
  return C2;
781
790
  }
782
791
  function permutation_from_cycle(cycle, n) {
783
792
  let perm = [];
784
- for (let i = 0; i < n; i++)
793
+ for (let i = 0; i < n; i++) {
785
794
  perm[i] = i;
795
+ }
786
796
  for (let i = 0; i < cycle.length; i++) {
787
797
  perm[cycle[i]] = cycle[(i + 1) % cycle.length];
788
798
  }
@@ -790,14 +800,16 @@ function permutation_from_cycle(cycle, n) {
790
800
  }
791
801
  function unsparsify_list(d, n) {
792
802
  let l = Array(n).fill(0);
793
- for (let k in d)
803
+ for (let k in d) {
794
804
  l[k] = d[k];
805
+ }
795
806
  return l;
796
807
  }
797
808
  function compose_state(state1, state2) {
798
809
  let o = Array(8).fill(0);
799
- for (let i = 0; i < 8; i++)
810
+ for (let i = 0; i < 8; i++) {
800
811
  o[i] = (state1[1][i] + state2[1][i]) % 3;
812
+ }
801
813
  return [compose(state1[0], state2[0]), o];
802
814
  }
803
815
  var move_UL = [
@@ -847,8 +859,9 @@ function generate_random_state(randomUintBelow2) {
847
859
  12
848
860
  );
849
861
  let o = Array(8);
850
- for (let i = 0; i < 8; i++)
862
+ for (let i = 0; i < 8; i++) {
851
863
  o[i] = randomUintBelow2(3);
864
+ }
852
865
  return [p, o];
853
866
  }
854
867
  function generate_random_state_scramble(randomUintBelow2) {
@@ -880,17 +893,20 @@ function solve(state) {
880
893
  let { value: sol1, done } = phase1gen.next();
881
894
  let new_state = state;
882
895
  for (let [m, r] of sol1) {
883
- for (let i2 = 0; i2 < r; i2++)
896
+ for (let i2 = 0; i2 < r; i2++) {
884
897
  new_state = compose_state(new_state, moves[m]);
898
+ }
885
899
  }
886
900
  if (intermediate_states.has(new_state.toString())) {
887
901
  continue;
888
- } else
902
+ } else {
889
903
  intermediate_states.add(new_state.toString());
904
+ }
890
905
  let edge_ind = evenpermutation_to_index(new_state[0].slice(0, 8));
891
906
  let corner_ind = 0;
892
- for (let i2 = 0; i2 < 4; i2++)
907
+ for (let i2 = 0; i2 < 4; i2++) {
893
908
  corner_ind += new_state[1][i2] * 3 ** i2;
909
+ }
894
910
  let phase2_indices = [edge_ind, corner_ind];
895
911
  let moves_left = best ? best.length - sol1.length - 1 : 999999;
896
912
  let sol2 = ida_solve(
@@ -905,26 +921,30 @@ function solve(state) {
905
921
  if (best === void 0 || best.length > sol1.length + sol2.length) {
906
922
  best = sol1.concat(sol2);
907
923
  }
908
- if (new Date() - start_time > 300)
924
+ if (new Date() - start_time > 300) {
909
925
  break;
926
+ }
910
927
  }
911
928
  return best;
912
929
  }
913
930
  function index_phase1(state) {
914
931
  let edge_ind = 0;
915
- for (let i = 0; i < 4; i++)
932
+ for (let i = 0; i < 4; i++) {
916
933
  edge_ind += state[0].indexOf(i + 8) * 12 ** i;
934
+ }
917
935
  let corner_ind = 0;
918
- for (let i = 0; i < 4; i++)
936
+ for (let i = 0; i < 4; i++) {
919
937
  corner_ind += state[1][i + 4] * 3 ** i;
938
+ }
920
939
  let filtered = state[0].map((x) => Math.max(-1, x - 8));
921
940
  let separate_ind = comb_to_index(filtered.map((x) => +(x >= 0))) * 2 + permutation_parity(filtered.filter((x) => x >= 0));
922
941
  return [edge_ind, corner_ind + 81 * separate_ind];
923
942
  }
924
943
  var tables = {};
925
944
  function generate_phase1_corner_mtable() {
926
- if (tables.phase1cm)
945
+ if (tables.phase1cm) {
927
946
  return tables.phase1cm;
947
+ }
928
948
  let mtable = [];
929
949
  for (let i = 0; i < 81; i++) {
930
950
  mtable[i] = Array(8);
@@ -944,8 +964,9 @@ function generate_phase1_corner_mtable() {
944
964
  return tables.phase1cm = mtable;
945
965
  }
946
966
  function generate_phase1_corner_ptable() {
947
- if (tables.phase1cp)
967
+ if (tables.phase1cp) {
948
968
  return tables.phase1cp;
969
+ }
949
970
  let ptable = Array(81);
950
971
  for (let i = 0; i < 81; i++) {
951
972
  let o = [
@@ -959,8 +980,9 @@ function generate_phase1_corner_ptable() {
959
980
  return tables.phase1cp = ptable;
960
981
  }
961
982
  function generate_phase1_edge_mtable() {
962
- if (tables.phase1em)
983
+ if (tables.phase1em) {
963
984
  return tables.phase1em;
985
+ }
964
986
  let mtable_single = [];
965
987
  for (let i = 0; i < 12; i++) {
966
988
  mtable_single[i] = [];
@@ -982,25 +1004,29 @@ function generate_phase1_edge_mtable() {
982
1004
  return tables.phase1em = mtable;
983
1005
  }
984
1006
  function generate_phase1_edge_ptable() {
985
- if (tables.phase1ep)
1007
+ if (tables.phase1ep) {
986
1008
  return tables.phase1ep;
1009
+ }
987
1010
  return tables.phase1ep = bfs(generate_phase1_edge_mtable(), [
988
1011
  8 + 12 * (9 + 12 * (10 + 12 * 11))
989
1012
  ]);
990
1013
  }
991
1014
  function generate_phase1_separate_mtable() {
992
- if (tables.phase1sm)
1015
+ if (tables.phase1sm) {
993
1016
  return tables.phase1sm;
1017
+ }
994
1018
  const C12_4 = C(12, 4);
995
1019
  let mtable_c = [];
996
1020
  for (let i = 0; i < C12_4; i++) {
997
1021
  mtable_c[i] = [];
998
- let comb = index_to_comb(i, 4, 12), perm = [];
1022
+ let comb = index_to_comb(i, 4, 12);
1023
+ let perm = [];
999
1024
  for (let j = 0, k = 0; j < 12; j++) {
1000
- if (comb[j] === 0)
1025
+ if (comb[j] === 0) {
1001
1026
  perm[j] = -1;
1002
- else
1027
+ } else {
1003
1028
  perm[j] = k++;
1029
+ }
1004
1030
  }
1005
1031
  for (let m = 0; m < 8; m++) {
1006
1032
  let new_perm = compose(perm, moves[m][0]);
@@ -1024,13 +1050,15 @@ function generate_phase1_separate_mtable() {
1024
1050
  return tables.phase1sm = mtable;
1025
1051
  }
1026
1052
  function generate_phase1_separate_ptable() {
1027
- if (tables.phase1sp)
1053
+ if (tables.phase1sp) {
1028
1054
  return tables.phase1sp;
1055
+ }
1029
1056
  return tables.phase1sp = bfs(generate_phase1_separate_mtable(), [0]);
1030
1057
  }
1031
1058
  function generate_phase2_corner_mtable() {
1032
- if (tables.phase2cm)
1059
+ if (tables.phase2cm) {
1033
1060
  return tables.phase2cm;
1061
+ }
1034
1062
  let phase1_mtable = generate_phase1_corner_mtable();
1035
1063
  let mtable = Array(81);
1036
1064
  for (let i = 0; i < 81; i++) {
@@ -1039,8 +1067,9 @@ function generate_phase2_corner_mtable() {
1039
1067
  return tables.phase2cm = mtable;
1040
1068
  }
1041
1069
  function generate_phase2_edge_mtable() {
1042
- if (tables.phase2em)
1070
+ if (tables.phase2em) {
1043
1071
  return tables.phase2em;
1072
+ }
1044
1073
  const n = 8;
1045
1074
  const HALFFACT8 = factorial(n) / 2;
1046
1075
  let mtable = Array(HALFFACT8);
@@ -1051,17 +1080,21 @@ function generate_phase2_edge_mtable() {
1051
1080
  let new_perm = compose(perm, moves[m][0].slice(0, 8));
1052
1081
  mtable[i][m] = evenpermutation_to_index(new_perm);
1053
1082
  }
1054
- if (i === HALFFACT8 - 1)
1083
+ if (i === HALFFACT8 - 1) {
1055
1084
  break;
1085
+ }
1056
1086
  let parity = 0;
1057
1087
  do {
1058
1088
  for (let k = n - 2; k >= 0; k--) {
1059
- if (perm[k] > perm[k + 1])
1089
+ if (perm[k] > perm[k + 1]) {
1060
1090
  continue;
1091
+ }
1061
1092
  let l = k + 1;
1062
- for (let L = l; L < n; L++)
1063
- if (perm[L] > perm[k])
1093
+ for (let L = l; L < n; L++) {
1094
+ if (perm[L] > perm[k]) {
1064
1095
  l = L;
1096
+ }
1097
+ }
1065
1098
  [perm[k], perm[l]] = [perm[l], perm[k]];
1066
1099
  parity ^= 1;
1067
1100
  for (let j = 0; k + 1 + j < n - 1 - j; j++, parity ^= 1) {
@@ -1077,25 +1110,28 @@ function generate_phase2_edge_mtable() {
1077
1110
  return tables.phase2em = mtable;
1078
1111
  }
1079
1112
  function generate_phase2_edge_ptable() {
1080
- if (tables.phase2ep)
1113
+ if (tables.phase2ep) {
1081
1114
  return tables.phase2ep;
1115
+ }
1082
1116
  return tables.phase2ep = bfs(generate_phase2_edge_mtable(), [0]);
1083
1117
  }
1084
1118
  function bfs(mtable, goal_states) {
1085
1119
  let N = mtable.length;
1086
1120
  let nmoves = mtable[0].length;
1087
1121
  let ptable = Array(N).fill(-1);
1088
- let queue = goal_states.slice(), new_queue = [];
1122
+ let queue = goal_states.slice();
1123
+ let new_queue = [];
1089
1124
  let depth = 0;
1090
1125
  while (queue.length > 0) {
1091
1126
  new_queue.length = 0;
1092
1127
  for (let state of queue) {
1093
- if (ptable[state] !== -1)
1128
+ if (ptable[state] !== -1) {
1094
1129
  continue;
1130
+ }
1095
1131
  ptable[state] = depth;
1096
1132
  for (let move_index = 0; move_index < nmoves; move_index++) {
1097
1133
  let new_state = mtable[state][move_index];
1098
- while (new_state != state) {
1134
+ while (new_state !== state) {
1099
1135
  new_queue.push(new_state);
1100
1136
  new_state = mtable[new_state][move_index];
1101
1137
  }
@@ -1110,12 +1146,14 @@ function ida_solve(indices, mtables, ptables, max_bound) {
1110
1146
  max_bound = max_bound || 999999;
1111
1147
  let ncoords = indices.length;
1112
1148
  let bound = 0;
1113
- for (let i = 0; i < ncoords; i++)
1149
+ for (let i = 0; i < ncoords; i++) {
1114
1150
  bound = Math.max(bound, ptables[i][indices[i]]);
1151
+ }
1115
1152
  while (bound <= max_bound) {
1116
1153
  let path = ida_search(indices, mtables, ptables, bound, -1);
1117
- if (path !== void 0)
1154
+ if (path !== void 0) {
1118
1155
  return path;
1156
+ }
1119
1157
  bound++;
1120
1158
  }
1121
1159
  }
@@ -1123,27 +1161,35 @@ function ida_search(indices, mtables, ptables, bound, last) {
1123
1161
  let ncoords = indices.length;
1124
1162
  let nmoves = mtables[0][0].length;
1125
1163
  let heuristic = 0;
1126
- for (let i = 0; i < ncoords; i++)
1164
+ for (let i = 0; i < ncoords; i++) {
1127
1165
  heuristic = Math.max(heuristic, ptables[i][indices[i]]);
1128
- if (heuristic > bound)
1166
+ }
1167
+ if (heuristic > bound) {
1129
1168
  return;
1130
- if (bound === 0)
1169
+ }
1170
+ if (bound === 0) {
1131
1171
  return [];
1132
- if (heuristic === 0 && bound === 1)
1172
+ }
1173
+ if (heuristic === 0 && bound === 1) {
1133
1174
  return;
1175
+ }
1134
1176
  for (let m = 0; m < nmoves; m++) {
1135
- if (m === last)
1177
+ if (m === last) {
1136
1178
  continue;
1137
- if (m < last && tetrad[m] == tetrad[last])
1179
+ }
1180
+ if (m < last && tetrad[m] === tetrad[last]) {
1138
1181
  continue;
1182
+ }
1139
1183
  let new_indices = indices.slice();
1140
- for (let c = 0; c < ncoords; c++)
1184
+ for (let c = 0; c < ncoords; c++) {
1141
1185
  new_indices[c] = mtables[c][indices[c]][m];
1186
+ }
1142
1187
  let r = 1;
1143
- while (indices.some((_, i) => indices[i] != new_indices[i])) {
1188
+ while (indices.some((_, i) => indices[i] !== new_indices[i])) {
1144
1189
  let subpath = ida_search(new_indices, mtables, ptables, bound - 1, m);
1145
- if (subpath !== void 0)
1190
+ if (subpath !== void 0) {
1146
1191
  return [[m, r]].concat(subpath);
1192
+ }
1147
1193
  for (let c = 0; c < ncoords; c++) {
1148
1194
  new_indices[c] = mtables[c][new_indices[c]][m];
1149
1195
  }
@@ -1155,8 +1201,9 @@ function ida_search(indices, mtables, ptables, bound, last) {
1155
1201
  function* ida_solve_gen(indices, mtables, ptables) {
1156
1202
  let ncoords = indices.length;
1157
1203
  let bound = 0;
1158
- for (let i = 0; i < ncoords; i++)
1204
+ for (let i = 0; i < ncoords; i++) {
1159
1205
  bound = Math.max(bound, ptables[i][indices[i]]);
1206
+ }
1160
1207
  while (true) {
1161
1208
  yield* ida_search_gen(indices, mtables, ptables, bound, -1);
1162
1209
  bound++;
@@ -1166,26 +1213,32 @@ function* ida_search_gen(indices, mtables, ptables, bound, last) {
1166
1213
  let ncoords = indices.length;
1167
1214
  let nmoves = mtables[0][0].length;
1168
1215
  let heuristic = 0;
1169
- for (let i = 0; i < ncoords; i++)
1216
+ for (let i = 0; i < ncoords; i++) {
1170
1217
  heuristic = Math.max(heuristic, ptables[i][indices[i]]);
1171
- if (heuristic > bound)
1218
+ }
1219
+ if (heuristic > bound) {
1172
1220
  return;
1221
+ }
1173
1222
  if (bound === 0) {
1174
1223
  yield [];
1175
1224
  return;
1176
1225
  }
1177
- if (heuristic === 0 && bound === 1)
1226
+ if (heuristic === 0 && bound === 1) {
1178
1227
  return;
1228
+ }
1179
1229
  for (let m = 0; m < nmoves; m++) {
1180
- if (m === last)
1230
+ if (m === last) {
1181
1231
  continue;
1182
- if (m < last && tetrad[m] == tetrad[last])
1232
+ }
1233
+ if (m < last && tetrad[m] === tetrad[last]) {
1183
1234
  continue;
1235
+ }
1184
1236
  let new_indices = indices.slice();
1185
- for (let c = 0; c < ncoords; c++)
1237
+ for (let c = 0; c < ncoords; c++) {
1186
1238
  new_indices[c] = mtables[c][indices[c]][m];
1239
+ }
1187
1240
  let r = 1;
1188
- while (indices.some((_, i) => indices[i] != new_indices[i])) {
1241
+ while (indices.some((_, i) => indices[i] !== new_indices[i])) {
1189
1242
  let subpath_gen = ida_search_gen(
1190
1243
  new_indices,
1191
1244
  mtables,
@@ -1195,8 +1248,9 @@ function* ida_search_gen(indices, mtables, ptables, bound, last) {
1195
1248
  );
1196
1249
  while (true) {
1197
1250
  let { value: subpath, done } = subpath_gen.next();
1198
- if (done)
1251
+ if (done) {
1199
1252
  break;
1253
+ }
1200
1254
  yield [[m, r]].concat(subpath);
1201
1255
  }
1202
1256
  for (let c = 0; c < ncoords; c++) {
@@ -1218,4 +1272,4 @@ export {
1218
1272
  getRandomRediCubeScramble,
1219
1273
  sgsDataFTO
1220
1274
  };
1221
- //# sourceMappingURL=search-dynamic-sgs-unofficial-7IRW4LVD.js.map
1275
+ //# sourceMappingURL=search-dynamic-sgs-unofficial-5KMZ747E.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/cubing/search/inside/solve/puzzles/dynamic/sgs-unofficial/fto.sgs.ts", "../../src/cubing/vendor/xyzzy/redi_cube.js"],
4
+ "sourcesContent": ["import { puzzles } from \"../../../../../../puzzles\";\nimport { parseSGS, SGSCachedData } from \"../../../parseSGS\";\n\nlet cachedData: Promise<SGSCachedData> | null = null;\nexport async function sgsDataFTO() {\n return (cachedData ??= uncachedSGSDataFTO());\n}\n\n// TODO: Reduce info.\nasync function uncachedSGSDataFTO(): Promise<SGSCachedData> {\n return parseSGS(\n await puzzles[\"fto\"].kpuzzle(),\n `SubgroupSizes 24 12 11 12 12 11 10 9 11 8 10 9 7 8 10 10 6 9 8 5 7 6 5 4 4 8 7 3 6 6 360\n\nAlg T\nAlg B\nAlg B T\nAlg B'\nAlg B' T\nAlg U\nAlg U T\nAlg U'\nAlg U' T\nAlg B BL\nAlg B BL T\nAlg B BL'\nAlg B BL' T\nAlg B' BR\nAlg B' BR T\nAlg B' BR'\nAlg B' BR' T\nAlg U R'\nAlg U R' T\nAlg U' L\nAlg U' L T\nAlg B BL' D\nAlg B BL' D T\n\nAlg R\nAlg R'\nAlg R D\nAlg R D'\nAlg R BR\nAlg R BR'\nAlg R' F\nAlg R' L\nAlg R' L'\nAlg B L B'\nAlg U L' U'\n\nAlg B U B'\nAlg B U' B'\nAlg B R B'\nAlg B R' B'\nAlg B' U' B\nAlg B' U B L\nAlg B' U B L'\nAlg B' U' B BL'\nAlg B U' B' BR\nAlg B' R' B F\n\nAlg BR\nAlg BR'\nAlg BR BL\nAlg BR BL'\nAlg BR' F\nAlg BR' F'\nAlg BR' D\nAlg B BR B'\nAlg U F U'\nAlg BR BL L\nAlg BR' D BR'\n\nAlg B' BL B\nAlg B' BL' B\nAlg BR D' BR'\nAlg B' BL B D'\nAlg B' BL B BL\nAlg B' BL B BL'\nAlg B' BL L B\nAlg B' BL' B F'\nAlg B' BL' B L'\nAlg B' BL' B BL'\nAlg B' BL' L BL' B\n\nAlg R' BR R\nAlg R' BR' R\nAlg BR BL' D BR\nAlg R' BR D R\nAlg R' BR D' R\nAlg R' BR R BL\nAlg B' D' BL D B\nAlg BR B D' B' BR'\nAlg BR BL' D BR L'\nAlg BR BL' D BL BR\n\nAlg U BR U'\nAlg U BR' U'\nAlg U' R U\nAlg U' R' U\nAlg U BR B' U'\nAlg U BR' U' D\nAlg U BR' U' D'\nAlg U' R F' U\nAlg U' R' U L'\n\nAlg U B U'\nAlg U B' U'\nAlg U B U' L\nAlg U B U' L'\nAlg U B' U' BL'\nAlg U B U' L F\nAlg U B U' L F'\nAlg U B' U' BL' D'\n\nAlg B BL' L BL B'\nAlg B BL' L' BL B'\nAlg U B' D B U'\nAlg U B' D' B U'\nAlg U R D R' U'\nAlg U R D' R' U'\nAlg R' F L F' R\nAlg R' F L' F' R\nAlg B L' B F' D B\nAlg U B' D' B U' D\n\nAlg F\nAlg F'\nAlg F D\nAlg F D'\nAlg F' L\nAlg F' L'\nAlg F D' BL\n\nAlg F BL F'\nAlg F BL' F'\nAlg BR' BL BR\nAlg BR' BL' BR\nAlg F BR F' BR'\nAlg F BL F' BL'\nAlg F BL' F' L\nAlg F BL' L' F'\nAlg F BR' BL BR F'\n\nAlg F' BL F\nAlg F' BL' F\nAlg U BL U'\nAlg U BL' U'\nAlg F U' F' U\nAlg F' BL F D'\nAlg F' BL F BL'\nAlg F' BL D F\n\nAlg L\nAlg L'\nAlg L BL\nAlg L BL'\nAlg F' D F\nAlg L BL D\n\nAlg L' BL L\nAlg L' BL' L\nAlg L' BL D L\nAlg L' BL D' L\nAlg L' BL L BL'\nAlg L' BL D' L BL\nAlg L' BL D' L BL'\n\nAlg L D L'\nAlg L D' L'\nAlg R' D R\nAlg R' D' R\nAlg L D L' D'\nAlg L R L' R'\nAlg L' B' L B\nAlg R' D R BL\nAlg L BL' L' BL L'\n\nAlg U L' D L U'\nAlg U B D B' U'\nAlg U L' D' L U'\nAlg U B D' B' U'\nAlg R' D' BL' D R\nAlg U B D' B' U' D\nAlg U B' L B L' U'\nAlg U B D B' U' BL'\nAlg U B D' B' L' D' L U'\n\nAlg F L F'\nAlg F L' F'\nAlg F L F' D\nAlg F L F' D'\nAlg F L' F' BL'\n\nAlg L BL' D BL L'\nAlg L BL' D' BL L'\nAlg F D L D' L' F'\nAlg F L D L' D' F'\nAlg F L' B' L B F'\nAlg F' D' R' D R F\nAlg F D L D' L' F' BL'\nAlg F' R' B' R' B R' F\n\nAlg B D B'\nAlg B D' B'\nAlg L' D L\nAlg L' D' L\nAlg B D B' D'\nAlg B' L B L'\nAlg B D B' D' BL\n\nAlg D\nAlg D'\nAlg D BL\nAlg D BL'\n\nAlg D BL' D BL D'\nAlg D BL' D' BL D'\nAlg B D R D' R' B'\nAlg B R D R' D' B'\nAlg D BL' D BL D' BL\nAlg D BL' D BL D' BL'\n\nAlg D BL D BL' D'\nAlg D BL D' BL' D'\nAlg B' BL' B BR D' BR'\nAlg D BL D BL' D' BL\nAlg D BL D BL' D' BL'\n\nAlg D' BL D\nAlg D' BL' D\nAlg D' BL D BL\nAlg D' BL D BL'\n\nAlg B D' B' BL B D B'\nAlg B D' B' BL' B D B'\nAlg D' BL' D BL D' BL D\n\nAlg B R' B' BL B R B'\nAlg B R' B' BL' B R B'\nAlg L R L' BL' L R' L'\n\nAlg F BL' B' BL F' BL' B\nAlg F' R' F BL F' R F\nAlg F' R' F BL' F' R F\nAlg BR R BR' BL' BR R' BR'\nAlg F L' BL U BL' U' L F'\nAlg F' U' F D F' U F D'\nAlg F BL F' D F BL' F' BL D'\n\nAlg F D F U' F' U D' F'\nAlg F D F' BL F BL' D' F'\nAlg F U D BL' U' BL D' F'\nAlg F U' D F U F' D' F'\nAlg F' BR L F BR' F' L' F\nAlg U R BL' F BL F' R' U'\n\nAlg BL\nAlg BL'\n\nAlg F U BL U' BL' F'\nAlg F BL U BL' U' F'\nAlg U BL BR BL' BR' U'\nAlg BR F BL F' BL' BR'\nAlg F U' F' U BL' U BL U'\n\nAlg F U' F' D F U F' D'\nAlg B' U' F U B U' F' U\nAlg D F U' F' D' F U F'\nAlg BR' U BR D' BR' U' BR D\nAlg D' BR BL' F BL' F' BL BR' BL D\n\nAlg D BL D F' U' B L' BL' L R' BR' R L' BL L B' U F D\nAlg B D BR F' R' BR' R B' F D' BL D B BR' D' B'\nAlg L B' BR' L F BR L' B BR' L U F U' BR' F L BL BR'\nAlg L BL' D' BR' B R' U' R BR B' D BL' L'\nAlg B BR B' D' B D B F' R' B' R BR' B' BR F BR' BL\nAlg L' BL D L' D' L' D L' U' R' F' R U D'\nAlg U' L BL L U' D R' BL B' BL F' BL' B R BL' U D' L U\nAlg L BL BR' L U' D R' F' R BL' U BL D' BR L\nAlg D L' R F' R' L BL' BR BL' B' BL B BR' F BL' F' D'\nAlg B BL B BR' L R' U' R BR L' B\nAlg L B' R' BR B F BL D' BL' D BL' B' F' BR' R U B L'\nAlg D' L' BL F' D' BL' D B F' R' BR R B' F' BL' L D\nAlg B D' R D' R' BL BR' B BR' B' BL' D' BR B R' B' R B' BL' D'\nAlg U' L R' F U L' BL' L B BL' B' BL L U' L' F' R L' U\nAlg F' D BL' BR' BL' BR B' U' F L F' U B D F L U BL' U' L'\nAlg L' U BR' U D R' BL F R BL' U D' BR' L' BL' BR' L'\nAlg U' L' U' D R' BL B' BL F BL' B R BL' U D' L' BL' L' U\nAlg D F BL L' BL' B L' B' L' B L' B' L' BL L BL' F' D'\nAlg F' BR' B BL' BR BL B' F L' F' L B BR' B' BR L' F L BL'\nAlg F' L F' L U' D R' F R U D' L' BL' F L' F\nAlg F U' F' BR F' R' BR' U F' L' BL F' D' BL'\nAlg B BR' U R BR' R' BR U' B' BR\nAlg F' BR' B BR' R BR' BL' BR R' BR BL B' BR F\nAlg L' U BL B' U' BL U BL' B BR BL' BR' U' L\nAlg BR BL' BR' BL L' BL BR BL' BR' L\nAlg U BR' U' BR L' BL BR BL' BR' L\nAlg U' L F BL' F' BL F' BR F BR' L' U\nAlg F L F' BL D F' D' F BL' L'\nAlg U BR' U BR L BL BR BL' BR' L' U\nAlg F BR R BL' F' BL' F R' BL BR' BL F'\nAlg D BL D B U BR' D BR' L' U' BR' U BR L D' BR U' B' D\nAlg U BL' U' BL U BL D L' D BR D' L D BR U BR U D\nAlg B' U F U' B' U F' BR' U' B L B' U BR U' B L' B BL\nAlg B U' B BL U' BL L U' D R' F' R U' D' L' BL' U B\nAlg B L R F D' BR' D F' R' BL' U' L U L' U BL L' B'\nAlg D BL D F' BR' F BL' D R' BR' R F D' BL F' BR D\nAlg L' D F' R' U BR L BL B' BL B BL' BR' L' U' R D' L\nAlg F BL' U D L' U' BR R F' R' BR' U L D BL U' D BL F'\nAlg BR' BL' U' L' BL D F' L' F' L F L U L' D' BR L BL\nAlg B' L' BL U D R' F' R U D' L' BL L U BL' L B\nAlg B BL' L U B' L BL' L B' U' B' L' D L' U' B L' B' D'\nAlg B' R' L U L' R BR BL' B BR' B' BL B' BL' B'\nAlg F L R BL B' U' B R' BL' L' BL F' BL BR' BL L BL' BR L'\nAlg B' U' BL L U D R' F R U D' L' BL' U BL' B' U B'\nAlg U BR BL' BR' D' B D' F' D B' D' F BL' U' BL' F' BL' F D'\nAlg D' BL' D L BL L' D' BL D F' D F D' BL' D' BL D\nAlg B' BL' B' BL L' B' BL' F' D F L F' D' F BL' L BL' B L B\nAlg F BL' U D' BL' D' L' U' BR R F R' BR' U L U' D' BL F'\nAlg U' D' B D F' D' BR' D' BR D BR B' BL' D F BL U BL'\nAlg B BL BR D' BR L' R F R' BR' L D BL' BR' BL' B'\nAlg L' F L' U BR' U' BR L F' BR' L U BR U'\nAlg F' BL' D' BR' BL B' U' BL U B BL' BR D F\nAlg F' D' BR' U R' U BL U' R U' BL' BR D F\nAlg F U' BR F' U' BL' B U F BR' R F' U BL L\nAlg B' BL' U' BL U B BL' B BL BR BL' BR' B' BL\nAlg D' F' U BL U' L F U' F' U L' BL' F D\nAlg F' BL' D' BR' BL BR' F' BR U' B' BR' U R' BR' F'\nAlg B' U' B BL' B U' B BL' L U' L BL' L B\nAlg F' D' F U' F U F' BL F' BL' D F\nAlg F' D BR F' R F R' BR' F D'\nAlg D BL D B BR' D L' BL' L' BL' BR' BL L BL L D' BR B' D\nAlg B L BL L' BL' L' D F' R' BR R D' F L' BL' L' B'\nAlg B BL' F' BL BR D' BR' F D' B' D L F' BL' F L D L D' BL\nAlg B D' BR' D' BR' F D' BL' D' BL D BL F' D BR D' B'\nAlg B D' B U B' D B F' BR' F L' F BR F' L U' B BL\nAlg L BL' B' U BL L' BL L U L' BL' L BL' U' B BL' L'\nAlg U D F' D BR BL' BR' BL B D' F D B' D BR BL BR' U'\nAlg F' D BR L' U' R F' R' U BR' L D BR' BL BR D F\nAlg BR' L BL L' BL' BR BL' F BL' L R BL B' U B R' BL' L' F'\nAlg D BL BR D B F' R' U' BR' U R B' F D' BR' D'\nAlg D' B BR' D L' BL' L' BL' BR BL L BL L D' BR B' D' BL' D'\nAlg B U' R B' BL' B R' U' B BL' B' U' BL B' U' L U L'\nAlg B D' B' D' BR' BL BR D' B' L B BR' U B U' BL' BR BL L' BL'\nAlg B D BR' D' F BL' D' BL' D BL D F' BR D BR D B'\nAlg D' B D F' D' BR' D' BR D BR BL BR' BL' BR B' BL' D F\nAlg L BL B' U BL L' BL L U' L' BL' L BL' U' B BL L'\nAlg B' U B' D' B U' B' D BL' U BL' U' BL' B' U BL' U'\nAlg D' BR' B' L' U L' B' U B L U' L B BR D BL\nAlg L' D L' F U' F' L D' L' F U BR F' L F BR' F' L BL'\nAlg D BR D B F' R' U' BR U R B' F D' BR' BL' D'\nAlg BR BL D F BR' BL BR BL' BR F' BR' D' BL' BR'\nAlg BR' U' L' BL F' BL' F L BL' U BL BR\nAlg D' BR' B' U BR U' BL U' BL' U BR' B BR D\nAlg F U BR' U R U' BR B U' F' BL U' L' U BL' B'\nAlg B U' L F BR F' L F' BR' F L U B'\nAlg BR BL F BL' L F' BR' BL' F BL L' BL' F' BL\nAlg U' BR' L BL' BR L U' BR' U L' BL L' U' BR U'\nAlg L' F L' U BR' U' BR L F' L BL' BR BL BR'\nAlg F' D' BR' BL U R' U BL' U' R U' BR D F\nAlg F' BR' B F' U F BR U' BR' B' F BL BR BL'\nAlg L B' U' R' BR B F BL D' BL D BL' B' F' BR' R B L'\nAlg B F BL B L F BR' R' BL U' R BL' BR' F' L' F' BR' B\nAlg U BR F' D F BR' U' L' BL L' BL' L U L B' BL L' B U'\nAlg F' L B F BL B R U' R' B' BL' B' F' L BL L F\nAlg D BL D B BR' D BR' D' BR D BR BL BR' BL' D' B' D\nAlg D' BR' BL B BR B' BL' D BL D' B' BL B BR' BL' BR D\nAlg D F' U BR U' L U' BR' U L' D B D' F D B' D BL\nAlg L B BL' B L F R U' R' F' L' B' BL B' L' BL'\nAlg B D' B U B' D F' BR F L' F BR' F' L B U' B BL\nAlg B' BL L B' L' B' L B' BR' R' U' R BR L'\nAlg D' F' U' B L' BL' L R' BR R L' BL L B' U F D' BL' D'\nAlg B' F' BL' B' F U D' R BR R' BL U' BL' D B'\nAlg F' BL' D BL F BL' D' B' U' B D F' D' B' F U B\nAlg F' L' BL' L' B F BL B R U R' B' BL' B' F' L' F\nAlg L' BL U' D F D' BL' D BL F' BL' D' BL D F' U D' BL L\nAlg B' BR L R' U R BR F L' B' BL' B L F' BR L' B\nAlg B' L B' BR' B L' B' D F' U F D' F U' F' BR B' BL'\nAlg B' BR D' BL' BR' BL B L' R' L' R BR L D L BL BR' B BL\nAlg L' D F' L F L' F D' L' BL' L' D BL' BR' BL' BR BL' D'\nAlg B' F BR F BR L R' BL U R BL' BR L' B' BL' B' F\nAlg F L' F' BR' B BR' F' BR B' BR' F' L F' BR'\nAlg BR' B' BR BL' D' BR D BR' BL B\nAlg L' F L' U BR' U' L U' BR U F' L\nAlg F U' BR' R U' BR BL BR' U' BL' U' R' F' BR U\nAlg B' BR' R' U' BL D' BL U BL' D R BL' BR B\nAlg D BR' U' L BL' F' BL F L' BL U BL' BR D'\nAlg F' BL' D' F BR' BL BR BL' BR F' BR' D BL F\nAlg F' BR' BL' BR D' F' BR F BR' D BL F\nAlg F' BR R' BR BL' BR' R BR' BL F\nAlg B BR F' BR' B' F BL F BL' F'\nAlg B D' B U B' D BL' F R' F BL F' R B F' U' B BL\nAlg L BL' B' U L U L BL L B' BL B' U' BL' U' B' L' BL\nAlg L' BL' U' D F D' BL' D BL F BL' D' BL D F' U D' BL' L\nAlg F' L F' BL' D' BR' B R' U' R BR B' D BL' F L' F\nAlg U D' BR' D BR' U' L U BR L' D' BR D L U' L' BL\nAlg B' BR' B' BL B L F' BR' R' U' R BR F BR L' B\nAlg U' F' D BR' F' BR D L D L' U D' B D' B' F D' BL F\nAlg B F BL B F' L F BR' R' BL U' R BL' BR' F' BR' L' B\nAlg F' D' BL B BR' BL BR BL' BR' D' BR' D BR D F D' B' D\nAlg B' BR' B' BL B L F BR' R' U' R BR F' BR L' B\nAlg L' F BR L' R' BR BL' BR' R BR' BL B' L F' L' B L' BL'\nAlg B' U' BL' U D' BL' D F L' R U R' F' L U' BL U B\nAlg D' B D BL BR BL' BR' D' BR' D BR D' BR B' D' BL' D'\nAlg B' BR' L F' BR' R' U R BR F L' B' BL' B BR B\nAlg L U L' D' BR' D L U' L' U D' BR D BR BL BR' BL' U' BL'\nAlg F' L F' BL D' B BR' R' U R B' BR D BL F L' F\nAlg B' L B' BR' B L' F' R F' BL F R' F BL' B' BR B' BL'\nAlg F' L BL' BR' R' BL U R BR B L' B L B L' F BL' B\nAlg L' F D' BR U' BR' D BR' U BR L' B' L F' L' B L' BL'\nAlg B' BR' L F BR' R' U R BR F' L' B' BL' B BR B\nAlg L F' D' F BR' BL BR BL' BR F' BR' D F L'\nAlg F' BL' D F BL' F' BL D' BR' BL BR F\nAlg B' BR' R' BL D' BL U' BL' D BL' U R BR B\nAlg B' L BL' BR BL L' B' F BL F' BL' B BR' B\nAlg F U' BR' R BR F' U BL L U BL' B U'\nAlg B' BR B' BL F BL' B F' L BL' BR' BL L' B\nAlg U' L BL' U' R U' BL' U R' U BL' L' U\nAlg F U' BR' R' F' BR' F BL BR R BL' F' BR U\nAlg B U' L' F' BR F L' F BR' F' L' U B'\nAlg F' BR' B' F BR' BL' BR F BL B F' BL BR BL'\nAlg B BL' U' L U BL' B' BL' B' L' BL U B' U' BL L BL L\nAlg B R' U' B U R B' BR F D' B' D BL F' BL' BR' BL\nAlg U BL U' B BL U BL U' BL D' B U B' D B U' B\nAlg B BL B BL' B BR B' BL BR' R' L U' L' R B\nAlg U' L BL' B BL B' L' F U B' R U R' U F' U B BL\nAlg F' BL' D' BR' L' B' L B BL BR BL' B' L' B L D BL F BL\nAlg L B' L' F U B' R BR B BR' R' BR BL' BR' BL B U' F' BL\nAlg D' F BL B BR' B BR B' BL' D BL D' B' F' D\nAlg B' L' BL F U F' L' U B U' L F U' F' BL' L BL' B BL B\nAlg D BL D B U F' R' BR' R F U' B' D\nAlg B BR B' D' BL BR D BR D B' BL' B D BR' BL' D' BL' D'\nAlg B' R BR B' BR' R' B U' F' L B L' BL' F BL U BL'\nAlg U BR BL' BR' D' B D' F' D B' BL' BR BL BR' D' F U' D'\nAlg U' D' BR' U' BR' D' L' D BR' D' L D' BL' U' BL' U BL U'\nAlg L' F' BR F' R F' R' L F' BR' D L BL' L' BL D' F BL'\nAlg B D BL' D B U R BR R' U' B' D' BL D' B' BL\nAlg B' U L' U B BL L' F' BL F D' B' U B D B' L B L'\nAlg L BL' B' U L F R U' R' F' U L F' L B L' F\nAlg L' D R' U BR L BL B' BL' B BL' BR' L' U' R F D' L\nAlg D' B U F' R' BR R F U' B' D' BL' D'\nAlg B D BL' B' U' BL L' D L D' BL' U B BL B' D'\nAlg B U' BL' U' F U' B U B' F' U BL U' B U' B\nAlg U BR' U L BL' L U' BR U BR' L' BL BR L' U\nAlg F' D' BR' BL B' U' BL' U B BL' BR D BL F\nAlg B' L' B' F BL' F' BL F' BR F BR' B L B\nAlg F' BL' D' BR F' BR' F D BR' BL BR F\nAlg F D' F' U' F' D' BR D F' D' BR' D' F' U\nAlg BR' BL' U' BL L U' F U F' L' U BR\nAlg F BR R U' BR B U BR' F BR BL' BR D BL F\nAlg F' BR' F U' BL L' U BL' B' F' BL' BR D' BL F\nAlg B' U L' B' U L' D F L F' D' L U' B L U' L B L'\nAlg B BL B L F BR' R' U' R BR F' L' B\nAlg B D' B BR' R' U' B' U R BR U' D' F L' F' U L' D' L\nAlg L U' L' U B BL' U B BL B' U R B' BL B R' U B'\nAlg D F' D BL U' R U' BL' U R' U B D' F D B' D BL\nAlg B BL U B BR' L R' F' U' F R BR L' B' U' B'\nAlg B' U' B F' D F D' B' U B D BL F' BL' D' BL F\nAlg B D BR B F' U' R' BR' R U B' F BR' D' BL B'\nAlg L B' F R BL' U' R' BL B F' L U BR' U' BL L U BR U'\nAlg F' L F' BL L U' D R' F' R U D' L' F L' F\nAlg L U L' F' BL' F L B BL' U BL' U' BL B' BL L U' L\nAlg B' L F BR' R' U R BR F' L' B' BL' B'\nAlg U BR' U' L' U' BR' F' BR F BR D R' F R U D' L' BL' L'\nAlg B L BL L F' D R' BR' R F D' L BL L BL' L' B'\nAlg F' BL' D F' D' B D' B' U' D L D BR' L' F BR D' F U\nAlg B U B BR' L R' F' U F R BR L' B' U' BL' B'\nAlg U B' L BL' B L' U' L' BL L BL' L U BR F' D' F BR' U'\nAlg B BL' D BR B F' U' R' BR R U B' F BR' D' B'\nAlg B BR B F BR' U BL' L R BR' R' L' F' U BR U BL B BL'\nAlg B' BR' L R' U R BR L' B' BL' B'\nAlg B' U BR' R L F' BR' F L' R' BR U' B' BR B'\nAlg F' BL' F' BR R U' BR B F BR BL' D F U BL'\nAlg F' BR' B' U BR' F BR' F' BR U' BR B BR F\nAlg BR' BL' U' BL L' F' BL F BL' L U BR\nAlg U' L BL U' R U' BL U R' U BL L' U\nAlg F BR' F' U' L F BR U F' U' L' BL U BL'\nAlg L' F U' BR' U L' U BR U' L F' L\nAlg F' BR' B' U' BR' U F BR B U' BL U BR BL'\nAlg F' BR' U BR D' BR U' BR' D F\nAlg F BL' BR R BL' F' BL F R' BL BR' F'\nAlg L BL' B BL' U BL U' BL B' L' F' BL F L U' L U L\nAlg B F BL B F' L F' BR' R' BL U' R BL' BR' F BR' L' B\nAlg F BL B' F' BR B' BR' B L F BL B' BR B BL' BR' F' L' B\nAlg B F D' BL U R BL' BR' R' U' D B F' BL B\nAlg L B' U B' BR B BR U' BR' B L' F BL' B F' BR' B' BL'\nAlg U' L R' F L U L' BL' B BL B' L' BL L U' F' R L' U\nAlg BR BL F BL' F' L' F' BR' L B BR B' L' F L B BR' B' BL\nAlg B' BR' L F L' B' BL B L F' BR' R' U' R BR' L' B\nAlg D L U' BR U L U' R BL' F' R' F BL F' BR' U L D BL D\nAlg B F BL B F BR' L R' BL U' R BL' BR' L' F BR' B\nAlg L B' L' U L' B' U L' D F L' F' D' L U' B L U' B\nAlg B' BR L F' BR R' BL U R BL' BR F L' B' F BL' B' F'\nAlg B' BL L B L' B' BL' L' U BL' U R' L' R U' BL U' L B\nAlg B U' D' F D B BL' B' U D' R BR R' U' F' U D B'\nAlg D F L F' L' F R L' BL B L B' BL' L R' F' L D'\nAlg L BL D' B BR' R' U R B' BR D BL L'\nAlg D F D' B' U' B U' D F' D' F U B' U B F' BL'\nAlg D' BR' BL BR B' BL' B D BL' D' BL B BR' B' BL' BR D\nAlg U BR' U' L U R' L R BR L' B' L' B L U' L' BL'\nAlg BR' L R' U R BR B L' B L B L' BL' B\nAlg B BR' B U BR' R L F' BR F L' R' BR U' B\nAlg F' L B' BR' B L BL' L' B' BR B L BL L F\nAlg D F U' F' U D' BR U' D' F U F' D BR'\nAlg B' BL' BR D' BR' D BL BR' B BR\nAlg B BL U' BR' L U BR' F' BL D BL BR F BR\nAlg L' U BR BL BR' B' BL U' BL' U B BL' U' L\nAlg U B' BL U' L' BL' U' F BR' R' BR U F'\nAlg D BR' BL U' BL' L F' BL' F BL L' U BR D'\nAlg BR L' BL BR' BL' L BL' BR BL BR'\nAlg F BL F' BL' B F' BR F BR' B'\nAlg D BR L' U' R F' R' U BR L BL B' BL B BL' BR D'\nAlg D' BL' D BL D F' D' F D' BL' D L BL' L' D' BL D\nAlg B F D' F' U' BL' B U B' BL F D B U' B' U B' F' BL\nAlg B U F' D' R BR' R' U' D B BL B' U F U' B'\nAlg B BL B L B BR' F BR B' BR' R' U' R F' BR L' B\nAlg B BL B L F' U' F' U F BR' R' U' R BR' F BR' L' B\nAlg B' U' B F' D F D' B' U B U' D BL' F' BL D' F U BL\nAlg L F' BR B' F' R BL' U' R' BL B F' BR L BL BR L\nAlg D F' D' BL F' D' F R BL B' L U L' B R' F' BL' D F\nAlg B BL BR BL D' BR L' R F' R' BR' L D BR' BL' B'\nAlg B' L B' BR' B L' BL' U BL U' B' BR B' U BL' U'\nAlg D' B BR' F BL' F' D BR D' BL F' BR B' F D' BL' D'\nAlg B D F' L' R F D BR' D' F' R BR' L D B' BL' D' F D'\nAlg D L BL' F' R U R' B F' L BL' L' B' F' BL L' D'\nAlg B' BR' L F R' U R BR B BR' F' BR B' L' B' BL' B'\nAlg D L F BL F L BL' L D' BL' D' F' D' F' L BL D' BL'\nAlg D F BL F' BR B' BL' B BL BR' BL L' R F R' L D'\nAlg L BL' B' L B L B' L F R U R' B F'\nAlg F' D' BL F R B' L U' L' B R' BL' F' D F BL' D F D'\nAlg B' L' BL U' D' L' BL' L U' D R' F R U' BL' L B\nAlg L' F L' BL U' BL' U L F' L U' BL U BL'\nAlg D' F' BL L U' F U F' L' U BL' U' F D\nAlg B' U F D F' U F D' F U B U' F U\nAlg U B' BR' U R' U' R BR U' B\nAlg F' BL' D F BL F' BR F' BR' F BL' D' BL F\nAlg F' BR' BL' BR D BL' F BL F' D' BL F\nAlg U' F R F' BL' F R' F BL F U\nAlg F' BR F BR' L BL' BR' BL BR L'\nAlg F U' B F U' BR U BR' U F' U' B' U F'\nAlg D F' BR R F' R' F BR' D' F\nAlg B D' B U B' D B U' B BR BL BR' D BL BR BL BR' BL D'\nAlg B' U' L' D' F D' L' F' L D F' D L U B BL'\nAlg D L' F R L' BL B L' B' BL' L R' F' L F L' F' D'\nAlg D L' D' BL D F' D F D' BL' L BL D'\nAlg D' B R U' B' F' BL' L BL L' BL B F U R' BR' B' D\nAlg D L BL' F L BL L' B' F R U' R' B F BL L' D'\nAlg D F' BL F BL U BL F' D B D' F D B' D BR BL BR' U'\nAlg B F' BL B F' BR' F' L F R' U' R BL' BR BL F' L' B\nAlg L F BR B' D BL D' R U' R' D BL' D' B BR' F' L BL L\nAlg B F BL B F' BR' L R' U' R BL' BR BL L' B\nAlg D' B U BR' D BR' L' U' BR U BR L D' BR U' B' D' BL' D'\nAlg F' D' BR' BL' BR D' BR L' U' R F R' U BR' L D' F\nAlg D F U D' BL U' B D' F BR F' D' F' D BR' D B' BL\nAlg B U' D' F D BL' D' BR D' BR' D BL B' BL' B F' U D B'\nAlg L' BL' L' F BR B' D BL D' R U R' D BL' D' B BR' F' L'\nAlg B U F' U' B BL' B' U D' R BR R' D F U' B'\nAlg B L BL' U' L U' L' U R BL F D' BR D F' R' L' B'\nAlg B' L B' BR' B L' F' BL F BL' B' BR B' F U' F' U BL'\nAlg D' B BR R U' B' F' BL' L BL' L' BL B F U R' B' D\nAlg B BL' U' B BL' B D B D' B D B D' BL B' U BL B'\nAlg U BR' U' BR L' F BR' L' U BR U' L F' L\nAlg L' U BR BL BR' B U BR' U' BR B' BL' U' L\nAlg BR BL D BR' BL' L BL' BR BL L' BL D' BL' BR'\nAlg F' BL' D' BR' D BL BR' B U BR U' B' BR F\nAlg F U' F' D F' U' B' U F' U' B U' F' D'\nAlg B' U BR' R' U R U' BR B U'\nAlg L U BL U' BL' L' BL L' F' BL' F BL L BL'\nAlg U B' BL' BR' U F' BR' D' F BR' U BL' L' BL'\nAlg F BL' L' F' BL D' F' BR U' R' F' U F' BR'\nAlg U B U' BL L U' L' U BL' B'\nAlg U BL U' B BR' B U BL' U' BL L B' BR B L' B\nAlg B BL B L F' U' F U F BR' R' U' R BR' F' BR' L' B\nAlg B BR D L' D' F' D F D' F' D' F D' BR' L D' B D B\nAlg F' L B' L' F L' U' F R U R' F' L' U' B BL L'\nAlg B' L' F U F L' F R U' R' U L F R U R' U B F' BL\nAlg B U F' D' F' U R BR' R' U' F D B BL B' F U' B'\nAlg F BL U BL' U' F' BL L U' L D BR L' U L U' BR' U D' L\nAlg B U' D' B' F BL B BL' D' BR D BR' D BL D' F' U D B'\nAlg B BL' D' B' D B BL D BR' BL BR' R D R' BR BL' BR D' B'\nAlg B F U' F' D' F' U' R BL' BR' R' BL U' F D B BL B\nAlg D BR' BL B' BL' B BL' BR' L' U' R F R' U BR' L D'\nAlg B' F' U' F' BL' D' B BR' R' U R B' BR D F U B F\nAlg B' D' B' D BR L' D F' D F D F' D' F D L D' BR' B'\nAlg D' B F D BL' D' BL B BR' B' BR B' BL' F' D\nAlg B D B' F BL L' BL' F' L BL L' BL' BR L R L' R' BR' L' D'\nAlg B U B F' BL' B' D' F' U R BR R' U' F D F U' B'\nAlg BR BL' L' F' BR U F' U' BR L' B' BR' L F' BR L' B L'\nAlg D BL' L' BL D F' D' F D' BL' D L D'\nAlg F' BL' B F U' B U B' D' F' BL' B U' B' BL U F D B'\nAlg B' F' L BL' BR' R' BL U R BR L' B' F BL' B'\nAlg BR BL' BR' BL L' F L' BL' BR BL BR' L F' L\nAlg B BL BR' F U' L F U BR' F BL D BR' BL\nAlg B' BL' B' U BR' U' BR BL' BR BL BR' B BL B\nAlg BR' U' L F U' F' U L' BL' U BL BR\nAlg B U BR R' BR U' B' BR U' B' U BR' R' BR\nAlg B BR BL L BL BR' BL' L U' BL' U BL L BL' B'\nAlg F' BR' B BL' BR' R BR' BL BR R' BR B' BR F\nAlg F' BR' B U BR' U' B' BR BL' D' BR D BL F\nAlg D' F' BR U' R' F' U F' BR' F BL' L' F' BL\nAlg B BL U' L U L' BL' U B' U'\nAlg L' F' R B F' BR L' D' F' D BR' L B' F R' F BL L\nAlg D F BL L' BL' B L B' L B L B' L BL L BL' F' D'\nAlg B BL B BR' L R' U' R BR L' B U BR' U' BR BL' BR BL BR'\nAlg B' F R U' R' F' L' B L' B' L' B BL L'\nAlg B' L' F D R' F' L' U L F R' U D' L' B BL L F' L\nAlg D' L' BL F R' BR' R B' F D' BL D B F BL' L D\nAlg B' BR' R' U' BL' U' L R' F R F' L' R U' BL BR B BL\nAlg BR L BL BR L U' D R' BL F' R BL' U' D' BR U' L\nAlg BR L B' L F R F U F' U' R' L' B L F' BR' L BL\nAlg B F U D' R BL' BR' R' BL U' D B F' BL B\nAlg L' BL L' D B D' BL' B' D' L R' D R BL' U' L U BL'\nAlg L' D BL' U' R' BL F R U D' BR L' BL' BR' L'\nAlg U BR' U' L' BL' U BR U' L' B' F R BL' U R' BL B F' L'\nAlg BR L' BL' L' B' F R BL' U R' BL B F BR F BR L'\nAlg B' F' L F BR BL B' BR' B BL' F' L' B' BR B BR' B F BL'\nAlg B D BR B' D' BL' D B F' R' BR R F BR' D' B'\nAlg D BL' L' BL' L BL L' BL F' BL' L' F L BL F BL' L D'\nAlg U' D R' F R U L D' L D L D' BL' L\nAlg U D' BR D' L' D R F BR F' BR' R' BR' D' L U' D' BL'\nAlg B' F' BR' L R' BL U R BL' BR L' B' F BL' B'\nAlg L' F BL' F' BL F' BR F BR' L\nAlg L BL F' D F D' BL' F L' F'\nAlg F' D' BR U BR' D BR' U' BR F\nAlg BR' L BL' BR BL BR L' F' BR' F\nAlg B BR F BR' B' BR F' R' BR' BL' BR R BR' BL\nAlg BR' B U BR' R BR R' U' BR B'\nAlg F' BL' BR R' BR BL BR' R BR' F\nAlg BR L' BL BR' BL' BR' L U BR U'\nAlg U BR' U' BR BL' BR BL BR'\n`,\n );\n}\n", "/* Redi cube scramble generator */\n// From https://torchlight.github.io/rediscrambler.js\n// Added to `cubing.js` under the GPL license by permission from the author (@torchlight/xyzzy).\n\n\"use strict\";\n\nimport { Alg } from \"../../alg\";\nimport { randomUIntBelowFactory } from \"../random-uint-below\";\n\nfunction counter(A) {\n let counts = [];\n for (let a of A) {\n counts[a] = (counts[a] || 0) + 1;\n }\n return counts;\n}\n\n/* Combinatoric functions */\n\nfunction factorial(n) {\n if (n < 2) {\n return n;\n }\n let f = 1;\n for (let i = 2; i <= n; i++) {\n f *= i;\n }\n return f;\n}\n\nfunction C(n, k) {\n if (k < 0 || k > n) {\n return 0;\n }\n if (k === 0 || k === n) {\n return 1;\n }\n let c = 1;\n for (let i = 0; i < k; i++) {\n c = ((c * (n - i)) / (i + 1)) | 0;\n }\n return c;\n}\n\nfunction permutation_to_index(perm) {\n perm = perm.slice();\n let n = perm.length;\n let f = factorial(n - 1);\n let ind = 0;\n while (n > 1) {\n n--;\n // invariant: f === factorial(n)\n // also, perm stores meaningful values up to perm[n]\n let e = perm[0];\n ind += e * f;\n for (let i = 0; i < n; i++) {\n let x = perm[i + 1];\n perm[i] = x - (x > e);\n }\n f /= n;\n }\n return ind;\n}\n\nfunction index_to_permutation(ind, n) {\n let perm = [];\n let f = factorial(n - 1);\n for (let i = 0; i < n; i++) {\n perm[i] = (ind / f) | 0;\n ind %= f;\n f /= n - 1 - i;\n }\n // could probably use some kind of binary tree to make this linearithmic, but I am hella lazy.\n for (let i = n - 2; i >= 0; i--) {\n for (let j = i + 1; j < n; j++) {\n perm[j] += +(perm[j] >= perm[i]);\n }\n }\n return perm;\n}\n\nfunction permutation_parity(A) {\n let n = A.length;\n let parity = 0;\n // again, there is a linearithmic algorithm to count inversions, but >lazy\n for (let i = 0; i < n - 1; i++) {\n for (let j = i; j < n; j++) {\n if (A[i] > A[j]) {\n parity ^= 1;\n }\n }\n }\n return parity;\n}\n\nfunction index_to_evenpermutation(ind, n) {\n let perm = [];\n let f = factorial(n - 1) / 2;\n let parity = 0;\n for (let i = 0; i < n - 1; i++) {\n perm[i] = (ind / f) | 0;\n ind %= f;\n f /= n - 1 - i;\n }\n perm[n - 1] = 0;\n for (let i = n - 2; i >= 0; i--) {\n for (let j = i + 1; j < n; j++) {\n if (perm[j] >= perm[i]) {\n perm[j]++;\n } else {\n parity ^= 1;\n }\n }\n }\n if (parity === 1) {\n [perm[n - 2], perm[n - 1]] = [perm[n - 1], perm[n - 2]];\n }\n return perm;\n}\n\nfunction evenpermutation_to_index(perm) {\n return permutation_to_index(perm) >> 1;\n}\n\nfunction comb_to_index(l) {\n let bits = l.length;\n let ones = 0;\n for (let i = 0; i < bits; i++) {\n ones += +(l[i] === 1);\n }\n let zeros = bits - ones;\n if (zeros === 0 || ones === 0 || bits === 1) {\n return 0;\n }\n let b = C(bits - 1, ones);\n let ind = 0;\n for (let i = 0; zeros > 0 && ones > 0 && bits > 1; i++) {\n bits--;\n if (l[i] === 0) {\n b = (b * --zeros) / bits;\n } else {\n // l[i] === 1\n ind += b;\n b = (b * ones--) / bits;\n }\n }\n return ind;\n}\n\nfunction index_to_comb(ind, ones, bits) {\n let zeros = bits - ones;\n let b = C(bits - 1, ones);\n let l = [];\n let n = bits - 1;\n for (let i = 0; i < n; i++) {\n bits--;\n if (ind < b) {\n l.push(0);\n b = (b * --zeros) / bits;\n } else {\n l.push(1);\n ind -= b;\n b = (b * ones--) / bits;\n }\n }\n l.push(ones);\n return l;\n}\n\nfunction compose(A, B) {\n let C = [];\n for (let i = 0; i < B.length; i++) {\n C[i] = A[B[i]];\n }\n return C;\n}\n\nfunction permutation_from_cycle(cycle, n) {\n let perm = [];\n for (let i = 0; i < n; i++) {\n perm[i] = i;\n }\n for (let i = 0; i < cycle.length; i++) {\n perm[cycle[i]] = cycle[(i + 1) % cycle.length];\n }\n return perm;\n}\n\nfunction unsparsify_list(d, n) {\n let l = Array(n).fill(0);\n for (let k in d) {\n l[k] = d[k];\n }\n return l;\n}\n\nfunction compose_state(state1, state2) {\n let o = Array(8).fill(0);\n for (let i = 0; i < 8; i++) {\n o[i] = (state1[1][i] + state2[1][i]) % 3;\n }\n return [compose(state1[0], state2[0]), o];\n}\n\nlet move_UL = [\n permutation_from_cycle([0, 1, 4], 12),\n unsparsify_list({ 0: 2 }, 8),\n];\nlet move_U = [\n permutation_from_cycle([1, 2, 5], 12),\n unsparsify_list({ 1: 2 }, 8),\n];\nlet move_UR = [\n permutation_from_cycle([2, 3, 6], 12),\n unsparsify_list({ 2: 2 }, 8),\n];\nlet move_F = [\n permutation_from_cycle([3, 0, 7], 12),\n unsparsify_list({ 3: 2 }, 8),\n];\nlet move_L = [\n permutation_from_cycle([9, 8, 4], 12),\n unsparsify_list({ 4: 2 }, 8),\n];\nlet move_B = [\n permutation_from_cycle([10, 9, 5], 12),\n unsparsify_list({ 5: 2 }, 8),\n];\nlet move_R = [\n permutation_from_cycle([11, 10, 6], 12),\n unsparsify_list({ 6: 2 }, 8),\n];\nlet move_D = [\n permutation_from_cycle([8, 11, 7], 12),\n unsparsify_list({ 7: 2 }, 8),\n];\n\nlet solved = [index_to_permutation(0, 12), Array(8).fill(0)];\n\nlet moves = [move_UL, move_U, move_UR, move_F, move_L, move_B, move_R, move_D];\nlet move_names = [\"UL\", \"U\", \"UR\", \"F\", \"L\", \"B\", \"R\", \"D\"];\nlet tetrad = [0, 1, 0, 1, 1, 0, 1, 0];\n\nfunction apply_move_sequence(state, move_sequence) {\n for (let [m, r] of move_sequence) {\n for (let i = 0; i < r; i++) {\n state = compose_state(state, moves[m]);\n }\n }\n return state;\n}\n\nfunction stringify_move_sequence(move_sequence) {\n let suffixes = [\"0\", \"\", \"'\"];\n let s = move_sequence.map(([m, r]) => move_names[m] + suffixes[r]);\n return s.join(\" \");\n}\n\nfunction print_move_sequence(move_sequence) {\n console.log(stringify_move_sequence(move_sequence));\n}\n\nfunction generate_random_state(randomUintBelow) {\n let p = index_to_evenpermutation(\n Math.floor(randomUintBelow(factorial(12)) / 2),\n 12,\n );\n let o = Array(8);\n for (let i = 0; i < 8; i++) {\n o[i] = randomUintBelow(3);\n }\n return [p, o];\n}\n\nfunction generate_random_state_scramble(randomUintBelow) {\n return solve(generate_random_state(randomUintBelow));\n}\n\nfunction generate_scramble_sequence() {\n return stringify_move_sequence(generate_random_state_scramble());\n}\n\nfunction solve(state) {\n let phase1_indices = index_phase1(state);\n let phase1_mtables = [\n generate_phase1_edge_mtable(),\n generate_phase1_separate_mtable(),\n ];\n let phase1_ptables = [\n generate_phase1_edge_ptable(),\n generate_phase1_separate_ptable(),\n ];\n let phase2_mtables = [\n generate_phase2_edge_mtable(),\n generate_phase2_corner_mtable(),\n ];\n let phase2_ptables = [\n generate_phase2_edge_ptable(),\n generate_phase1_corner_ptable(),\n ];\n\n let phase1gen = ida_solve_gen(phase1_indices, phase1_mtables, phase1_ptables);\n let best = undefined;\n let intermediate_states = new Set();\n let start_time = +new Date();\n for (let i = 0; i < 25; i++) {\n let { value: sol1, done } = phase1gen.next();\n let new_state = state;\n for (let [m, r] of sol1) {\n for (let i = 0; i < r; i++) {\n new_state = compose_state(new_state, moves[m]);\n }\n }\n if (intermediate_states.has(new_state.toString())) {\n // console.log(\"skip\");\n continue;\n } else {\n intermediate_states.add(new_state.toString());\n }\n let edge_ind = evenpermutation_to_index(new_state[0].slice(0, 8));\n let corner_ind = 0;\n for (let i = 0; i < 4; i++) {\n corner_ind += new_state[1][i] * 3 ** i;\n }\n let phase2_indices = [edge_ind, corner_ind];\n //let sol2 = [];\n let moves_left = best ? best.length - sol1.length - 1 : 999999;\n let sol2 = ida_solve(\n phase2_indices,\n phase2_mtables,\n phase2_ptables,\n moves_left,\n );\n if (sol2 === undefined) {\n // console.log(\"prune\");\n continue;\n }\n // console.log(\n // `to ${new_state} in ${sol1.length} moves; total move count ${\n // sol1.length + sol2.length\n // }`,\n // );\n if (best === undefined || best.length > sol1.length + sol2.length) {\n best = sol1.concat(sol2);\n }\n // bail if we've spent too much time\n if (new Date() - start_time > 300) {\n break;\n }\n }\n return best;\n}\n\nfunction index_phase1(state) {\n let edge_ind = 0;\n for (let i = 0; i < 4; i++) {\n edge_ind += state[0].indexOf(i + 8) * 12 ** i;\n }\n let corner_ind = 0;\n for (let i = 0; i < 4; i++) {\n corner_ind += state[1][i + 4] * 3 ** i;\n }\n let filtered = state[0].map((x) => Math.max(-1, x - 8));\n let separate_ind =\n comb_to_index(filtered.map((x) => +(x >= 0))) * 2 +\n permutation_parity(filtered.filter((x) => x >= 0));\n return [edge_ind, corner_ind + 81 * separate_ind];\n}\n\nlet tables = {};\n\nfunction generate_phase1_corner_mtable() {\n if (tables.phase1cm) {\n return tables.phase1cm;\n }\n let mtable = [];\n for (let i = 0; i < 81; i++) {\n mtable[i] = Array(8);\n let o = [\n i % 3,\n Math.floor(i / 3) % 3,\n Math.floor(i / 9) % 3,\n Math.floor(i / 27),\n ];\n mtable[i][0] = mtable[i][1] = mtable[i][2] = mtable[i][3] = i;\n for (let j = 0; j < 4; j++) {\n o[j] = (o[j] + 2) % 3;\n mtable[i][4 + j] = o[0] + o[1] * 3 + o[2] * 9 + o[3] * 27;\n o[j] = (o[j] + 1) % 3;\n }\n }\n return (tables.phase1cm = mtable);\n}\n\nfunction generate_phase1_corner_ptable() {\n if (tables.phase1cp) {\n return tables.phase1cp;\n }\n let ptable = Array(81);\n for (let i = 0; i < 81; i++) {\n let o = [\n i % 3,\n Math.floor(i / 3) % 3,\n Math.floor(i / 9) % 3,\n Math.floor(i / 27),\n ];\n ptable[i] = (o[0] !== 0) + (o[1] !== 0) + (o[2] !== 0) + (o[3] !== 0);\n }\n return (tables.phase1cp = ptable);\n}\n\nfunction generate_phase1_edge_mtable() {\n if (tables.phase1em) {\n return tables.phase1em;\n }\n let mtable_single = [];\n for (let i = 0; i < 12; i++) {\n mtable_single[i] = [];\n for (let m = 0; m < 8; m++) {\n mtable_single[i][m] = moves[m][0].indexOf(i);\n }\n }\n let mtable = Array(12 ** 4);\n for (let i = 0; i < 12 ** 4; i++) {\n mtable[i] = Array(8);\n for (let m = 0; m < 8; m++) {\n let I = 0;\n for (let j = 0; j < 4; j++) {\n I += mtable_single[Math.floor(i / 12 ** j) % 12][m] * 12 ** j;\n }\n mtable[i][m] = I;\n }\n }\n return (tables.phase1em = mtable);\n}\n\nfunction generate_phase1_edge_ptable() {\n if (tables.phase1ep) {\n return tables.phase1ep;\n }\n return (tables.phase1ep = bfs(generate_phase1_edge_mtable(), [\n 8 + 12 * (9 + 12 * (10 + 12 * 11)),\n ]));\n}\n\nfunction generate_phase1_separate_mtable() {\n if (tables.phase1sm) {\n return tables.phase1sm;\n }\n const C12_4 = C(12, 4);\n let mtable_c = [];\n for (let i = 0; i < C12_4; i++) {\n mtable_c[i] = [];\n let comb = index_to_comb(i, 4, 12);\n let perm = [];\n for (let j = 0, k = 0; j < 12; j++) {\n if (comb[j] === 0) {\n perm[j] = -1;\n } else {\n perm[j] = k++;\n }\n }\n for (let m = 0; m < 8; m++) {\n let new_perm = compose(perm, moves[m][0]);\n let new_comb = compose(comb, moves[m][0]);\n let parity = permutation_parity(new_perm.filter((x) => x >= 0));\n mtable_c[i][m] = comb_to_index(new_comb) * 2 + parity;\n }\n }\n let mtable_co = generate_phase1_corner_mtable();\n let mtable = [];\n for (let j = 0; j < C12_4; j++) {\n for (let i = 0; i < 81; i++) {\n let m0 = (mtable[i + 81 * (2 * j)] = []);\n let m1 = (mtable[i + 81 * (2 * j + 1)] = []);\n for (let m = 0; m < 8; m++) {\n m0[m] = mtable_co[i][m] + 81 * mtable_c[j][m];\n m1[m] = mtable_co[i][m] + 81 * (mtable_c[j][m] ^ 1);\n }\n }\n }\n return (tables.phase1sm = mtable);\n}\n\nfunction generate_phase1_separate_ptable() {\n if (tables.phase1sp) {\n return tables.phase1sp;\n }\n return (tables.phase1sp = bfs(generate_phase1_separate_mtable(), [0]));\n}\n\nfunction generate_phase2_corner_mtable() {\n if (tables.phase2cm) {\n return tables.phase2cm;\n }\n let phase1_mtable = generate_phase1_corner_mtable();\n let mtable = Array(81);\n for (let i = 0; i < 81; i++) {\n mtable[i] = phase1_mtable[i].slice(4, 8);\n }\n return (tables.phase2cm = mtable);\n}\n\nfunction generate_phase2_edge_mtable() {\n if (tables.phase2em) {\n return tables.phase2em;\n }\n const n = 8;\n const HALFFACT8 = factorial(n) / 2;\n let mtable = Array(HALFFACT8);\n let perm = [0, 1, 2, 3, 4, 5, 6, 7];\n for (let i = 0; i < HALFFACT8; i++) {\n //perm = index_to_evenpermutation(i, 8);\n mtable[i] = Array(4);\n for (let m = 0; m < 4; m++) {\n let new_perm = compose(perm, moves[m][0].slice(0, 8));\n mtable[i][m] = evenpermutation_to_index(new_perm);\n }\n\n if (i === HALFFACT8 - 1) {\n break;\n }\n // update perm to lex-next even permutation\n let parity = 0;\n do {\n for (let k = n - 2; k >= 0; k--) {\n if (perm[k] > perm[k + 1]) {\n continue;\n }\n let l = k + 1;\n for (let L = l; L < n; L++) {\n if (perm[L] > perm[k]) {\n l = L;\n }\n }\n [perm[k], perm[l]] = [perm[l], perm[k]];\n parity ^= 1;\n for (let j = 0; k + 1 + j < n - 1 - j; j++, parity ^= 1) {\n [perm[k + 1 + j], perm[n - 1 - j]] = [\n perm[n - 1 - j],\n perm[k + 1 + j],\n ];\n }\n break;\n }\n } while (parity !== 0);\n }\n return (tables.phase2em = mtable);\n}\n\nfunction generate_phase2_edge_ptable() {\n if (tables.phase2ep) {\n return tables.phase2ep;\n }\n return (tables.phase2ep = bfs(generate_phase2_edge_mtable(), [0]));\n}\n\nfunction bfs(mtable, goal_states) {\n let N = mtable.length;\n let nmoves = mtable[0].length;\n let ptable = Array(N).fill(-1);\n let queue = goal_states.slice();\n let new_queue = [];\n let depth = 0;\n while (queue.length > 0) {\n new_queue.length = 0;\n for (let state of queue) {\n if (ptable[state] !== -1) {\n continue;\n }\n ptable[state] = depth;\n for (let move_index = 0; move_index < nmoves; move_index++) {\n let new_state = mtable[state][move_index];\n while (new_state !== state) {\n new_queue.push(new_state);\n new_state = mtable[new_state][move_index];\n }\n }\n }\n [queue, new_queue] = [new_queue, queue];\n depth += 1;\n }\n return ptable;\n}\n\nfunction ida_solve(indices, mtables, ptables, max_bound) {\n max_bound = max_bound || 999999;\n let ncoords = indices.length;\n let bound = 0;\n for (let i = 0; i < ncoords; i++) {\n bound = Math.max(bound, ptables[i][indices[i]]);\n }\n while (bound <= max_bound) {\n let path = ida_search(indices, mtables, ptables, bound, -1);\n if (path !== undefined) {\n return path;\n }\n bound++;\n }\n}\n\nfunction ida_search(indices, mtables, ptables, bound, last) {\n let ncoords = indices.length;\n let nmoves = mtables[0][0].length;\n let heuristic = 0;\n for (let i = 0; i < ncoords; i++) {\n heuristic = Math.max(heuristic, ptables[i][indices[i]]);\n }\n if (heuristic > bound) {\n return;\n }\n if (bound === 0) {\n return [];\n }\n if (heuristic === 0 && bound === 1) {\n return;\n }\n for (let m = 0; m < nmoves; m++) {\n if (m === last) {\n continue;\n }\n if (m < last && tetrad[m] === tetrad[last]) {\n continue;\n }\n let new_indices = indices.slice();\n for (let c = 0; c < ncoords; c++) {\n new_indices[c] = mtables[c][indices[c]][m];\n }\n let r = 1;\n while (indices.some((_, i) => indices[i] !== new_indices[i])) {\n let subpath = ida_search(new_indices, mtables, ptables, bound - 1, m);\n if (subpath !== undefined) {\n return [[m, r]].concat(subpath);\n }\n for (let c = 0; c < ncoords; c++) {\n new_indices[c] = mtables[c][new_indices[c]][m];\n }\n r++;\n }\n }\n return;\n}\n\nfunction* ida_solve_gen(indices, mtables, ptables) {\n let ncoords = indices.length;\n let bound = 0;\n for (let i = 0; i < ncoords; i++) {\n bound = Math.max(bound, ptables[i][indices[i]]);\n }\n while (true) {\n yield* ida_search_gen(indices, mtables, ptables, bound, -1);\n bound++;\n }\n}\n\nfunction* ida_search_gen(indices, mtables, ptables, bound, last) {\n let ncoords = indices.length;\n let nmoves = mtables[0][0].length;\n let heuristic = 0;\n for (let i = 0; i < ncoords; i++) {\n heuristic = Math.max(heuristic, ptables[i][indices[i]]);\n }\n if (heuristic > bound) {\n return;\n }\n if (bound === 0) {\n yield [];\n return;\n }\n if (heuristic === 0 && bound === 1) {\n return;\n }\n for (let m = 0; m < nmoves; m++) {\n if (m === last) {\n continue;\n }\n if (m < last && tetrad[m] === tetrad[last]) {\n continue;\n }\n let new_indices = indices.slice();\n for (let c = 0; c < ncoords; c++) {\n new_indices[c] = mtables[c][indices[c]][m];\n }\n let r = 1;\n while (indices.some((_, i) => indices[i] !== new_indices[i])) {\n let subpath_gen = ida_search_gen(\n new_indices,\n mtables,\n ptables,\n bound - 1,\n m,\n );\n while (true) {\n let { value: subpath, done } = subpath_gen.next();\n if (done) {\n break;\n }\n yield [[m, r]].concat(subpath);\n }\n for (let c = 0; c < ncoords; c++) {\n new_indices[c] = mtables[c][new_indices[c]][m];\n }\n r++;\n }\n }\n}\n\nconst randomUintBelow = randomUIntBelowFactory();\nexport async function getRandomRediCubeScramble() {\n return new Alg(\n stringify_move_sequence(\n generate_random_state_scramble(await randomUintBelow),\n ),\n );\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;AAGA,IAAI,aAA4C;AAChD,eAAsB,aAAa;AACjC,SAAQ,4BAAe,mBAAmB;AAC5C;AAGA,eAAe,qBAA6C;AAC1D,SAAO;AAAA,IACL,MAAM,QAAQ,OAAO,QAAQ;AAAA,IAC7B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA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",
6
+ "names": ["C", "randomUintBelow", "i"]
7
+ }