Skip to main content

Basic Rubik's cube (3x3) simulator

Project description

tests_badge

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rubik-sim-1.0.0.tar.gz (8.2 kB view details)

Uploaded Source

Built Distribution

rubik_sim-1.0.0-py3-none-any.whl (7.8 kB view details)

Uploaded Python 3

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

Hashes for rubik-sim-1.0.0.tar.gz
Algorithm Hash digest
SHA256 e8f3e8cac60758b2082c7da7b74ad5c5cb2d86a88afd52a3d961b24b68a734a4
MD5 5f7efbfd3c4d2230c9832cc54dc04d41
BLAKE2b-256 caec8c1d617a5aa591725cbba6c10328417325fd2d2aa8b2b59e3cc961d4ccd4

See more details on using hashes here.

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

Hashes for rubik_sim-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 dab9b7327f0e6cc5cb85252e6fa9ade1a514e2f210bb12d868fef3bffa060d6f
MD5 795d77871bb47ea2fd0201ca92a7ac50
BLAKE2b-256 a4eeece317383c8785dcf0284b18f808c1c3e7d24b717e919af5dd0275228925

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page