OpenAI Gym environments for various twisty puzzles
Project description
RubiksCubeGym
An OpenAI Gym environment for various twisty puzzles.
Currently available environments:
- 2x2x2 Pocket Rubik's Cube
- Pyraminx
- Skewb
Details:
2x2x2 Pocket Rubik's Cube
Action Space | Discrete(3) |
Observation Space | Discrete(3674160) |
Actions | F, R, U |
Rewards | (-inf, 100] |
Max steps | 250 |
Reward Types | Base, Layer By Layer Method, Ortega Method |
Render Modes | 'human', 'rgb_array', 'ansi' |
Pyraminx without tips
Action Space | Discrete(4) |
Observation Space | Discrete(933120) |
Actions | L, R, U, B |
Rewards | (-inf, 100] |
Max steps | 250 |
Reward Types | Base, Layer by Layer Method |
Render Modes | 'human', 'rgb_array', 'ansi' |
Skewb
Action Space | Discrete(4) |
Observation Space | Discrete(3149280) |
Actions | L, R, U, B |
Rewards | (-inf, 100] |
Max steps | 250 |
Reward Types | Base, Sarah's Method(Advanced) |
Render Modes | 'human', 'rgb_array', 'ansi' |
Installation
Via PyPI
pip install rubiks-cube-gym
Or build from source
git clone https://github.com/DoubleGremlin181/RubiksCubeGym.git
cd RubiksCubeGym
pip install -e .
Requirements
- gym
- numpy
- opencv-python
- wget
Scrambling
You can pass the scramble as a parameter for the reset function
self.reset(scramble="R U R' U'")
The scramble should follow the WCA Notation
Example
import gym
import rubiks_cube_gym
env = gym.make('rubiks-cube-222-lbl-v0')
env.reset(scramble="R U R' U' R' F R2 U' R' U' R U R' F'")
for _ in range(4):
env.render()
print(env.step(1))
env.render(render_time=0)
env.close()
(3178426, -26, False, {'cube': array([ 0, 9, 2, 15, 4, 5, 6, 21, 16, 10, 1, 11, 12, 13, 14, 23, 17, 7, 3, 19, 20, 18, 22, 8], dtype=uint8), 'cube_reduced': 'WRWGOOGYRBWBOOGYRGWBYBYR'})
(1542962, -1, False, {'cube': array([ 0, 21, 2, 23, 4, 5, 6, 18, 17, 16, 15, 11, 12, 13, 14, 8, 7, 10, 9, 19, 20, 3, 22, 1], dtype=uint8), 'cube_reduced': 'WYWYOOGBRRGBOOGRGBRBYWYW'})
(1682970, -1, False, {'cube': array([ 0, 18, 2, 8, 4, 5, 6, 3, 7, 17, 23, 11, 12, 13, 14, 1, 10, 16, 21, 19, 20, 9, 22, 15], dtype=uint8), 'cube_reduced': 'WBWROOGWGRYBOOGWBRYBYRYG'})
(2220193, 25, False, {'cube': array([ 0, 3, 2, 1, 4, 5, 6, 9, 10, 7, 8, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23], dtype=uint8), 'cube_reduced': 'WWWWOOGRBGRBOOGGRRBBYYYY'})
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
rubiks_cube_gym-0.3.1.tar.gz
(8.0 kB
view hashes)
Built Distribution
Close
Hashes for rubiks_cube_gym-0.3.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a850a18231ec3c1499f34eb53dcee338fb1e6375574bb99ab3ac343337c598de |
|
MD5 | 7f032986653ec087deb90459df2e4022 |
|
BLAKE2b-256 | ae4d46d72dc52872b1cdc23410c7f3609cfc7ddb95d278ebb38d5ce8f9a267a4 |