"Per-cell" DLX logic puzzle solver.

Only supports a few constraint types.

Each DLX-row represents assigning a symbol to a particular column.
This implies (M-1)*N^2 DLX-rows. We start with 2*(M-1)*N DLX-columns for
enforcing permutations of each puzzle row. For some clues involving the first
puzzle-row, we can simply pick or delete DLX-rows. Otherwise we may need to add
up to N optional columns per symbol mentioned in the clue.

Thus the DLX table is polynomial in the size of the input.
per_cell_dlx: a few more constraint types.

Enough to solve the Zebra Puzzle.

 $ grizzly --alg=per_cell_dlx < zebra.gr