Well, I truly hope the 4x4x4 solver has helped you. Before I dive right in to the history of the program, I'd like to make a request.
If you have found this program to be helpful in the least bit, I would request that you take a moment of your time to write me something briefly about it. I have decided that I intend for now to keep the solver free for public use, but this is what I ask in exchange.
Just let me know a little bit about yourself, where you come from, how to pronounce your name. What's your favorite food? Do you find the cube to be only a frustration? Any beautiful single women out there?
I also now accept donations (of any amount, it all helps) - just visit here.
Send email to root @ wrongway . org, or fill out the form.
Now for a brief history lesson.
The 4x4x4 solver's inception has been a bit rocky. I first wrote a 3x3x3 solver in Qbasic around April of 2002, and later ported it to C++ and made a CGI version for my website.
Then in early 2003, I decided to make a 4x4x4 solver, but I was sticking too closely to the construct of the 3x3x3 solver that some of the differences between the two cubes were just irreconcilable. Primarily, the ambiguity of what "solved" means with respect to a 4x4x4 cube. Since there are 4 centers of each color and 2 of each type of edge, there are numerous possible different arrangements which all lead to a "solved" cube, if you define solved as simply having a solid color on each face.
However, in around November 2003, I took an entirely different approach to the problem and learned some things about the cube (as well as inadvertantly cleaned up the 3x3x3 code quite a bit in the process). For one thing, although there is 2 of each edge on a 4x4x4 cube, they can never swap positions without also both flipping over. So, they are in fact unique, and I devised a method for dealing with "right" and "left" edges differently.
The other problem was, that in a 3x3x3 cube, the centers can never move with respect to eachother, which makes it very easy for the solver to immediately know which color will be on top, which will be on the sides and so forth. However with the 4x4x4 cube, the centers CAN move with respect to eachother, so in order to infer what the final color arrangement will be from the beginning, one must examine the corners of the cube.
But, I became busy and never finished the project, and kind of lost interest until September of 2004, when my laptop's hard drive crashed irretrievably, and the ONLY STINKING COPY of the sourcecode to the 4x4x4 solver was lost along with it. I learned the age old valuable lesson of routinely making hard backups of all my personal files.
Well, this stimulated my thoughts once more and I decided to have another go at the program, and, finally, in June 2005, I completed it, only about 2 years behind schedule.
But, of course, for me, that's rather early.
Oh yeah and funny story - back in early 2003, when I was running the 3x3x3 solver on a windows server, there was a tiny little bug... OH SO very tiny yet oh so very critical... where the cubelet checker would not check for opposite center swapping parity, and someone else kept trying to solve a ficticious cube (that looked like this if you're interested), and it kept on hanging my poor server and I was totally bewildered for a day... the lesson is: ALWAYS provide some sort of emergency bailout condition for your while()'s and check that a loop hasn't iterated an unreasonable amount of times........
Now I'm finally going to finish that chess engine (note: the walk may or may not match the talk)