In the interest of full disclosure, I am a Sage developer. I'm preparing a patch that affects the Dancing Links interface in Sage. The scores of some of my solutions past and future will be impacted by this. For example,
ExactCovers(...)
instead of
[[p[i]for i in x]for x in DLXCPP(p)]
and
ExactCovers(...,1)
instead of
sum(1 for x in DLXCPP(...))
or
len(list(DLXCPP(...))
by a side-effect of the function definition
ExactCovers(problem,count_only=False,solution_callback=True)
.
I think, as both a Sage developer and a researcher using this function, that this is the right interface for the Dancing Links algorithm. I put the old interface in, and it's time to fix it.