Solution for Crystal-Maze-like problems with two simple solvers integrated with proof logging system.
The solvers consume .cm files, and produces .proof logs. It will translate .cm files to .opb file as well. To verify the logs you'll need VeriPB VeriPB installation can be found on its main page. To run it:
veripb cm.cm.opb cm.cm.proof
This is the entry point for solvers.
java Main [modelFile_name] [options]
c - concurrent
p - propagation
l - log prune
For a plain solver with proofs:
java Main cm.cm
For a concurrent solver with propagation:
java Main cm.cm cp
Note that concurrent and log prune (l) is not compatible;
And you don't need a dash for the options.
This is the model generator.
u - unique letters.
s - single node capacity.
d - directional edges.
For a 9x9 cm puzzle:
java Main [any_name.cm] 9 usd
For a 12x12 puzzle with no unique letter limit:
java Main 12_12_not_unique.cm 12 sd
Main entry and the single thread solver.
Node class, for specific node objects. It manages propagation as well.
This is the model object which holds the adjacency matrices and the translation between variables and node-letter pairs.
The concurrent solver.
The model generator.