I've been an avid Cuber ever since I was in elementary school
and given my coursework and focus, I decided to combine my
longstanding hobby of Rubik's Cube with my software engineering
skills to bring to life an interactive virtual Rubik's Cube that
can take in user inputs to perform certain move and algorithms.
I also felt that it would be a fun challenge to implement a way for a program
to generate a solution to a scrambled Rubik's Cube. To really apply some classic computer science principles,
I used A* search with a custon Rubik's Cube heuristic function in C++ in order to
search through the different possible moves of the Rubik's Cube to find the right moves
to solve the Rubik's Cube. The program is not only robust and can reliably find a solution,
but it's also fast. With a search space that is comparable to the total grains of sand on the planet,
the program took anywhere from around a minute, all the way down to its personal record of 250 ms.
That's similar to finding a precise grain of sand in the time it takes to blink.
Using Blender's 3D graphics to
bring the cube to life and using Python
to animate the cube, I was able to
visualize the solution and play out
the turns needed to replicate the solution.
This project was a fun mix of computer science principles with
3D art that lives at the intersection of my creative hobbies and technical expertise.