Files
puzzles/unfinished
Simon Tatham 5030d87903 latin_solver_alloc: handle clashing numbers in input grid.
In the setup phase of the centralised latin.c solver, we start by
going over the input grid containing already-placed clue numbers, and
calling latin_solver_place to enter each on into the solver's data
structure. This has the side effect of ruling out each number from the
rest of the row and column, and _also_ checking by assertion that the
number being placed is not ruled out.

Those are a bad combination, because it means that if you give an
obviously inconsistent input grid to latin_solver_alloc (e.g. with two
identical numbers in a row already), it will fail an assertion. In
that situation, you want the solver run as a whole to return
diff_impossible so that the error is reported cleanly.

This assertion failure could be provoked by giving either Towers or
Group a manually-constructed game description inconsistent in that
way, and hitting Solve. Worse, it could be provoked during live play
in Unequal, by filling in a number clashing with a clue and then
pressing 'h' to get hints.
2023-02-05 10:41:17 +00:00
..
2021-03-29 18:22:20 +01:00
2021-03-29 19:02:23 +01:00

This subdirectory contains puzzle implementations which are
half-written, fundamentally flawed, or in other ways unready to be
shipped as part of the polished Puzzles collection.

The CMake build system will _build_ all of the source in this
directory (to ensure it hasn't become unbuildable), but they won't be
included in all-in-one puzzle binaries or installed by 'make install'
targets. If you want to temporarily change that, you can reconfigure
your build by defining the CMake variable PUZZLES_ENABLE_UNFINISHED.
For example,

  cmake . -DPUZZLES_ENABLE_UNFINISHED="group;slide"

will build as if both Group and Slide were fully official puzzles.