I wrote this Java application for my final project at the University of St Andrews, where I graduated in 2006 - there's always something of an unspoken competition among the year to come up with the silliest legitimate acronym. This one's own abbrevation stands for Solitaire Specification, Simulation and Solution System - the aim of the project was to create something that could solve games of various Solitaire variants as fed to it through an XML specification markup.
And it sort of worked. It's not the best Solitaire solver in the world or anything, using quite an inefficient general method a lot of the time. The source is included in the ZIP so that you can look at how it does everything - it's looking slightly dodgy these days but it allowed me to graduate!
You'll need Java to run it (I'd specify JSE 1.4.2 or greater, but who doesn't have that now?) - just start it up with "run.bat" and it'll sort itself out. Also included are the acres of reports and user guides that I included with my submission, which should help you make some sense of it.