Skip to content

masak/dlx-simple

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

72 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Dancing Links is a technique for speeding up exact cover searches. See
these links for inspiration.

    <http://www-cs-faculty.stanford.edu/~uno/papers/dancing-color.ps.gz>
    <http://en.wikipedia.org/wiki/Dancing_Links>
    <http://cgi.cse.unsw.edu.au/~xche635/dlx_sodoku/>
    <http://www.sudopedia.org/wiki/Dancing_Links>

== Loose plan

Implement exact cover search with Dancing Links in Perl 5, then C, then
Perl 6. Solve these problems, if possible:

* SEND+MORE=MONEY and other alphametics problems
  (an interesting variant is 
     SEND+MOST=MONEY 
   where the object is to find all solutions which
   maximizes MONEY)
* N-queens: both 2D (grid) version and 1D (row) version
* Pentominoes (see Knuth's paper above)
* Sudoku
* Hidato
* The xkcd knapsack problem <http://xkcd.com/287/>
* Map coloring
* Nonogram
* Magic square
* Anagrams
* Knight's tour
* Shift workers https://www.lms.ac.uk/sites/default/files/SMT-KT-report-screen.pdf

That should be more than enough. :-)

But the actual search -- while interesting in itself, and important to get
right -- wouldn't be the focus of this project. Instead, the challenge
would be to create adequate ways to *specify* the above problems, in ways
that are as close as possible to the way a person would specify the problem
to another person.

This way, we approach the dream of specifying problems not in the way the
computer expects, but in the way we expect.

 <http://www.moserware.com/2008/04/towards-moores-law-software-part-3-of-3.html>

All the exact cover problems can be re-stated as big, boring matrices. The
filters/preprocessors that we write would take a human problem specification
and translate it to a boring matrix. The solution could then be mapped onto
the original problem specification, making it extremely readable for the one
specifying the problem. The boring matrices are error-prone and, well,
boring. But this way, all the user sees is her own "views" of the problem.

== A nice article with explanations

https://louisabraham.github.io/articles/exact-cover

About

A human way to specify exact cover problems

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published