feat: expand sudoku analysis and interoperability
This commit is contained in:
@@ -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
@@ -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 0–100 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
|
||||
|
||||
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user