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
File details
Details for the file rubik-sim-1.0.0.tar.gz
.
File metadata
- Download URL: rubik-sim-1.0.0.tar.gz
- Upload date:
- Size: 8.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/4.0.2 CPython/3.11.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e8f3e8cac60758b2082c7da7b74ad5c5cb2d86a88afd52a3d961b24b68a734a4 |
|
MD5 | 5f7efbfd3c4d2230c9832cc54dc04d41 |
|
BLAKE2b-256 | caec8c1d617a5aa591725cbba6c10328417325fd2d2aa8b2b59e3cc961d4ccd4 |
File details
Details for the file rubik_sim-1.0.0-py3-none-any.whl
.
File metadata
- Download URL: rubik_sim-1.0.0-py3-none-any.whl
- Upload date:
- Size: 7.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/4.0.2 CPython/3.11.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | dab9b7327f0e6cc5cb85252e6fa9ade1a514e2f210bb12d868fef3bffa060d6f |
|
MD5 | 795d77871bb47ea2fd0201ca92a7ac50 |
|
BLAKE2b-256 | a4eeece317383c8785dcf0284b18f808c1c3e7d24b717e919af5dd0275228925 |