Sometimes, your task is to solve a certain kind of puzzle optimally. At the same time, there are a lot of different possible solutions for the puzzle, probably more than you could ever handle. And now you ought to find the very best of all sollutions...
This is where SAT solvers can come in very handy. These can solve the
boolean satisfiability problem very very fast (most of the time). You just give them the rules of the game in an appropriate format, and it will find ONE solution for you (if a solution exists). So if it's still a solvable problem, you just have to add some more rules to find a better solution. At some point, you will have found the best solution this way, AND you even proved that the solution is optimal.
The biggest problem about that is: You have to translate the game into a set of just boolean variables. This is quite hard, you need to consider absolutely every detail, even the most "trivial" rules, and rules you wouldn't really think of. So it's limited to games where you really know ALL rules.
However, I got it to work for
DS Polarium (there it is relatively slow on small puzzles, but very fast for larger or more difficult ones), and I made a small
SAT-solver-framework.lua which simplifies the task of entering clauses,
and a sample file on how to use it...
I used it to implement the rules of Tetris (well, only 1 / 20th right now, and I will most probably not implement the rest, I think there is already very good software available for this game...) in a way so that a SAT solver can understand it, get
Tetris.lua here.
Can you think of more games where such a SAT solver approach may work?