Computer Oriented Solutions to the Rubik's Cube
(Version: ASP.NET 3.5 / C#)
by Douglas E. Woolley

Download videos (wmv files): Intro  Instructions  Main Options
or
Start by viewing video of Intro (mp4 file) using controls below:

Use your own puzzle:
Use a random puzzle:
Use a sample  puzzle:
Enter number of random puzzles to solve:

T
o
p
Goal is to restore each face to a solid color
F
r
o
n
t
B
o
t
t
o
m
Right
Posterior
Left








or

Enter your own puzzle (6 lines (faces) of 9 colors)





Copyright (c) 2012 by Douglas E. Woolley



History

In my 10th grade biology class, we had to come up with a science fair project that was a part of our grade for the class.  I nervously thought about some possibilities: mutating flies, dissecting a frog, mutating plants, etc.  None of these really appealed to me.  Then one day, I came up with an astounding idea!  I had just learned BASIC computer programming over the summer prior to 10th grade and now I was taking the next course "Computer Math II".  At this time in October of 1981, the Rubik's Cube was extremely popular all over the country and the world.  I had also seen people take a mixed-up Rubik's cube and solve it using a pre-determined algorithm, though I had never touched it.  I theorized that if a person could solve the Rubik's Cube using a pre-determined algorithm, surely a computer could be programmed to solve it too.  I shared my theory with my biology teacher and she wondered if it could be possible (especially since it was due in two months), but she said that if I could do it I would definitely get an "A" for the project.  I was excited that the idea was approved, and now I thought for many days and nights how to tell the computer how to solve the Rubik's Cube.  Then one morning, I woke up with the key to the solution (which I believe came by Divine inspiration).  I began to relentlessly write pages of BASIC code that would simulate the movements of the puzzle and allow the computer to know what the puzzle looks like after the move has been made.  After approximately 100 hours of programming, testing, and debugging, I finally had a program that could graphically solve the Rubik's Cube after a user enters into the program the colors of each square of the cube.  Not only did I receive an "A" on my project, but I also placed 2nd in the Broward County Science Fair in the category of Mathematics & Computers.


 

During 11th grade, I included graphical solutions to various other mathematical puzzles such as Rubik's Pocket Cube, the Pyraminx, Whip-It, the Missing Link, the Magic Ball, and the Picture Cube.  Additionally, the project included some mathematical Group Theory to explain how the algorithms are developed that solve these puzzles.  As a senior in High School, my project and an intensive academic/scientific background/aptitude were submitted to the Westinghouse Science Talent Search, the most prestigious national science contest.  To the joy of many, my project and the project of a fellow-class mate (Jennifer Fisher) had both been named into the Honors Group (top 300), thus we were each named as one of the top 300 high school scientists in the nation.

Five years later, as a senior at the University of South Florida, I enhanced the Rubik's Cube program and rewrote it in the language of Pascal, having gained further skills as a Computer Science major. You may view my 37 page document entitled Computer Oriented Solutions to the Rubik's Cube, which  I produced in college for my senior project.  Building from my high school project, I coded the solution in Turbo Pascal.  You may view the HTML version or the PDF version of the User's Guide.  You may also view the complete Pascal program listing in HTML format.

On my 46th birthday (Oct. 16, 2012), my favorite Aunt, came from Montana to treat my family and I (and extended family) to a nice dinner. I made a speech and actually presented her with a gift--a gift she gave me on my 15th birthday--a new Rubik's Cube (along with some old pictures). After receiving the puzzle 31 years earlier, I learned to solve it and then programmed a computer to solve it, and eventually gained success for the achievement. I thanked her for the special gift that helped stimulate my academic pursuits.

In October/November of 2012, I rewrote my Rubik's Cube program using object-oriented technologies of ASP.NET 3.5, C#, and JavaScript. This latest program is demonstrated at the top of this web page.