mirror of
git://git.tartarus.org/simon/puzzles.git
synced 2025-04-21 08:01:30 -07:00
Files

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.
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.