Skip to content

Rubik's Cube simulator (and eventually solver) written entirely in Rust.

License

Notifications You must be signed in to change notification settings

stanleydesu/CubeSimRS

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CubeSim V2

CubeSim is a Rubik's Cube simulator and solver written entirely in Rust.

Features

Planned Features

  • User interface (web interface using WASM perhaps?).
  • Optimal solutions using the Kociemba algorithm

Usage

The core types in the library are as follows:

  • Cube trait: To support multiple implementations of a Rubik’s Cube, we define a trait which includes the minimal set of behaviours expected of a Rubik’s Cube. Specific implementations can then be used for different scenarios. For example, the FaceletCube is most performant while the GeoCube allows for easy 3D modelling.
  • Face enum: A face of a Rubik’s Cube sticker represented in WCA notation.
  • Move enum: A move of a 3x3x3 Rubik’s Cube represented in WCA notation. Each Move must be tagged with a MoveVariant to completely define a move.
  • MoveVariant enum: A move variation that must be applied to the Move enum.

After understanding these core types, we can start writing a basic simulation:

use cubesim::prelude::{Cube, Face, Move, MoveVariant};
use cubesim::cube_implementors::FaceletCube;
 
let cube = FaceletCube::new(3);
let turned_cube = cube.apply_move(Move::U(MoveVariant::Double));
println!("{:?}", turned_cube.get_state());

To build more complex simulations and solvers, please follow our official documentation.

Resources Used

About

Rubik's Cube simulator (and eventually solver) written entirely in Rust.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 100.0%