Constraint programming is a programming paradigm in which a set of constraints
that a solution must meet are specified rather than set of steps to obtain such
a solution. It can be used for solving Battleship puzzles. I’ve added
links to
two interesting resources related to Constraint Programming and Solitaire
Battleship puzzles.