cubing
Version:
A collection of JavaScript cubing libraries.
1,269 lines (1,235 loc) • 37.2 kB
JavaScript
import {
parseSGS
} from "./chunk-BQNTAVTA.js";
import {
puzzles
} from "./chunk-MFK4M6PV.js";
import "./chunk-SGPKF5IH.js";
import "./chunk-TQF5J7MH.js";
import {
Alg
} from "./chunk-2SBMIHZV.js";
// src/cubing/search/inside/solve/puzzles/dynamic/sgs-unofficial/fto.sgs.ts
var cachedData = null;
async function sgsDataFTO() {
return cachedData ??= uncachedSGSDataFTO();
}
async function uncachedSGSDataFTO() {
return parseSGS(
await puzzles["fto"].kpuzzle(),
`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
Alg T
Alg B
Alg B T
Alg B'
Alg B' T
Alg U
Alg U T
Alg U'
Alg U' T
Alg B BL
Alg B BL T
Alg B BL'
Alg B BL' T
Alg B' BR
Alg B' BR T
Alg B' BR'
Alg B' BR' T
Alg U R'
Alg U R' T
Alg U' L
Alg U' L T
Alg B BL' D
Alg B BL' D T
Alg R
Alg R'
Alg R D
Alg R D'
Alg R BR
Alg R BR'
Alg R' F
Alg R' L
Alg R' L'
Alg B L B'
Alg U L' U'
Alg B U B'
Alg B U' B'
Alg B R B'
Alg B R' B'
Alg B' U' B
Alg B' U B L
Alg B' U B L'
Alg B' U' B BL'
Alg B U' B' BR
Alg B' R' B F
Alg BR
Alg BR'
Alg BR BL
Alg BR BL'
Alg BR' F
Alg BR' F'
Alg BR' D
Alg B BR B'
Alg U F U'
Alg BR BL L
Alg BR' D BR'
Alg B' BL B
Alg B' BL' B
Alg BR D' BR'
Alg B' BL B D'
Alg B' BL B BL
Alg B' BL B BL'
Alg B' BL L B
Alg B' BL' B F'
Alg B' BL' B L'
Alg B' BL' B BL'
Alg B' BL' L BL' B
Alg R' BR R
Alg R' BR' R
Alg BR BL' D BR
Alg R' BR D R
Alg R' BR D' R
Alg R' BR R BL
Alg B' D' BL D B
Alg BR B D' B' BR'
Alg BR BL' D BR L'
Alg BR BL' D BL BR
Alg U BR U'
Alg U BR' U'
Alg U' R U
Alg U' R' U
Alg U BR B' U'
Alg U BR' U' D
Alg U BR' U' D'
Alg U' R F' U
Alg U' R' U L'
Alg U B U'
Alg U B' U'
Alg U B U' L
Alg U B U' L'
Alg U B' U' BL'
Alg U B U' L F
Alg U B U' L F'
Alg U B' U' BL' D'
Alg B BL' L BL B'
Alg B BL' L' BL B'
Alg U B' D B U'
Alg U B' D' B U'
Alg U R D R' U'
Alg U R D' R' U'
Alg R' F L F' R
Alg R' F L' F' R
Alg B L' B F' D B
Alg U B' D' B U' D
Alg F
Alg F'
Alg F D
Alg F D'
Alg F' L
Alg F' L'
Alg F D' BL
Alg F BL F'
Alg F BL' F'
Alg BR' BL BR
Alg BR' BL' BR
Alg F BR F' BR'
Alg F BL F' BL'
Alg F BL' F' L
Alg F BL' L' F'
Alg F BR' BL BR F'
Alg F' BL F
Alg F' BL' F
Alg U BL U'
Alg U BL' U'
Alg F U' F' U
Alg F' BL F D'
Alg F' BL F BL'
Alg F' BL D F
Alg L
Alg L'
Alg L BL
Alg L BL'
Alg F' D F
Alg L BL D
Alg L' BL L
Alg L' BL' L
Alg L' BL D L
Alg L' BL D' L
Alg L' BL L BL'
Alg L' BL D' L BL
Alg L' BL D' L BL'
Alg L D L'
Alg L D' L'
Alg R' D R
Alg R' D' R
Alg L D L' D'
Alg L R L' R'
Alg L' B' L B
Alg R' D R BL
Alg L BL' L' BL L'
Alg U L' D L U'
Alg U B D B' U'
Alg U L' D' L U'
Alg U B D' B' U'
Alg R' D' BL' D R
Alg U B D' B' U' D
Alg U B' L B L' U'
Alg U B D B' U' BL'
Alg U B D' B' L' D' L U'
Alg F L F'
Alg F L' F'
Alg F L F' D
Alg F L F' D'
Alg F L' F' BL'
Alg L BL' D BL L'
Alg L BL' D' BL L'
Alg F D L D' L' F'
Alg F L D L' D' F'
Alg F L' B' L B F'
Alg F' D' R' D R F
Alg F D L D' L' F' BL'
Alg F' R' B' R' B R' F
Alg B D B'
Alg B D' B'
Alg L' D L
Alg L' D' L
Alg B D B' D'
Alg B' L B L'
Alg B D B' D' BL
Alg D
Alg D'
Alg D BL
Alg D BL'
Alg D BL' D BL D'
Alg D BL' D' BL D'
Alg B D R D' R' B'
Alg B R D R' D' B'
Alg D BL' D BL D' BL
Alg D BL' D BL D' BL'
Alg D BL D BL' D'
Alg D BL D' BL' D'
Alg B' BL' B BR D' BR'
Alg D BL D BL' D' BL
Alg D BL D BL' D' BL'
Alg D' BL D
Alg D' BL' D
Alg D' BL D BL
Alg D' BL D BL'
Alg B D' B' BL B D B'
Alg B D' B' BL' B D B'
Alg D' BL' D BL D' BL D
Alg B R' B' BL B R B'
Alg B R' B' BL' B R B'
Alg L R L' BL' L R' L'
Alg F BL' B' BL F' BL' B
Alg F' R' F BL F' R F
Alg F' R' F BL' F' R F
Alg BR R BR' BL' BR R' BR'
Alg F L' BL U BL' U' L F'
Alg F' U' F D F' U F D'
Alg F BL F' D F BL' F' BL D'
Alg F D F U' F' U D' F'
Alg F D F' BL F BL' D' F'
Alg F U D BL' U' BL D' F'
Alg F U' D F U F' D' F'
Alg F' BR L F BR' F' L' F
Alg U R BL' F BL F' R' U'
Alg BL
Alg BL'
Alg F U BL U' BL' F'
Alg F BL U BL' U' F'
Alg U BL BR BL' BR' U'
Alg BR F BL F' BL' BR'
Alg F U' F' U BL' U BL U'
Alg F U' F' D F U F' D'
Alg B' U' F U B U' F' U
Alg D F U' F' D' F U F'
Alg BR' U BR D' BR' U' BR D
Alg D' BR BL' F BL' F' BL BR' BL D
Alg D BL D F' U' B L' BL' L R' BR' R L' BL L B' U F D
Alg B D BR F' R' BR' R B' F D' BL D B BR' D' B'
Alg L B' BR' L F BR L' B BR' L U F U' BR' F L BL BR'
Alg L BL' D' BR' B R' U' R BR B' D BL' L'
Alg B BR B' D' B D B F' R' B' R BR' B' BR F BR' BL
Alg L' BL D L' D' L' D L' U' R' F' R U D'
Alg U' L BL L U' D R' BL B' BL F' BL' B R BL' U D' L U
Alg L BL BR' L U' D R' F' R BL' U BL D' BR L
Alg D L' R F' R' L BL' BR BL' B' BL B BR' F BL' F' D'
Alg B BL B BR' L R' U' R BR L' B
Alg L B' R' BR B F BL D' BL' D BL' B' F' BR' R U B L'
Alg D' L' BL F' D' BL' D B F' R' BR R B' F' BL' L D
Alg B D' R D' R' BL BR' B BR' B' BL' D' BR B R' B' R B' BL' D'
Alg U' L R' F U L' BL' L B BL' B' BL L U' L' F' R L' U
Alg F' D BL' BR' BL' BR B' U' F L F' U B D F L U BL' U' L'
Alg L' U BR' U D R' BL F R BL' U D' BR' L' BL' BR' L'
Alg U' L' U' D R' BL B' BL F BL' B R BL' U D' L' BL' L' U
Alg D F BL L' BL' B L' B' L' B L' B' L' BL L BL' F' D'
Alg F' BR' B BL' BR BL B' F L' F' L B BR' B' BR L' F L BL'
Alg F' L F' L U' D R' F R U D' L' BL' F L' F
Alg F U' F' BR F' R' BR' U F' L' BL F' D' BL'
Alg B BR' U R BR' R' BR U' B' BR
Alg F' BR' B BR' R BR' BL' BR R' BR BL B' BR F
Alg L' U BL B' U' BL U BL' B BR BL' BR' U' L
Alg BR BL' BR' BL L' BL BR BL' BR' L
Alg U BR' U' BR L' BL BR BL' BR' L
Alg U' L F BL' F' BL F' BR F BR' L' U
Alg F L F' BL D F' D' F BL' L'
Alg U BR' U BR L BL BR BL' BR' L' U
Alg F BR R BL' F' BL' F R' BL BR' BL F'
Alg D BL D B U BR' D BR' L' U' BR' U BR L D' BR U' B' D
Alg U BL' U' BL U BL D L' D BR D' L D BR U BR U D
Alg B' U F U' B' U F' BR' U' B L B' U BR U' B L' B BL
Alg B U' B BL U' BL L U' D R' F' R U' D' L' BL' U B
Alg B L R F D' BR' D F' R' BL' U' L U L' U BL L' B'
Alg D BL D F' BR' F BL' D R' BR' R F D' BL F' BR D
Alg L' D F' R' U BR L BL B' BL B BL' BR' L' U' R D' L
Alg F BL' U D L' U' BR R F' R' BR' U L D BL U' D BL F'
Alg BR' BL' U' L' BL D F' L' F' L F L U L' D' BR L BL
Alg B' L' BL U D R' F' R U D' L' BL L U BL' L B
Alg B BL' L U B' L BL' L B' U' B' L' D L' U' B L' B' D'
Alg B' R' L U L' R BR BL' B BR' B' BL B' BL' B'
Alg F L R BL B' U' B R' BL' L' BL F' BL BR' BL L BL' BR L'
Alg B' U' BL L U D R' F R U D' L' BL' U BL' B' U B'
Alg U BR BL' BR' D' B D' F' D B' D' F BL' U' BL' F' BL' F D'
Alg D' BL' D L BL L' D' BL D F' D F D' BL' D' BL D
Alg B' BL' B' BL L' B' BL' F' D F L F' D' F BL' L BL' B L B
Alg F BL' U D' BL' D' L' U' BR R F R' BR' U L U' D' BL F'
Alg U' D' B D F' D' BR' D' BR D BR B' BL' D F BL U BL'
Alg B BL BR D' BR L' R F R' BR' L D BL' BR' BL' B'
Alg L' F L' U BR' U' BR L F' BR' L U BR U'
Alg F' BL' D' BR' BL B' U' BL U B BL' BR D F
Alg F' D' BR' U R' U BL U' R U' BL' BR D F
Alg F U' BR F' U' BL' B U F BR' R F' U BL L
Alg B' BL' U' BL U B BL' B BL BR BL' BR' B' BL
Alg D' F' U BL U' L F U' F' U L' BL' F D
Alg F' BL' D' BR' BL BR' F' BR U' B' BR' U R' BR' F'
Alg B' U' B BL' B U' B BL' L U' L BL' L B
Alg F' D' F U' F U F' BL F' BL' D F
Alg F' D BR F' R F R' BR' F D'
Alg D BL D B BR' D L' BL' L' BL' BR' BL L BL L D' BR B' D
Alg B L BL L' BL' L' D F' R' BR R D' F L' BL' L' B'
Alg B BL' F' BL BR D' BR' F D' B' D L F' BL' F L D L D' BL
Alg B D' BR' D' BR' F D' BL' D' BL D BL F' D BR D' B'
Alg B D' B U B' D B F' BR' F L' F BR F' L U' B BL
Alg L BL' B' U BL L' BL L U L' BL' L BL' U' B BL' L'
Alg U D F' D BR BL' BR' BL B D' F D B' D BR BL BR' U'
Alg F' D BR L' U' R F' R' U BR' L D BR' BL BR D F
Alg BR' L BL L' BL' BR BL' F BL' L R BL B' U B R' BL' L' F'
Alg D BL BR D B F' R' U' BR' U R B' F D' BR' D'
Alg D' B BR' D L' BL' L' BL' BR BL L BL L D' BR B' D' BL' D'
Alg B U' R B' BL' B R' U' B BL' B' U' BL B' U' L U L'
Alg B D' B' D' BR' BL BR D' B' L B BR' U B U' BL' BR BL L' BL'
Alg B D BR' D' F BL' D' BL' D BL D F' BR D BR D B'
Alg D' B D F' D' BR' D' BR D BR BL BR' BL' BR B' BL' D F
Alg L BL B' U BL L' BL L U' L' BL' L BL' U' B BL L'
Alg B' U B' D' B U' B' D BL' U BL' U' BL' B' U BL' U'
Alg D' BR' B' L' U L' B' U B L U' L B BR D BL
Alg L' D L' F U' F' L D' L' F U BR F' L F BR' F' L BL'
Alg D BR D B F' R' U' BR U R B' F D' BR' BL' D'
Alg BR BL D F BR' BL BR BL' BR F' BR' D' BL' BR'
Alg BR' U' L' BL F' BL' F L BL' U BL BR
Alg D' BR' B' U BR U' BL U' BL' U BR' B BR D
Alg F U BR' U R U' BR B U' F' BL U' L' U BL' B'
Alg B U' L F BR F' L F' BR' F L U B'
Alg BR BL F BL' L F' BR' BL' F BL L' BL' F' BL
Alg U' BR' L BL' BR L U' BR' U L' BL L' U' BR U'
Alg L' F L' U BR' U' BR L F' L BL' BR BL BR'
Alg F' D' BR' BL U R' U BL' U' R U' BR D F
Alg F' BR' B F' U F BR U' BR' B' F BL BR BL'
Alg L B' U' R' BR B F BL D' BL D BL' B' F' BR' R B L'
Alg B F BL B L F BR' R' BL U' R BL' BR' F' L' F' BR' B
Alg U BR F' D F BR' U' L' BL L' BL' L U L B' BL L' B U'
Alg F' L B F BL B R U' R' B' BL' B' F' L BL L F
Alg D BL D B BR' D BR' D' BR D BR BL BR' BL' D' B' D
Alg D' BR' BL B BR B' BL' D BL D' B' BL B BR' BL' BR D
Alg D F' U BR U' L U' BR' U L' D B D' F D B' D BL
Alg L B BL' B L F R U' R' F' L' B' BL B' L' BL'
Alg B D' B U B' D F' BR F L' F BR' F' L B U' B BL
Alg B' BL L B' L' B' L B' BR' R' U' R BR L'
Alg D' F' U' B L' BL' L R' BR R L' BL L B' U F D' BL' D'
Alg B' F' BL' B' F U D' R BR R' BL U' BL' D B'
Alg F' BL' D BL F BL' D' B' U' B D F' D' B' F U B
Alg F' L' BL' L' B F BL B R U R' B' BL' B' F' L' F
Alg L' BL U' D F D' BL' D BL F' BL' D' BL D F' U D' BL L
Alg B' BR L R' U R BR F L' B' BL' B L F' BR L' B
Alg B' L B' BR' B L' B' D F' U F D' F U' F' BR B' BL'
Alg B' BR D' BL' BR' BL B L' R' L' R BR L D L BL BR' B BL
Alg L' D F' L F L' F D' L' BL' L' D BL' BR' BL' BR BL' D'
Alg B' F BR F BR L R' BL U R BL' BR L' B' BL' B' F
Alg F L' F' BR' B BR' F' BR B' BR' F' L F' BR'
Alg BR' B' BR BL' D' BR D BR' BL B
Alg L' F L' U BR' U' L U' BR U F' L
Alg F U' BR' R U' BR BL BR' U' BL' U' R' F' BR U
Alg B' BR' R' U' BL D' BL U BL' D R BL' BR B
Alg D BR' U' L BL' F' BL F L' BL U BL' BR D'
Alg F' BL' D' F BR' BL BR BL' BR F' BR' D BL F
Alg F' BR' BL' BR D' F' BR F BR' D BL F
Alg F' BR R' BR BL' BR' R BR' BL F
Alg B BR F' BR' B' F BL F BL' F'
Alg B D' B U B' D BL' F R' F BL F' R B F' U' B BL
Alg L BL' B' U L U L BL L B' BL B' U' BL' U' B' L' BL
Alg L' BL' U' D F D' BL' D BL F BL' D' BL D F' U D' BL' L
Alg F' L F' BL' D' BR' B R' U' R BR B' D BL' F L' F
Alg U D' BR' D BR' U' L U BR L' D' BR D L U' L' BL
Alg B' BR' B' BL B L F' BR' R' U' R BR F BR L' B
Alg U' F' D BR' F' BR D L D L' U D' B D' B' F D' BL F
Alg B F BL B F' L F BR' R' BL U' R BL' BR' F' BR' L' B
Alg F' D' BL B BR' BL BR BL' BR' D' BR' D BR D F D' B' D
Alg B' BR' B' BL B L F BR' R' U' R BR F' BR L' B
Alg L' F BR L' R' BR BL' BR' R BR' BL B' L F' L' B L' BL'
Alg B' U' BL' U D' BL' D F L' R U R' F' L U' BL U B
Alg D' B D BL BR BL' BR' D' BR' D BR D' BR B' D' BL' D'
Alg B' BR' L F' BR' R' U R BR F L' B' BL' B BR B
Alg L U L' D' BR' D L U' L' U D' BR D BR BL BR' BL' U' BL'
Alg F' L F' BL D' B BR' R' U R B' BR D BL F L' F
Alg B' L B' BR' B L' F' R F' BL F R' F BL' B' BR B' BL'
Alg F' L BL' BR' R' BL U R BR B L' B L B L' F BL' B
Alg L' F D' BR U' BR' D BR' U BR L' B' L F' L' B L' BL'
Alg B' BR' L F BR' R' U R BR F' L' B' BL' B BR B
Alg L F' D' F BR' BL BR BL' BR F' BR' D F L'
Alg F' BL' D F BL' F' BL D' BR' BL BR F
Alg B' BR' R' BL D' BL U' BL' D BL' U R BR B
Alg B' L BL' BR BL L' B' F BL F' BL' B BR' B
Alg F U' BR' R BR F' U BL L U BL' B U'
Alg B' BR B' BL F BL' B F' L BL' BR' BL L' B
Alg U' L BL' U' R U' BL' U R' U BL' L' U
Alg F U' BR' R' F' BR' F BL BR R BL' F' BR U
Alg B U' L' F' BR F L' F BR' F' L' U B'
Alg F' BR' B' F BR' BL' BR F BL B F' BL BR BL'
Alg B BL' U' L U BL' B' BL' B' L' BL U B' U' BL L BL L
Alg B R' U' B U R B' BR F D' B' D BL F' BL' BR' BL
Alg U BL U' B BL U BL U' BL D' B U B' D B U' B
Alg B BL B BL' B BR B' BL BR' R' L U' L' R B
Alg U' L BL' B BL B' L' F U B' R U R' U F' U B BL
Alg F' BL' D' BR' L' B' L B BL BR BL' B' L' B L D BL F BL
Alg L B' L' F U B' R BR B BR' R' BR BL' BR' BL B U' F' BL
Alg D' F BL B BR' B BR B' BL' D BL D' B' F' D
Alg B' L' BL F U F' L' U B U' L F U' F' BL' L BL' B BL B
Alg D BL D B U F' R' BR' R F U' B' D
Alg B BR B' D' BL BR D BR D B' BL' B D BR' BL' D' BL' D'
Alg B' R BR B' BR' R' B U' F' L B L' BL' F BL U BL'
Alg U BR BL' BR' D' B D' F' D B' BL' BR BL BR' D' F U' D'
Alg U' D' BR' U' BR' D' L' D BR' D' L D' BL' U' BL' U BL U'
Alg L' F' BR F' R F' R' L F' BR' D L BL' L' BL D' F BL'
Alg B D BL' D B U R BR R' U' B' D' BL D' B' BL
Alg B' U L' U B BL L' F' BL F D' B' U B D B' L B L'
Alg L BL' B' U L F R U' R' F' U L F' L B L' F
Alg L' D R' U BR L BL B' BL' B BL' BR' L' U' R F D' L
Alg D' B U F' R' BR R F U' B' D' BL' D'
Alg B D BL' B' U' BL L' D L D' BL' U B BL B' D'
Alg B U' BL' U' F U' B U B' F' U BL U' B U' B
Alg U BR' U L BL' L U' BR U BR' L' BL BR L' U
Alg F' D' BR' BL B' U' BL' U B BL' BR D BL F
Alg B' L' B' F BL' F' BL F' BR F BR' B L B
Alg F' BL' D' BR F' BR' F D BR' BL BR F
Alg F D' F' U' F' D' BR D F' D' BR' D' F' U
Alg BR' BL' U' BL L U' F U F' L' U BR
Alg F BR R U' BR B U BR' F BR BL' BR D BL F
Alg F' BR' F U' BL L' U BL' B' F' BL' BR D' BL F
Alg B' U L' B' U L' D F L F' D' L U' B L U' L B L'
Alg B BL B L F BR' R' U' R BR F' L' B
Alg B D' B BR' R' U' B' U R BR U' D' F L' F' U L' D' L
Alg L U' L' U B BL' U B BL B' U R B' BL B R' U B'
Alg D F' D BL U' R U' BL' U R' U B D' F D B' D BL
Alg B BL U B BR' L R' F' U' F R BR L' B' U' B'
Alg B' U' B F' D F D' B' U B D BL F' BL' D' BL F
Alg B D BR B F' U' R' BR' R U B' F BR' D' BL B'
Alg L B' F R BL' U' R' BL B F' L U BR' U' BL L U BR U'
Alg F' L F' BL L U' D R' F' R U D' L' F L' F
Alg L U L' F' BL' F L B BL' U BL' U' BL B' BL L U' L
Alg B' L F BR' R' U R BR F' L' B' BL' B'
Alg U BR' U' L' U' BR' F' BR F BR D R' F R U D' L' BL' L'
Alg B L BL L F' D R' BR' R F D' L BL L BL' L' B'
Alg F' BL' D F' D' B D' B' U' D L D BR' L' F BR D' F U
Alg B U B BR' L R' F' U F R BR L' B' U' BL' B'
Alg U B' L BL' B L' U' L' BL L BL' L U BR F' D' F BR' U'
Alg B BL' D BR B F' U' R' BR R U B' F BR' D' B'
Alg B BR B F BR' U BL' L R BR' R' L' F' U BR U BL B BL'
Alg B' BR' L R' U R BR L' B' BL' B'
Alg B' U BR' R L F' BR' F L' R' BR U' B' BR B'
Alg F' BL' F' BR R U' BR B F BR BL' D F U BL'
Alg F' BR' B' U BR' F BR' F' BR U' BR B BR F
Alg BR' BL' U' BL L' F' BL F BL' L U BR
Alg U' L BL U' R U' BL U R' U BL L' U
Alg F BR' F' U' L F BR U F' U' L' BL U BL'
Alg L' F U' BR' U L' U BR U' L F' L
Alg F' BR' B' U' BR' U F BR B U' BL U BR BL'
Alg F' BR' U BR D' BR U' BR' D F
Alg F BL' BR R BL' F' BL F R' BL BR' F'
Alg L BL' B BL' U BL U' BL B' L' F' BL F L U' L U L
Alg B F BL B F' L F' BR' R' BL U' R BL' BR' F BR' L' B
Alg F BL B' F' BR B' BR' B L F BL B' BR B BL' BR' F' L' B
Alg B F D' BL U R BL' BR' R' U' D B F' BL B
Alg L B' U B' BR B BR U' BR' B L' F BL' B F' BR' B' BL'
Alg U' L R' F L U L' BL' B BL B' L' BL L U' F' R L' U
Alg BR BL F BL' F' L' F' BR' L B BR B' L' F L B BR' B' BL
Alg B' BR' L F L' B' BL B L F' BR' R' U' R BR' L' B
Alg D L U' BR U L U' R BL' F' R' F BL F' BR' U L D BL D
Alg B F BL B F BR' L R' BL U' R BL' BR' L' F BR' B
Alg L B' L' U L' B' U L' D F L' F' D' L U' B L U' B
Alg B' BR L F' BR R' BL U R BL' BR F L' B' F BL' B' F'
Alg B' BL L B L' B' BL' L' U BL' U R' L' R U' BL U' L B
Alg B U' D' F D B BL' B' U D' R BR R' U' F' U D B'
Alg D F L F' L' F R L' BL B L B' BL' L R' F' L D'
Alg L BL D' B BR' R' U R B' BR D BL L'
Alg D F D' B' U' B U' D F' D' F U B' U B F' BL'
Alg D' BR' BL BR B' BL' B D BL' D' BL B BR' B' BL' BR D
Alg U BR' U' L U R' L R BR L' B' L' B L U' L' BL'
Alg BR' L R' U R BR B L' B L B L' BL' B
Alg B BR' B U BR' R L F' BR F L' R' BR U' B
Alg F' L B' BR' B L BL' L' B' BR B L BL L F
Alg D F U' F' U D' BR U' D' F U F' D BR'
Alg B' BL' BR D' BR' D BL BR' B BR
Alg B BL U' BR' L U BR' F' BL D BL BR F BR
Alg L' U BR BL BR' B' BL U' BL' U B BL' U' L
Alg U B' BL U' L' BL' U' F BR' R' BR U F'
Alg D BR' BL U' BL' L F' BL' F BL L' U BR D'
Alg BR L' BL BR' BL' L BL' BR BL BR'
Alg F BL F' BL' B F' BR F BR' B'
Alg D BR L' U' R F' R' U BR L BL B' BL B BL' BR D'
Alg D' BL' D BL D F' D' F D' BL' D L BL' L' D' BL D
Alg B F D' F' U' BL' B U B' BL F D B U' B' U B' F' BL
Alg B U F' D' R BR' R' U' D B BL B' U F U' B'
Alg B BL B L B BR' F BR B' BR' R' U' R F' BR L' B
Alg B BL B L F' U' F' U F BR' R' U' R BR' F BR' L' B
Alg B' U' B F' D F D' B' U B U' D BL' F' BL D' F U BL
Alg L F' BR B' F' R BL' U' R' BL B F' BR L BL BR L
Alg D F' D' BL F' D' F R BL B' L U L' B R' F' BL' D F
Alg B BL BR BL D' BR L' R F' R' BR' L D BR' BL' B'
Alg B' L B' BR' B L' BL' U BL U' B' BR B' U BL' U'
Alg D' B BR' F BL' F' D BR D' BL F' BR B' F D' BL' D'
Alg B D F' L' R F D BR' D' F' R BR' L D B' BL' D' F D'
Alg D L BL' F' R U R' B F' L BL' L' B' F' BL L' D'
Alg B' BR' L F R' U R BR B BR' F' BR B' L' B' BL' B'
Alg D L F BL F L BL' L D' BL' D' F' D' F' L BL D' BL'
Alg D F BL F' BR B' BL' B BL BR' BL L' R F R' L D'
Alg L BL' B' L B L B' L F R U R' B F'
Alg F' D' BL F R B' L U' L' B R' BL' F' D F BL' D F D'
Alg B' L' BL U' D' L' BL' L U' D R' F R U' BL' L B
Alg L' F L' BL U' BL' U L F' L U' BL U BL'
Alg D' F' BL L U' F U F' L' U BL' U' F D
Alg B' U F D F' U F D' F U B U' F U
Alg U B' BR' U R' U' R BR U' B
Alg F' BL' D F BL F' BR F' BR' F BL' D' BL F
Alg F' BR' BL' BR D BL' F BL F' D' BL F
Alg U' F R F' BL' F R' F BL F U
Alg F' BR F BR' L BL' BR' BL BR L'
Alg F U' B F U' BR U BR' U F' U' B' U F'
Alg D F' BR R F' R' F BR' D' F
Alg B D' B U B' D B U' B BR BL BR' D BL BR BL BR' BL D'
Alg B' U' L' D' F D' L' F' L D F' D L U B BL'
Alg D L' F R L' BL B L' B' BL' L R' F' L F L' F' D'
Alg D L' D' BL D F' D F D' BL' L BL D'
Alg D' B R U' B' F' BL' L BL L' BL B F U R' BR' B' D
Alg D L BL' F L BL L' B' F R U' R' B F BL L' D'
Alg D F' BL F BL U BL F' D B D' F D B' D BR BL BR' U'
Alg B F' BL B F' BR' F' L F R' U' R BL' BR BL F' L' B
Alg L F BR B' D BL D' R U' R' D BL' D' B BR' F' L BL L
Alg B F BL B F' BR' L R' U' R BL' BR BL L' B
Alg D' B U BR' D BR' L' U' BR U BR L D' BR U' B' D' BL' D'
Alg F' D' BR' BL' BR D' BR L' U' R F R' U BR' L D' F
Alg D F U D' BL U' B D' F BR F' D' F' D BR' D B' BL
Alg B U' D' F D BL' D' BR D' BR' D BL B' BL' B F' U D B'
Alg L' BL' L' F BR B' D BL D' R U R' D BL' D' B BR' F' L'
Alg B U F' U' B BL' B' U D' R BR R' D F U' B'
Alg B L BL' U' L U' L' U R BL F D' BR D F' R' L' B'
Alg B' L B' BR' B L' F' BL F BL' B' BR B' F U' F' U BL'
Alg D' B BR R U' B' F' BL' L BL' L' BL B F U R' B' D
Alg B BL' U' B BL' B D B D' B D B D' BL B' U BL B'
Alg U BR' U' BR L' F BR' L' U BR U' L F' L
Alg L' U BR BL BR' B U BR' U' BR B' BL' U' L
Alg BR BL D BR' BL' L BL' BR BL L' BL D' BL' BR'
Alg F' BL' D' BR' D BL BR' B U BR U' B' BR F
Alg F U' F' D F' U' B' U F' U' B U' F' D'
Alg B' U BR' R' U R U' BR B U'
Alg L U BL U' BL' L' BL L' F' BL' F BL L BL'
Alg U B' BL' BR' U F' BR' D' F BR' U BL' L' BL'
Alg F BL' L' F' BL D' F' BR U' R' F' U F' BR'
Alg U B U' BL L U' L' U BL' B'
Alg U BL U' B BR' B U BL' U' BL L B' BR B L' B
Alg B BL B L F' U' F U F BR' R' U' R BR' F' BR' L' B
Alg B BR D L' D' F' D F D' F' D' F D' BR' L D' B D B
Alg F' L B' L' F L' U' F R U R' F' L' U' B BL L'
Alg B' L' F U F L' F R U' R' U L F R U R' U B F' BL
Alg B U F' D' F' U R BR' R' U' F D B BL B' F U' B'
Alg F BL U BL' U' F' BL L U' L D BR L' U L U' BR' U D' L
Alg B U' D' B' F BL B BL' D' BR D BR' D BL D' F' U D B'
Alg B BL' D' B' D B BL D BR' BL BR' R D R' BR BL' BR D' B'
Alg B F U' F' D' F' U' R BL' BR' R' BL U' F D B BL B
Alg D BR' BL B' BL' B BL' BR' L' U' R F R' U BR' L D'
Alg B' F' U' F' BL' D' B BR' R' U R B' BR D F U B F
Alg B' D' B' D BR L' D F' D F D F' D' F D L D' BR' B'
Alg D' B F D BL' D' BL B BR' B' BR B' BL' F' D
Alg B D B' F BL L' BL' F' L BL L' BL' BR L R L' R' BR' L' D'
Alg B U B F' BL' B' D' F' U R BR R' U' F D F U' B'
Alg BR BL' L' F' BR U F' U' BR L' B' BR' L F' BR L' B L'
Alg D BL' L' BL D F' D' F D' BL' D L D'
Alg F' BL' B F U' B U B' D' F' BL' B U' B' BL U F D B'
Alg B' F' L BL' BR' R' BL U R BR L' B' F BL' B'
Alg BR BL' BR' BL L' F L' BL' BR BL BR' L F' L
Alg B BL BR' F U' L F U BR' F BL D BR' BL
Alg B' BL' B' U BR' U' BR BL' BR BL BR' B BL B
Alg BR' U' L F U' F' U L' BL' U BL BR
Alg B U BR R' BR U' B' BR U' B' U BR' R' BR
Alg B BR BL L BL BR' BL' L U' BL' U BL L BL' B'
Alg F' BR' B BL' BR' R BR' BL BR R' BR B' BR F
Alg F' BR' B U BR' U' B' BR BL' D' BR D BL F
Alg D' F' BR U' R' F' U F' BR' F BL' L' F' BL
Alg B BL U' L U L' BL' U B' U'
Alg L' F' R B F' BR L' D' F' D BR' L B' F R' F BL L
Alg D F BL L' BL' B L B' L B L B' L BL L BL' F' D'
Alg B BL B BR' L R' U' R BR L' B U BR' U' BR BL' BR BL BR'
Alg B' F R U' R' F' L' B L' B' L' B BL L'
Alg B' L' F D R' F' L' U L F R' U D' L' B BL L F' L
Alg D' L' BL F R' BR' R B' F D' BL D B F BL' L D
Alg B' BR' R' U' BL' U' L R' F R F' L' R U' BL BR B BL
Alg BR L BL BR L U' D R' BL F' R BL' U' D' BR U' L
Alg BR L B' L F R F U F' U' R' L' B L F' BR' L BL
Alg B F U D' R BL' BR' R' BL U' D B F' BL B
Alg L' BL L' D B D' BL' B' D' L R' D R BL' U' L U BL'
Alg L' D BL' U' R' BL F R U D' BR L' BL' BR' L'
Alg U BR' U' L' BL' U BR U' L' B' F R BL' U R' BL B F' L'
Alg BR L' BL' L' B' F R BL' U R' BL B F BR F BR L'
Alg B' F' L F BR BL B' BR' B BL' F' L' B' BR B BR' B F BL'
Alg B D BR B' D' BL' D B F' R' BR R F BR' D' B'
Alg D BL' L' BL' L BL L' BL F' BL' L' F L BL F BL' L D'
Alg U' D R' F R U L D' L D L D' BL' L
Alg U D' BR D' L' D R F BR F' BR' R' BR' D' L U' D' BL'
Alg B' F' BR' L R' BL U R BL' BR L' B' F BL' B'
Alg L' F BL' F' BL F' BR F BR' L
Alg L BL F' D F D' BL' F L' F'
Alg F' D' BR U BR' D BR' U' BR F
Alg BR' L BL' BR BL BR L' F' BR' F
Alg B BR F BR' B' BR F' R' BR' BL' BR R BR' BL
Alg BR' B U BR' R BR R' U' BR B'
Alg F' BL' BR R' BR BL BR' R BR' F
Alg BR L' BL BR' BL' BR' L U BR U'
Alg U BR' U' BR BL' BR BL BR'
`
);
}
// src/cubing/vendor/mpl/xyzzy/redi_cube.js
import { randomUIntBelow } from "random-uint-below";
function factorial(n) {
if (n < 2) {
return n;
}
let f = 1;
for (let i = 2; i <= n; i++) {
f *= i;
}
return f;
}
function C(n, k) {
if (k < 0 || k > n) {
return 0;
}
if (k === 0 || k === n) {
return 1;
}
let c = 1;
for (let i = 0; i < k; i++) {
c = c * (n - i) / (i + 1) | 0;
}
return c;
}
function permutation_to_index(perm) {
perm = perm.slice();
let n = perm.length;
let f = factorial(n - 1);
let ind = 0;
while (n > 1) {
n--;
let e = perm[0];
ind += e * f;
for (let i = 0; i < n; i++) {
let x = perm[i + 1];
perm[i] = x - (x > e);
}
f /= n;
}
return ind;
}
function index_to_permutation(ind, n) {
let perm = [];
let f = factorial(n - 1);
for (let i = 0; i < n; i++) {
perm[i] = ind / f | 0;
ind %= f;
f /= n - 1 - i;
}
for (let i = n - 2; i >= 0; i--) {
for (let j = i + 1; j < n; j++) {
perm[j] += +(perm[j] >= perm[i]);
}
}
return perm;
}
function permutation_parity(A) {
let n = A.length;
let parity = 0;
for (let i = 0; i < n - 1; i++) {
for (let j = i; j < n; j++) {
if (A[i] > A[j]) {
parity ^= 1;
}
}
}
return parity;
}
function index_to_evenpermutation(ind, n) {
let perm = [];
let f = factorial(n - 1) / 2;
let parity = 0;
for (let i = 0; i < n - 1; i++) {
perm[i] = ind / f | 0;
ind %= f;
f /= n - 1 - i;
}
perm[n - 1] = 0;
for (let i = n - 2; i >= 0; i--) {
for (let j = i + 1; j < n; j++) {
if (perm[j] >= perm[i]) {
perm[j]++;
} else {
parity ^= 1;
}
}
}
if (parity === 1) {
[perm[n - 2], perm[n - 1]] = [perm[n - 1], perm[n - 2]];
}
return perm;
}
function evenpermutation_to_index(perm) {
return permutation_to_index(perm) >> 1;
}
function comb_to_index(l) {
let bits = l.length;
let ones = 0;
for (let i = 0; i < bits; i++) {
ones += +(l[i] === 1);
}
let zeros = bits - ones;
if (zeros === 0 || ones === 0 || bits === 1) {
return 0;
}
let b = C(bits - 1, ones);
let ind = 0;
for (let i = 0; zeros > 0 && ones > 0 && bits > 1; i++) {
bits--;
if (l[i] === 0) {
b = b * --zeros / bits;
} else {
ind += b;
b = b * ones-- / bits;
}
}
return ind;
}
function index_to_comb(ind, ones, bits) {
let zeros = bits - ones;
let b = C(bits - 1, ones);
let l = [];
let n = bits - 1;
for (let i = 0; i < n; i++) {
bits--;
if (ind < b) {
l.push(0);
b = b * --zeros / bits;
} else {
l.push(1);
ind -= b;
b = b * ones-- / bits;
}
}
l.push(ones);
return l;
}
function compose(A, B) {
let C2 = [];
for (let i = 0; i < B.length; i++) {
C2[i] = A[B[i]];
}
return C2;
}
function permutation_from_cycle(cycle, n) {
let perm = [];
for (let i = 0; i < n; i++) {
perm[i] = i;
}
for (let i = 0; i < cycle.length; i++) {
perm[cycle[i]] = cycle[(i + 1) % cycle.length];
}
return perm;
}
function unsparsify_list(d, n) {
let l = Array(n).fill(0);
for (let k in d) {
l[k] = d[k];
}
return l;
}
function compose_state(state1, state2) {
let o = Array(8).fill(0);
for (let i = 0; i < 8; i++) {
o[i] = (state1[1][i] + state2[1][i]) % 3;
}
return [compose(state1[0], state2[0]), o];
}
var move_UL = [
permutation_from_cycle([0, 1, 4], 12),
unsparsify_list({ 0: 2 }, 8)
];
var move_U = [
permutation_from_cycle([1, 2, 5], 12),
unsparsify_list({ 1: 2 }, 8)
];
var move_UR = [
permutation_from_cycle([2, 3, 6], 12),
unsparsify_list({ 2: 2 }, 8)
];
var move_F = [
permutation_from_cycle([3, 0, 7], 12),
unsparsify_list({ 3: 2 }, 8)
];
var move_L = [
permutation_from_cycle([9, 8, 4], 12),
unsparsify_list({ 4: 2 }, 8)
];
var move_B = [
permutation_from_cycle([10, 9, 5], 12),
unsparsify_list({ 5: 2 }, 8)
];
var move_R = [
permutation_from_cycle([11, 10, 6], 12),
unsparsify_list({ 6: 2 }, 8)
];
var move_D = [
permutation_from_cycle([8, 11, 7], 12),
unsparsify_list({ 7: 2 }, 8)
];
var solved = [index_to_permutation(0, 12), Array(8).fill(0)];
var moves = [move_UL, move_U, move_UR, move_F, move_L, move_B, move_R, move_D];
var move_names = ["UL", "U", "UR", "F", "L", "B", "R", "D"];
var tetrad = [0, 1, 0, 1, 1, 0, 1, 0];
function stringify_move_sequence(move_sequence) {
let suffixes = ["0", "", "'"];
let s = move_sequence.map(([m, r]) => move_names[m] + suffixes[r]);
return s.join(" ");
}
function generate_random_state() {
let p = index_to_evenpermutation(
Math.floor(randomUIntBelow(factorial(12)) / 2),
12
);
let o = Array(8);
for (let i = 0; i < 8; i++) {
o[i] = randomUIntBelow(3);
}
return [p, o];
}
function generate_random_state_scramble() {
return solve(generate_random_state());
}
function solve(state) {
let phase1_indices = index_phase1(state);
let phase1_mtables = [
generate_phase1_edge_mtable(),
generate_phase1_separate_mtable()
];
let phase1_ptables = [
generate_phase1_edge_ptable(),
generate_phase1_separate_ptable()
];
let phase2_mtables = [
generate_phase2_edge_mtable(),
generate_phase2_corner_mtable()
];
let phase2_ptables = [
generate_phase2_edge_ptable(),
generate_phase1_corner_ptable()
];
let phase1gen = ida_solve_gen(phase1_indices, phase1_mtables, phase1_ptables);
let best = void 0;
let intermediate_states = /* @__PURE__ */ new Set();
let start_time = +/* @__PURE__ */ new Date();
for (let i = 0; i < 25; i++) {
let { value: sol1, done } = phase1gen.next();
let new_state = state;
for (let [m, r] of sol1) {
for (let i2 = 0; i2 < r; i2++) {
new_state = compose_state(new_state, moves[m]);
}
}
if (intermediate_states.has(new_state.toString())) {
continue;
} else {
intermediate_states.add(new_state.toString());
}
let edge_ind = evenpermutation_to_index(new_state[0].slice(0, 8));
let corner_ind = 0;
for (let i2 = 0; i2 < 4; i2++) {
corner_ind += new_state[1][i2] * 3 ** i2;
}
let phase2_indices = [edge_ind, corner_ind];
let moves_left = best ? best.length - sol1.length - 1 : 999999;
let sol2 = ida_solve(
phase2_indices,
phase2_mtables,
phase2_ptables,
moves_left
);
if (sol2 === void 0) {
continue;
}
if (best === void 0 || best.length > sol1.length + sol2.length) {
best = sol1.concat(sol2);
}
if (/* @__PURE__ */ new Date() - start_time > 300) {
break;
}
}
return best;
}
function index_phase1(state) {
let edge_ind = 0;
for (let i = 0; i < 4; i++) {
edge_ind += state[0].indexOf(i + 8) * 12 ** i;
}
let corner_ind = 0;
for (let i = 0; i < 4; i++) {
corner_ind += state[1][i + 4] * 3 ** i;
}
let filtered = state[0].map((x) => Math.max(-1, x - 8));
let separate_ind = comb_to_index(filtered.map((x) => +(x >= 0))) * 2 + permutation_parity(filtered.filter((x) => x >= 0));
return [edge_ind, corner_ind + 81 * separate_ind];
}
var tables = {};
function generate_phase1_corner_mtable() {
if (tables.phase1cm) {
return tables.phase1cm;
}
let mtable = [];
for (let i = 0; i < 81; i++) {
mtable[i] = Array(8);
let o = [
i % 3,
Math.floor(i / 3) % 3,
Math.floor(i / 9) % 3,
Math.floor(i / 27)
];
mtable[i][0] = mtable[i][1] = mtable[i][2] = mtable[i][3] = i;
for (let j = 0; j < 4; j++) {
o[j] = (o[j] + 2) % 3;
mtable[i][4 + j] = o[0] + o[1] * 3 + o[2] * 9 + o[3] * 27;
o[j] = (o[j] + 1) % 3;
}
}
return tables.phase1cm = mtable;
}
function generate_phase1_corner_ptable() {
if (tables.phase1cp) {
return tables.phase1cp;
}
let ptable = Array(81);
for (let i = 0; i < 81; i++) {
let o = [
i % 3,
Math.floor(i / 3) % 3,
Math.floor(i / 9) % 3,
Math.floor(i / 27)
];
ptable[i] = (o[0] !== 0) + (o[1] !== 0) + (o[2] !== 0) + (o[3] !== 0);
}
return tables.phase1cp = ptable;
}
function generate_phase1_edge_mtable() {
if (tables.phase1em) {
return tables.phase1em;
}
let mtable_single = [];
for (let i = 0; i < 12; i++) {
mtable_single[i] = [];
for (let m = 0; m < 8; m++) {
mtable_single[i][m] = moves[m][0].indexOf(i);
}
}
let mtable = Array(12 ** 4);
for (let i = 0; i < 12 ** 4; i++) {
mtable[i] = Array(8);
for (let m = 0; m < 8; m++) {
let I = 0;
for (let j = 0; j < 4; j++) {
I += mtable_single[Math.floor(i / 12 ** j) % 12][m] * 12 ** j;
}
mtable[i][m] = I;
}
}
return tables.phase1em = mtable;
}
function generate_phase1_edge_ptable() {
if (tables.phase1ep) {
return tables.phase1ep;
}
return tables.phase1ep = bfs(generate_phase1_edge_mtable(), [
8 + 12 * (9 + 12 * (10 + 12 * 11))
]);
}
function generate_phase1_separate_mtable() {
if (tables.phase1sm) {
return tables.phase1sm;
}
const C12_4 = C(12, 4);
let mtable_c = [];
for (let i = 0; i < C12_4; i++) {
mtable_c[i] = [];
let comb = index_to_comb(i, 4, 12);
let perm = [];
for (let j = 0, k = 0; j < 12; j++) {
if (comb[j] === 0) {
perm[j] = -1;
} else {
perm[j] = k++;
}
}
for (let m = 0; m < 8; m++) {
let new_perm = compose(perm, moves[m][0]);
let new_comb = compose(comb, moves[m][0]);
let parity = permutation_parity(new_perm.filter((x) => x >= 0));
mtable_c[i][m] = comb_to_index(new_comb) * 2 + parity;
}
}
let mtable_co = generate_phase1_corner_mtable();
let mtable = [];
for (let j = 0; j < C12_4; j++) {
for (let i = 0; i < 81; i++) {
let m0 = mtable[i + 81 * (2 * j)] = [];
let m1 = mtable[i + 81 * (2 * j + 1)] = [];
for (let m = 0; m < 8; m++) {
m0[m] = mtable_co[i][m] + 81 * mtable_c[j][m];
m1[m] = mtable_co[i][m] + 81 * (mtable_c[j][m] ^ 1);
}
}
}
return tables.phase1sm = mtable;
}
function generate_phase1_separate_ptable() {
if (tables.phase1sp) {
return tables.phase1sp;
}
return tables.phase1sp = bfs(generate_phase1_separate_mtable(), [0]);
}
function generate_phase2_corner_mtable() {
if (tables.phase2cm) {
return tables.phase2cm;
}
let phase1_mtable = generate_phase1_corner_mtable();
let mtable = Array(81);
for (let i = 0; i < 81; i++) {
mtable[i] = phase1_mtable[i].slice(4, 8);
}
return tables.phase2cm = mtable;
}
function generate_phase2_edge_mtable() {
if (tables.phase2em) {
return tables.phase2em;
}
const n = 8;
const HALFFACT8 = factorial(n) / 2;
let mtable = Array(HALFFACT8);
let perm = [0, 1, 2, 3, 4, 5, 6, 7];
for (let i = 0; i < HALFFACT8; i++) {
mtable[i] = Array(4);
for (let m = 0; m < 4; m++) {
let new_perm = compose(perm, moves[m][0].slice(0, 8));
mtable[i][m] = evenpermutation_to_index(new_perm);
}
if (i === HALFFACT8 - 1) {
break;
}
let parity = 0;
do {
for (let k = n - 2; k >= 0; k--) {
if (perm[k] > perm[k + 1]) {
continue;
}
let l = k + 1;
for (let L = l; L < n; L++) {
if (perm[L] > perm[k]) {
l = L;
}
}
[perm[k], perm[l]] = [perm[l], perm[k]];
parity ^= 1;
for (let j = 0; k + 1 + j < n - 1 - j; j++, parity ^= 1) {
[perm[k + 1 + j], perm[n - 1 - j]] = [
perm[n - 1 - j],
perm[k + 1 + j]
];
}
break;
}
} while (parity !== 0);
}
return tables.phase2em = mtable;
}
function generate_phase2_edge_ptable() {
if (tables.phase2ep) {
return tables.phase2ep;
}
return tables.phase2ep = bfs(generate_phase2_edge_mtable(), [0]);
}
function bfs(mtable, goal_states) {
let N = mtable.length;
let nmoves = mtable[0].length;
let ptable = Array(N).fill(-1);
let queue = goal_states.slice();
let new_queue = [];
let depth = 0;
while (queue.length > 0) {
new_queue.length = 0;
for (let state of queue) {
if (ptable[state] !== -1) {
continue;
}
ptable[state] = depth;
for (let move_index = 0; move_index < nmoves; move_index++) {
let new_state = mtable[state][move_index];
while (new_state !== state) {
new_queue.push(new_state);
new_state = mtable[new_state][move_index];
}
}
}
[queue, new_queue] = [new_queue, queue];
depth += 1;
}
return ptable;
}
function ida_solve(indices, mtables, ptables, max_bound) {
max_bound = max_bound || 999999;
let ncoords = indices.length;
let bound = 0;
for (let i = 0; i < ncoords; i++) {
bound = Math.max(bound, ptables[i][indices[i]]);
}
while (bound <= max_bound) {
let path = ida_search(indices, mtables, ptables, bound, -1);
if (path !== void 0) {
return path;
}
bound++;
}
}
function ida_search(indices, mtables, ptables, bound, last) {
let ncoords = indices.length;
let nmoves = mtables[0][0].length;
let heuristic = 0;
for (let i = 0; i < ncoords; i++) {
heuristic = Math.max(heuristic, ptables[i][indices[i]]);
}
if (heuristic > bound) {
return;
}
if (bound === 0) {
return [];
}
if (heuristic === 0 && bound === 1) {
return;
}
for (let m = 0; m < nmoves; m++) {
if (m === last) {
continue;
}
if (m < last && tetrad[m] === tetrad[last]) {
continue;
}
let new_indices = indices.slice();
for (let c = 0; c < ncoords; c++) {
new_indices[c] = mtables[c][indices[c]][m];
}
let r = 1;
while (indices.some((_, i) => indices[i] !== new_indices[i])) {
let subpath = ida_search(new_indices, mtables, ptables, bound - 1, m);
if (subpath !== void 0) {
return [[m, r]].concat(subpath);
}
for (let c = 0; c < ncoords; c++) {
new_indices[c] = mtables[c][new_indices[c]][m];
}
r++;
}
}
return;
}
function* ida_solve_gen(indices, mtables, ptables) {
let ncoords = indices.length;
let bound = 0;
for (let i = 0; i < ncoords; i++) {
bound = Math.max(bound, ptables[i][indices[i]]);
}
while (true) {
yield* ida_search_gen(indices, mtables, ptables, bound, -1);
bound++;
}
}
function* ida_search_gen(indices, mtables, ptables, bound, last) {
let ncoords = indices.length;
let nmoves = mtables[0][0].length;
let heuristic = 0;
for (let i = 0; i < ncoords; i++) {
heuristic = Math.max(heuristic, ptables[i][indices[i]]);
}
if (heuristic > bound) {
return;
}
if (bound === 0) {
yield [];
return;
}
if (heuristic === 0 && bound === 1) {
return;
}
for (let m = 0; m < nmoves; m++) {
if (m === last) {
continue;
}
if (m < last && tetrad[m] === tetrad[last]) {
continue;
}
let new_indices = indices.slice();
for (let c = 0; c < ncoords; c++) {
new_indices[c] = mtables[c][indices[c]][m];
}
let r = 1;
while (indices.some((_, i) => indices[i] !== new_indices[i])) {
let subpath_gen = ida_search_gen(
new_indices,
mtables,
ptables,
bound - 1,
m
);
while (true) {
let { value: subpath, done } = subpath_gen.next();
if (done) {
break;
}
yield [[m, r]].concat(subpath);
}
for (let c = 0; c < ncoords; c++) {
new_indices[c] = mtables[c][new_indices[c]][m];
}
r++;
}
}
}
async function getRandomRediCubeScramble() {
return new Alg(stringify_move_sequence(generate_random_state_scramble()));
}
export {
getRandomRediCubeScramble,
sgsDataFTO
};
//# sourceMappingURL=search-dynamic-sgs-unofficial-R2TXOWXD.js.map