Inspiration

This was inspired by Jacob's massive intellect at 6pm.

What it does

You can:

  • Input the state of a Rubik's cube visually by changing the colour of stickers in a 3d viewer, it will then encode the state of the cube as an integer and convert that into a series of words per QRTs wordlist
  • Input 3 words from QRT's wordlist and then it will turn them into an integer and then decode that into the state of a cube, displaying the moves required to get to that state alongside a visual 3d representation.

How we built it

It was built using a custom engine and pygame (by Jacob) and a lot of code from herbert kociemba's twophase repository in order to represent the cube state and perform operations on it, it then took a lot of time to figure out an appropriate representation that would allow us to encode and decode reliably, I ended up finding Lehmer codes, mixed radix numbers and Horner's method.

Challenges we ran into

We initially tried to encode the cube state using some naive bitwise encoding and it took a while to realise that it wouldn't work.

Accomplishments that we're proud of

I was personally quite enjoyed when encoding and decoding worked reliably after doing a large scale test, and Jacob was really pleased to get the 3d cube viewer working, we're both really proud of the fact that we have a working project at the end of this, that does exactly what we want, given our constraints.

What we learned

Don't try to vendor a dependency, even if you only need part of it, just pip install if that's available.

What's next for QBEncode

There are likely a couple bugfixes to be made, given the speed of implementation, it would be cool to add some features like computer vision cube input, or other UI elements etc.

Built With

Share this project:

Updates

Submission history