A Python utility package for generating scrambles for twisty puzzles without non-python dependency
Project description
cubescrambler
A Python package for generating scrambles of various twisty puzzles, including the Rubik's cube, 4x4x4 cube, and others, based on pyTwistyScrambler. Thanks to csTimer for providing the bulk of the Javascript scrambling source code around which this project is a wrapper. And thanks for pyTwistyScrambler for the base code this wrapper is built on.
Reason
pyTwistyScrambler is using PyExecJS for executing the JavaScript but it's EOL and it needs nodejs or any other js runtime on the system. My version uses dukpy which doesn't have any external dependencies and is actively maintained. There are no other changes besides removing FTO and rex puzzles because I didn't need them.
Example usage
from cubescrambler import scrambler333, scrambler222, scrambler444,\
megaminxScrambler, squareOneScrambler
scrambler333.get_WCA_scramble()
# D2 L F2 L2 F2 U2 L D2 F2 L' B' U2 F2 D' F D2 B' U2 R U'
scrambler222.get_WCA_scramble()
# R' F2 U2 R' U R2 F' U' F' U'
scrambler444.get_WCA_scramble()
# L2 F D2 R U Fw' Uw D L F Rw D' F L2 F' Rw' F Uw B' F' L2 B' U' Rw' F B R' D U2 L2 Fw' B D' Rw' Uw' B' Fw' R2 L2 U
megaminxScrambler.get_WCA_scramble()
# R-- D-- R++ D++ R++ D++ R++ D++ R++ D++ U R-- D++ R-- D++ R-- D++ R-- D++ R-- D-- U' R-- D++ R-- D-- R-- D++ R-- D-- R-- D-- U' R++ D++ R-- D-- R++ D-- R-- D++ R-- D-- U' R-- D-- R++ D++ R++ D-- R++ D++ R++ D-- U' R-- D-- R++ D-- R++ D-- R++ D-- R++ D++ U R++ D-- R++ D-- R++ D++ R-- D-- R++ D++ U
squareOneScrambler.get_WCA_scramble()
# (0, -1)/(4, 1)/(-4, 5)/(0, -3)/(1, -2)/(3, 0)/(2, 0)/(0, -3)/(4, -3)/(0, -4)/(2, 0)/(5, -2)/(4, 0)
What scrambles can be generated?
3x3x3 (Rubik's cube)
In scrambler333
module:
get_WCA_scramble()
random state scramble (WCA)get_3BLD_scramble()
BLD scrambleget_edges_scramble()
edges-onlyget_corners_scramble()
corners-onlyget_LL_scramble()
LL (last layer)get_F2L_scramble()
F2L (first two layers)get_easy_cross_scramble(n=4)
easy cross (where cross can be solved inn
moves)get_LSLL_scramble()
LSLLget_ZBLL_scramble()
ZBLLget_ZZLL_scramble()
ZZLLget_ZBLS_scramble()
ZBLSget_LSE_scramble()
LSEget_CMLL_scramble()
CMLLget_CLL_scramble()
CLLget_ELL_scramble()
ELLget_EOLine_scramble()
EO Lineget_2genRU_scramble()
2-gen with RU movesget_2genLU_scramble()
2-gen with LU movesget_2genMU_scramble()
2-gen with MU movesget_3genFRU_scramble()
3-gen with FRU movesget_3genRUL_scramble()
3-gen with RUL movesget_3genRrU_scramble()
3-gen with RrU movesget_half_turns_scramble()
half-turns only
2x2x2
In scrambler222
module:
get_WCA_scramble()
random scramble (WCA)get_optimal_scramble()
optimal random state scramble
4x4x4
In scrambler444
module:
get_WCA_scramble()
random scramble (WCA) (note: this is slow)get_4BLD_scramble(n=40)
alias ofget_random_state_scramble(n=40)
get_SiGN_scramble(n=40)
SiGN-notation scramble of lengthn
get_random_state_scramble(n=40)
random state scramble of lengthn
get_edges_scramble(n=8)
edges scramble
5x5x5
In scrambler555
module:
get_WCA_scramble(n=60)
random scramble (WCA) of lengthn
get_5BLD_scramble(n=60)
alias ofget_WCA_scramble
get_SiGN_scramble(n=60)
SiGN-notation scramble of lengthn
get_edges_scramble(n=8)
edges scramble
6x6x6
In scrambler666
module:
get_WCA_scramble(n=80)
random scramble (WCA) of lengthn
get_SiGN_scramble(n=80)
SiGN-notation scramble of lengthn
get_edges_scramble(n=8)
edges scramble
7x7x7
In scrambler777
module:
get_WCA_scramble(n=100)
random scramble (WCA) of lengthn
get_SiGN_scramble(n=100)
SiGN-notation scramble of lengthn
get_edges_scramble(n=8)
edges scramble
Pyraminx
In pyraminxScrambler
module:
get_WCA_scramble()
random scramble (WCA)get_optimal_scramble()
optimal random state scramble
Megaminx
In megaminxScrambler
module:
get_WCA_scramble(n=70)
random scramble (WCA) of lengthn
get_Carrot_scramble(n=70)
Carrot-notation scramble of lengthn
get_old_style_scramble(n=70)
old-style scramble of lengthn
Square-1
In squareOneScrambler
module:
get_WCA_scramble()
random scramble (WCA)get_face_turn_metric_scramble(n=40)
face-turn metric scramble of lengthn
get_twist_metric_scramble(n=20)
twist metric scramble of lengthn
Skewb
In skewbScrambler
module:
get_WCA_scramble()
random scramble (WCA)get_ULRB_scramble()
ULRB scramble
Clock
In clockScrambler
module:
get_WCA_scramble()
Clock scramble (WCA notation)get_Jaap_scramble()
Clock scramble (Jaap notation)get_concise_scramble()
Clock scramble (concise notation)get_efficient_pin_order_scramble()
Clock scramble (efficient pin order notation)
Big cubes
In bigCubesScrambler
module:
get_8x8x8_scrambler(n=120)
8x8x8 scramble (SiGN notation) of lengthn
get_9x9x9_scrambler(n=120)
9x9x9 scramble (SiGN notation) of lengthn
get_10x10x10_scrambler(n=120)
10x10x10 scramble (SiGN notation) of lengthn
get_11x11x11_scrambler(n=120)
11x11x11 scramble (SiGN notation) of lengthn
Cuboids
In cuboidsScrambler
module:
get_1x1x2_scramble()
1x1x2 cuboid scrambleget_1x3x3_scramble()
1x3x3 cuboid (floppy cube) scrambleget_floppy_cube_scramble()
alias ofget_1x3x3_scramble()
get_super_floppy_cube_scramble()
1x3x3 cuboid (super floppy cube) scrambleget_2x2x3_scramble()
2x2x3 cuboid scrambleget_3x3x2_scramble()
3x3x2 cuboid scrambleget_3x3x4_scramble()
3x3x4 cuboid scrambleget_3x3x5_scramble(n=25)
3x3x5 cuboid scramble, wheren
is the length of the non-3x3 portion of the scrambleget_3x3x6_scramble()
3x3x6 cuboid scrambleget_3x3x7_scramble(n=40)
3x3x7 cuboid scramble, wheren
is the length of the non-3x3 portion of the scramble
Copyright Notice
This software includes third party open source software components: pyTwistyScrambler from euphwes and csTimer from cs0x7f. Each of these software components have their own license. Please see ./LICENSE, and ./cubescrambler/js_resources/LICENSE.
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 cubescrambler-1.0.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d7a73884eb9695f5871e423d0880dd74364193fe9ae1de8343e61a0d12148160 |
|
MD5 | b6c645c7ee9fdb9ff4646b177084e20e |
|
BLAKE2b-256 | 287f9c8d4c8dce06e052ae4f384bc66581c176d9fcad4d7846b02867911c4a6b |