42 lines
1.3 KiB
JavaScript
42 lines
1.3 KiB
JavaScript
import { DeepCube, MOVES } from "../src/utils/DeepCube.js";
|
|
import { BeginnerSolver } from "../src/utils/solvers/BeginnerSolver.js";
|
|
|
|
const allMoves = Object.keys(MOVES);
|
|
|
|
const getRandomScramble = (length = 20) => {
|
|
let s = [];
|
|
for (let i = 0; i < length; i++)
|
|
s.push(allMoves[Math.floor(Math.random() * allMoves.length)]);
|
|
return s.join(" ");
|
|
};
|
|
|
|
for (let i = 1; i <= 20; i++) {
|
|
let cube = new DeepCube();
|
|
const scramble = getRandomScramble();
|
|
scramble.split(" ").forEach((move) => (cube = cube.multiply(MOVES[move])));
|
|
|
|
const startTime = Date.now();
|
|
const solver = new BeginnerSolver(cube);
|
|
try {
|
|
const solution = solver.solve();
|
|
const elapsedTime = Date.now() - startTime;
|
|
console.log(
|
|
`Test ${i}: Solved in ${elapsedTime}ms. Solution length: ${solution.length}`,
|
|
);
|
|
|
|
// Verify it actually solved it
|
|
let testCube = cube.clone();
|
|
solution.forEach((m) => (testCube = testCube.multiply(MOVES[m])));
|
|
if (!solver.isSolvedState(testCube)) {
|
|
console.error(
|
|
`ERROR: Test ${i} failed to fully solve the cube mathematically!`,
|
|
);
|
|
process.exit(1);
|
|
}
|
|
} catch (e) {
|
|
console.error(`ERROR: Test ${i} threw an exception:`, e);
|
|
process.exit(1);
|
|
}
|
|
}
|
|
console.log("All 20 tests passed flawlessly!");
|