Currently word-overlaps occur only out of necessity of all of the words needing to fit
By recasting as an optimization problem the solver will (hopefully?) greedily seek to maximize this constraint, both leading to faster solutions and better puzzles
Phrasing this optimization requires being able to express the "count" of letter overlaps. This framing can then also be used to enforce the "one free letter" constraint as "for each word, at least one letter must have overlap_count == 1"
Not possible to do, Minizinc performs optimization via successive constraint satisfaction. If no solution satisfying the constraint can be found, no optimization can be performed.
Currently word-overlaps occur only out of necessity of all of the words needing to fit
By recasting as an optimization problem the solver will (hopefully?) greedily seek to maximize this constraint, both leading to faster solutions and better puzzles
Phrasing this optimization requires being able to express the "count" of letter overlaps. This framing can then also be used to enforce the "one free letter" constraint as "for each word, at least one letter must have overlap_count == 1"