Skip to content

memodungeon/cube

Repository files navigation

@memodungeon/cube

Small TypeScript Rubik's Cube library with:

  • cube state model (Cube)
  • algorithm parsing/inversion helpers
  • 3BLD edge/corner path helpers
  • built-in letter schemes (SPEFFZ, SPEFCZ, CHS)
  • it's based on https://github.com/ldez/cubejs but rewritten to TypeScript with custom logic in (3x3 blind solver mainly) and custom additional unit tests

Install

pnpm add @memodungeon/cube
# or npm i @memodungeon/cube

Usage

import { Cube } from "@memodungeon/cube";

const cube = new Cube();
cube.move("R U R' U'"); // sexy move

console.log(cube.toString());
console.log(cube.isSolved());

3BLD edge path

import { Cube, SPEFCZ } from "@memodungeon/cube";

const cube = new Cube().move("D2 L' D' B2 U2 B2 L' R' D2 L' U2 L' B2 R2 B U R' F2 L' B' F");
const path = cube.to3bldEdgePath({
  buffer: "U",
  letterScheme: SPEFCZ,
  targetFlip: [3, 1], // treat edge 3 as 1 for dealing with parity
});

console.log(path);

API (main exports)

  • Cube
  • CubeState
  • computeLetterSchemeMap
  • flipTargetEdgeLetter
  • resolveTargetFlipEdgeIds
  • SPEFFZ, SPEFCZ, CHS

Development

pnpm install
pnpm lint
pnpm test
pnpm build

License

MIT

About

TypeScript library for modeling and solving the 3x3x3 Rubik's Cube blindfolded

Resources

License

Stars

2 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors