An implementation of Knuth's AlgorithmX for solving exact cover problems