Basic Rubik's cube (3x3) simulator
Project description
Rubik Sim
This project allows to simulate a 3x3 Rubik's cube and perform operations over it.
⚙️ Setup
Requirements
- Python 3.9 or higher
Installation
The package is installable via pip:
pip install rubik-sim
Alternatively, the 'develop' branch can be installed for the latest changes
pip install git+https://github.com/Jtachan/genetic_rubiks_solver.git@develop
🏃 Usage
Initializing the cube
The package allows importing all the classes directly from the module.
To initialize the cube, it is only needed the RubiksCube
class.
This generates a fully solved cube. To obtain a random state using scramble()
from rubik_sim import RubiksCube
my_cube = RubiksCube() # Solved cube
my_cube.scramble() # Updates the cube by 25 random moves
The number of moves to scramble the cube can also be specified as a parameter:
RubiksCube.scramble(nof_moves: int = 25)
It is also possible to initialize any cube from a string of characters defining the color of each tile.
my_cube = RubiksCube.from_color_code(
'BBBBBBBBBGGGGGGGGGOOOOOOOOOYYYYYYYYYRRRRRRRRRWWWWWWWWW'
)
The only supported colors are green ('G'), orange ('O'), yellow ('Y'), red ('R'), white ('W') and blue ('B').
Representation
The cube's state can be represented by calling print()
>>> print(my_cube)
['B' 'B' 'B']
['B' 'B' 'B']
['B' 'B' 'B']
['G' 'G' 'G']['O' 'O' 'O']['Y' 'Y' 'Y']['R' 'R' 'R']
['G' 'G' 'G']['O' 'O' 'O']['Y' 'Y' 'Y']['R' 'R' 'R']
['G' 'G' 'G']['O' 'O' 'O']['Y' 'Y' 'Y']['R' 'R' 'R']
['W' 'W' 'W']
['W' 'W' 'W']
['W' 'W' 'W']
From the representation, the faces are:
- Blue = Top (up) face
- Green = Left face
- Orange = Front face
- Yellow = Right face
- Red = Back face
- White = Bottom (down) face
Rotating the cube
RubiksCube.perform_operations(operations: Sequence[NOTATION_MOVES])
This method updates the current state of the cube by performing operations over it. The supported operations are:
U, U', U2, D, D', D2, R, R', R2, L, L', L2, F, F', F2, B, B', B2, M, M', M2, E, E', E2, S, S' and S2.
These are the general notations for the possible moves on the cube. More about the Rubik's cube notation: https://ruwix.com/the-rubiks-cube/notation/
Any missing notation can be performed with the current notations.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for rubik_sim-1.0.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | dab9b7327f0e6cc5cb85252e6fa9ade1a514e2f210bb12d868fef3bffa060d6f |
|
MD5 | 795d77871bb47ea2fd0201ca92a7ac50 |
|
BLAKE2b-256 | a4eeece317383c8785dcf0284b18f808c1c3e7d24b717e919af5dd0275228925 |