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 hashes)

Uploaded Source

Built Distribution

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

Uploaded Python 3

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