Skip to content

Python module that simulates a Square-1 twisty puzzle.

License

Notifications You must be signed in to change notification settings

Wo0fle/virtual-sq1

Repository files navigation

virtual-sq1

pip install virtual-sq1


Python module that simulates a Square-1 twisty puzzle

Build Coverage Status PyPI - Python Version

Usage

Import and create Square1 object

Solved by default.

from virtual_sq1 import Square1


my_square_1 = Square1()

View Square1's current state

virtual_sq1 uses (almost) the same position notation as Jaap's Square-1 optimiser.

Don't know how to read it? Click here!

my_square_1 = Square1()

print(my_square_1)
# A1B2C3D4-5E6F7G8H

Apply an algorithm to Square1

my_square_1 = Square1()

my_square_1.apply_alg("/ (3,0) / (-3,-3) / (0,3) /")

print(my_square_1)
# A1C3B2D4-5E7G6F8H

Apply a case to Square1

Changes the Square1's state so that the input algorithm brings it to its current state.

my_square_1 = Square1()

my_square_1.apply_alg("/ (3,0) / (1,0) / (0,-3) / (-1,0) / (-3,0) / (1,0) / (0,3) / (-1,0)", True)

print(my_square_1)
# A2B3C1D4-5E6F7G8H

The distinction between a "case" and an "algorithm" was made by Tyson Decker's puzzle-gen

Apply a specific state to Square1

my_square_1 = Square1()

my_square_1.apply_state("ABCDEF GH12345678 /")

print(my_square_1)
# ABCDEF/GH12345678

Apply a individual moves to Square1

Not sure why you'd do this when you could just use apply_alg but... it's an option.

my_square_1 = Square1()

my_square_1.slash()  # a slice/slash move
my_square_1.top.turn(-3)  # turn the top layer -3
my_square_1.bottom.turn(3)  # turn the bottom layer 3
my_square_1.slash()  # a slice/slash move
my_square_1.top.turn(3)  # turn the top layer 3
my_square_1.bottom.turn(-3)  # turn the bottom layer -3
my_square_1.slash()  # a slice/slash move

print(my_square_1)
# C3B2A1D4/5E8H7G6F

Credits

This module was highly inspired by the following: