feat: expand sudoku analysis and interoperability

This commit is contained in:
2026-08-30 23:21:56 +02:00
parent 4a9869baa0
commit 8ca9300ab3
73 changed files with 12482 additions and 384 deletions
+35
View File
@@ -16,6 +16,41 @@ All notable changes are documented here.
constraint family.
- Added bounded, seedable generation for classic and twelve variant families,
plus independent uniqueness and evidence-based difficulty assessment.
- Added X-sum, skyscraper, quadruple and maximum-cell constraints across the
model, validator, exact solver, renderer, setter and f-puzzles interchange.
- Added per-clue false semantics for liar/Wrogn puzzles, including bounded
impossible decoy numbers and a setter-wide false-clue mode.
- Added the original, uniquely verified “Truth and lies” example demonstrating
true and false outside, inclusion, maximum, cage, line and pair clues.
- Added outside-grid clue margins, combined dual X-sum/skyscraper labels,
outward maximum arrows and visually distinct false clues.
- Added strict, bounded local imports for SudokuPad/CTC data and supported
Penpa+ long links, including source reporting and explicit incompatibility
lists instead of silently discarded constructs.
- Added a compatibility check which never fetches SudokuPad short IDs or other
server-hosted puzzle references.
- Added standalone SVG, high-resolution PNG and single-page PDF visual exports
for supported constraints, givens and optional solving progress.
- Added named savepoints, isolated hypothesis branches, keep/discard decisions
and read-only replay of complete solving states.
- Added an optional configurable aid-mémoire whose labelled scratch cells
support values, both note styles and colours without constraining the puzzle;
its state is preserved in undo, replay, Library progress and project/share
interchange.
- Added a generalized Sum Lab with independent digit bounds, repeats,
required/excluded digits, selected-cell candidates, positional assignments
and reversible manual eliminations.
- Added Candidate Lab filters, selected/touching/specific-house scopes, house
positions, strong conjugate/bivalue links, weak links and bounded board
overlays.
- Added technique-targeted practice generation which mines a bounded,
deterministic set of uniquely checked puzzles and verifies the requested
technique in the logical solve path.
- Added real ARIA row/gridcell semantics, detailed cell descriptions and
non-wrapping Arrow, Home/End, Control/Command + Home/End and Page Up/Down
keyboard navigation for the puzzle and scratch grids.
- Made Killer cage repeat semantics explicit in the setter and independent of
whether a clue is required to be true or false.
## 0.1.0 - 2026-08-30
+46 -15
View File
@@ -8,33 +8,63 @@ release also runs independently from any static HTTPS host or local preview.
## Workspaces
- **Play** — keyboard, mouse and touch entry; multi-cell selection; values,
corner/centre notes and colours; undo/redo; conflict highlighting; timer and
local progress; optional digit-completion counts and matching-digit
highlights.
corner/centre notes and colours; undo/redo; named savepoints, hypothesis
branches and read-only replay; conflict highlighting; timer and local
progress; optional digit-completion counts, matching-digit highlights and a
configurable non-constraining aid-mémoire.
- **Set** — givens, metadata, regions and typed constraints; uniqueness checks
with overlap-safe cage replacement and selection-based cage removal.
- **Generate** — seedable, bounded construction for classic and 12 variant
families; independent uniqueness verification and evidence-based difficulty
assessment.
assessment; deterministic mining for a requested logical technique.
- **Solve** — exact solution counting plus an original human-style engine whose
steps include structured evidence, placements and eliminations.
- **Helpers** — Killer combinations and candidate-aware assignments, 45-rule
residuals, and Kropki, XV or inequality relation pairs.
- **Helpers** — generalized sum combinations with positional candidates and
manual eliminations; selected-cell and house candidate-link analysis; Killer
combinations, 45-rule residuals, and Kropki, sum-pair or inequality pairs.
Classic grids and common variants share one bounded puzzle model: irregular
regions, diagonals, Killer cages, thermometers, arrows, Kropki and numbered
5/10 sum-pair clues, inequalities, renban lines, palindromes, anti-knight,
anti-king and non-consecutive rules. Thirteen bundled, uniquely checked examples
demonstrate every supported constraint. Import accepts compact grid strings,
this project's JSON format, share fragments, and the common f-puzzles fields
supported by the model. Unknown constraints are reported rather than silently
discarded.
5/10 sum-pair clues, inequalities, renban lines, palindromes, X-sums,
skyscrapers, quadruples, maximum cells, anti-knight, anti-king and
non-consecutive rules. Every local clue can also be required to be false for
liar/Wrogn constructions. Fourteen original bundled examples demonstrate every
supported constraint and are exact-search verified as unique.
The board exposes real row/gridcell semantics and concise per-cell state to
assistive technology, including candidates, notes, colours, conflicts and
touching variant clues. Arrow keys never wrap; Home/End, Control/Command +
Home/End and Page Up/Down provide row- and grid-level navigation. The same
navigation model is available in the aid-mémoire scratch grid.
## Interoperability and visual export
The import dialog recognises compact grids, Sudoku Tools JSON/share fragments,
raw or inline f-puzzles data, SudokuPad/CTC (SCL) data, and Penpa+ self-contained
long links. It never follows a URL or resolves a server-side short ID. Imports
are size/decompression bounded, report their detected source before applying,
and stop with a list when a construct cannot be represented faithfully.
SudokuPad compatibility currently preserves cells, givens and progress, notes,
regions, metadata, solutions, Killer cages and supported global rules. Penpa+
compatibility is intentionally narrower: square, unrotated Sudoku grids with
givens/progress, thermometers and arrows. Visual-only lines, overlays, custom
symbols and other unsupported geometry are reported rather than ignored.
f-puzzles export likewise refuses false clues it cannot preserve.
Export can produce a standalone SVG, a high-resolution PNG, or a single-page
PDF entirely in the browser. Each visual uses the same trusted puzzle model and
renders region boundaries, supported variant clues and givens; current values,
notes and cell colours can be included or omitted with the progress switch.
Generation supports only size/variant combinations which pass the bounded
construction checks. The requested difficulty controls clue-removal targets;
the displayed 0100 result is calculated afterwards from logical techniques,
clue load and reproducible exact-search evidence. A timeout or node limit is
reported as unknown and never promoted to a uniqueness or difficulty claim.
Technique practice performs a bounded, deterministic search and returns a
puzzle only when its independently analysed solve path actually contains the
requested technique.
## Privacy and storage
@@ -46,7 +76,8 @@ Exported files and share URLs contain the puzzle data you chose to include.
SudokuPad short IDs identify server-hosted records and therefore cannot be
resolved by this deliberately offline application. Embedded f-puzzles payloads
are accepted without contacting their originating site.
and user-provided Sudoku Tools JSON documents are accepted without contacting
their originating site. Externally authored puzzle definitions are not bundled.
## Development
@@ -76,8 +107,8 @@ browser workflows and Toolbox contract before creating a deterministic
The interaction ideas and published solving concepts explored by SudokuPad,
SudokuWiki and the wider puzzle community informed the product requirements.
No code, artwork, wording or proprietary puzzle data from those applications is
included. Algorithms and explanations in this repository are independently
No externally authored puzzle definitions, code, artwork or documentation text
is bundled. Algorithms, UI, original examples and explanations are independently
implemented from mathematical rules and public standards.
## Licence
+9 -1
View File
@@ -16,4 +16,12 @@ runtime package. Development-only packages build and test the source but are
not shipped as runtime modules.
SudokuPad, SudokuWiki and HoDoKu are research references only. Their source,
documentation, wording, visual assets and puzzle data are not bundled or copied.
documentation wording, visual assets and externally authored puzzle data are
not bundled or copied.
The local compatibility code was tested against the open format behaviour in
[Penpa+](https://github.com/swaroopg92/penpa-edit) (MIT),
[penpa-to-scl](https://github.com/marktekfan/penpa-to-scl) (MIT), and
[SudokuPad sudokutools](https://github.com/SudokuPad/sudokutools) (MPL-2.0).
Those projects are format references only: no upstream executable code,
artwork, documentation text or puzzle data is distributed with Sudoku Tools.