Solver for sliding block puzzle Khun Phan

So, I was playing with this Khun Phan puzzle, and for certain set-ups of the pieces it was pretty hard. Kinda real hard... So, rather than risking insanity by spending countless hours trying to figure it out, I decided to use my computer to do the thinking for me, and I wrote a program that finds the solution to any set-up of the puzzle. As an insanity-avoidance tool, this program clearly failed miserably... However, it does do a very nice job of solving the puzzle. Anyway, the program is very easy to use. Just drag and drop the pieces onto the board and double click the rectangles if you want to rotate them. Once you have them on the board, just hit the find solution button, and the program will find a minimal (fewest moves) solution for you if a solution exists. Then you can go through the steps of the solution with the other two buttons. I didn't put in the source code for it, since it really isn't that hard, and my code isn't exactly filled with comments. I would suspect that it would take you longer to figure out what I did than it would to just do it yourself. To use it, just unzip the two files that are in the .zip file to the same directory and you're ready to go. Note: works on Windows only.

Mandelbrot Set Plotter (source code)

Yet another program to draw the Mandelbrot Set ({x in C| (((x²+x)²+x)²+x)²+.... is finite}).  Double click to zoom in, right click to zoom out.  Change the iterations and turn up the color mapping values for a better picture.

4-Variable logical function minimizer (source code)

Type in a logical expression in the top text box and hit the return key, or click in grid below to explicitly define what you want your function to do.  For your logical expression, use a, b, c and d for your variables and for their negations, use A, B, C, and D respectively.  To "AND" two variables, just type them next to each other.  To "OR" them, separate them by a "+".  Sorry- I haven't gotten around to parentheses yet- they aren't recognized.  "AND" always takes precedence over "OR".  If you're using the grid to define your function and if there are inputs to your function for which the output doesn't concern you, you can mark these with an "X" by clicking twice in the grid.  Click the "minimize" button at the bottom, and the terms of your "sum" will be circled and the minimized expression will be written to the bottom text box. Disclaimer: I make no guarantees regarding the correctness of my algorithm, but I'm pretty sure it works. I didn't use a standard known algorithm (like Quine McClusky) due to the fact that I didn't know such things existed when I wrote the program.

C++ Source code formatter for HTML (source code)

This program takes a C++ source file and produces an html document that looks like the source file when viewed through one of those fancy source code editors (different colors for keywords, comments and other text). Apparently this is not an original idea... unfortunately no one told me that these things already exist before I wrote it. Oh well. It was fun anyway.