I too have an implementation of Knuth's Dancing Links to solve Exact Cover. Since the main interest driving me to write it is the design and solution of 3D block packing puzzles, I've found that the "raw" input in the form of set-of-subsets is far too verbose for easy experimentation. (For example, the classic Soma Cube takes approximately 800 subsets to describe, because you need a different subset for each piece in each orientation.) I'm now working on a "pre-processor" that takes as input the set-of-cells occupied by a piece in one position and orientation, and emits the set-of-set-of-cells occupied by a piece in all positions and orientations (subject to bounding box restrictions). That will make the description of a new puzzle much more tractable. - John