UNPKG

cubing

Version:

A collection of JavaScript cubing libraries.

69 lines (67 loc) 2.15 kB
import { Alg, Grouping } from "./chunk-3MMNI5O2.js"; // src/cubing/puzzles/implementations/dynamic/big-cubes/big-puzzle-orientation.ts function puzzleOrientationBigCubeIdx(pattern) { const idxUFR = pattern.patternData["CORNERS"].pieces[0]; const oriUFR = pattern.patternData["CORNERS"].orientation[0]; return [idxUFR, oriUFR]; } var puzzleOrientationBigCubeCacheRaw = new Array(8).fill(0).map(() => { return new Array(3); }); var puzzleOrientationBigCubeCacheInitialized = false; function puzzleOrientationBigCubeCache(bigCubeKPuzzle) { if (!puzzleOrientationBigCubeCacheInitialized) { { const uAlgs = [ "", "y", "y2", "y'", "x2", "x2 y", "x2 y2", "x2 y'" ].map((s) => Alg.fromString(s)); const UFRAlg = new Alg("Rv Uv"); for (const uAlg of uAlgs) { let transformation = bigCubeKPuzzle.algToTransformation(uAlg); for (let i = 0; i < 4; i++) { const [idxUFR, oriUFR] = puzzleOrientationBigCubeIdx( transformation.toKPattern() ); puzzleOrientationBigCubeCacheRaw[idxUFR][oriUFR] = new Alg([ ...uAlg.childAlgNodes(), new Grouping(UFRAlg, i) // TODO: make this more efficient ]).invert(); if (i === 3) { break; } transformation = transformation.applyAlg(UFRAlg); } } } } return puzzleOrientationBigCubeCacheRaw; } function normalizeBigCubeOrientation(pattern) { const [idxUFR, oriUFR] = puzzleOrientationBigCubeIdx(pattern); const orientationAlg = puzzleOrientationBigCubeCache(pattern.kpuzzle)[idxUFR][oriUFR]; return pattern.applyAlg(orientationAlg); } function experimentalIsBigCubeSolved(pattern, options) { if (options.ignorePuzzleOrientation) { pattern = normalizeBigCubeOrientation(pattern); } return pattern.isIdentical(pattern.kpuzzle.defaultPattern()); } export { experimentalIsBigCubeSolved, normalizeBigCubeOrientation, puzzleOrientationBigCubeCache, puzzleOrientationBigCubeIdx }; //# sourceMappingURL=big-puzzle-orientation-CQUVRARW.js.map