I am trying to find a good domain reduction library that does the following:
Imagine, the game of Minesweeper on Windows.
Each cell has certain options (bomb 💣/not-bomb) etc.
And the numbers in the cells give constraints e.g. c1+c2+c3+..c8=5
My requirements are to use
domain reduction to find forced bombs, and forced-empties.
But, I would like it to use efficient domain reduction algorithms and not simply aggregate all possible models (except as a last resort). As an example, a similar program exists here:
https://cse.unl.edu/~minesweeper/version1/minesweeper/ Which uses GAC and similar things. A solution which simply aggregates every possible model would be very inefficient in most cases.
For a game like mineswepper in most cases the puzzle cannot be fully solved in one go. Thus, I am interested in simply reducing the domain of as many cells as possible.
(I am giving the example of a Minesweeper solver, but I have more general problems in mind).
OR-Tools seems a good tool as it has C# API, which I require but I'm not sure if it does efficient domain reduction or if it is more optimised towards finding complete models.
Can you suggest if OR-Tools is the right tool for the job or whether another library would be more suited? (e.g. gecode?) Or should I write it myself? (I am a decent programmer but I doubt I could match the efficiency of dedicated lilbraries).
Thanks