Capture the whole case
Add separate, sharp images of the full board, every suspect and every clue. Close-ups help when the printed text is small.
Free tool / Von Detective Sudoku
The Mord-Sudoku-Löser computes forced suspect placements and checks solution uniqueness across 3×3 to 12×12 room grids using bipartite row-column matching and spatial clue elimination (solving the built-in 4×4 case to Ada at R1C2, Bram at R2C3, Clara at R3C4, and Dorian at R4C1). Bring in a puzzle, rebuild its rooms and clues, and ask for a real hint before revealing the arrangement.
Start here
Photograph the board, the suspect list and all clue pages. You can add up to eight images of the same case before asking for a hint or solution. Images are used only to return this analysis and are not attached to an account.
Case editor
Create the rooms, mark sittable and blocking objects, then enter the instruction printed for each person.
Board
Choose a tool, then tap cells. Room colors show boundaries; object labels show whether a cell can be occupied.
Personen and instructions
Add photos above as extra evidence, or use the editor by itself.
Candidate fallback
Select a suspect, then tap cells to rule them in or out according to the printed clues. Every suspect begins as possible in every cell.
Possible cells for Ada
Bereit
Use the example if you want to see how hints and solution checking work.
How it works
Add separate, sharp images of the full board, every suspect and every clue. Close-ups help when the printed text is small.
Check the extracted clues and warnings. Add another photo when part of the case is missing or unclear.
Request one deduction first, or reveal the proposed arrangement only when you deliberately want the answer.
For the best result
Include the complete board and all written clues across your photos. Keep pages straight, avoid glare and make sure names, room boundaries and small text are readable. Always review the extracted evidence before trusting a solution.
Mord-Sudoku-Löser is an independent tool by Detective Sudoku. It is not affiliated with or endorsed by any third-party puzzle publisher.
Mathematical Method & Worked Example
The Mord-Sudoku-Löser models an N×N case board as a binary constraint-satisfaction and bipartite matching problem where each suspect s ∈ {1..K} is assigned a cell (r, c) ∈ {1..N}² such that no two suspects share a row or column, blocking objects are excluded, every spatial clue predicate holds simultaneously, and the victim’s room contains exactly two occupants.
Let binary decision variable x[s, r, c] ∈ {0, 1} equal 1 if suspect s is placed at row r, column c. The solver enforces five formal constraint families before enumerating valid completions:
∀ s ∈ {1..K}: ∑_{r=1..N} ∑_{c=1..N} x[s, r, c] = 1∀ r ∈ {1..N}: ∑_{s=1..K} ∑_{c=1..N} x[s, r, c] ≤ 1 and ∀ c ∈ {1..N}: ∑_{s=1..K} ∑_{r=1..N} x[s, r, c] ≤ 1∀ (r, c) ∈ BlockedObjects: x[s, r, c] = 0(r_V, c_V) ∈ Room(V), ∑_{s=1..K} ∑_{(r,c) ∈ Room(V)} x[s, r, c] = 2 (the victim plus exactly one murderer).S = {A_1, A_2, ..., A_m}, a placement (s, r, c) is reported as a forced logical hint when ∀ A ∈ S: A(s) = (r, c).In the built-in 4×4 candidate example (16 cells indexed 0–15, or Row 1 Column 1 through Row 4 Column 4) with 4 suspects (Ada, Bram, Clara, Dorian):
{R1C1, R1C2} (cells 0, 1 — 2 candidates){R2C2, R2C3} (cells 5, 6 — 2 candidates){R3C3, R3C4} (cells 10, 11 — 2 candidates){R4C1} (cell 12 — 1 candidate, naked single)R1C1 from Ada’s domain. This forces Ada = R1C2. Ada at R1C2 locks Column 2 and eliminates R2C2 from Bram’s domain, forcing Bram = R2C3. Bram at R2C3 locks Column 3 and eliminates R3C3 from Clara’s domain, forcing Clara = R3C4.Ada: Row 1, Column 2 · Bram: Row 2, Column 3 · Clara: Row 3, Column 4 · Dorian: Row 4, Column 1.| Clue Category | Spatial / Algebraic Rule | Wall & Room Boundary Behavior | Candidate Elimination Yield (4×4–6×6 Grid) | Worked Deduction Example |
|---|---|---|---|---|
| Room Membership | (r, c) ∈ Room(R) |
Strictly bounded by room walls | Eliminates 60%–85% of board cells (10–30 cells) | “Ben was in the Poolside” restricts Ben to Poolside tiles |
| Orthogonal Adjacency (“Beside”) | |r - r'| + |c - c'| = 1 and Room(r,c) = Room(r',c') |
Blocked by walls; diagonals excluded | Reduces domain to 1–4 orthogonal neighbor cells | “Daniel was beside a bench (R1C2)” → R1C1 or R1C3 |
| Cardinal Direction (North / South / East / West) | Same column (c = c', r < r' or r > r') or same row (r = r') |
Line-of-sight or room-bounded per clue | Eliminates 3–5 entire rows or columns | “Carl was directly west of a table (R1C4)” → R1C1 or R1C3 |
| Exact Vector Distance | (r_A, c_A) = (r_B + Δr, c_B + Δc) |
Couples two suspects across rooms | Locks paired coordinates to 1–3 valid vectors | “Alice was 3 cells SE of Daniel (R1C3)” → Alice at R4C6 |
| Room Corner / Furniture Seat | Cell touches 2 perpendicular room walls or has objectType = sittable |
Defined by room perimeter geometry | Restricts suspect to 2–6 corner/chair squares | “Fiona was in a corner of the room” → room corner cells only |
| Victim Alone With Murderer | ∑_{(r,c) ∈ Room(Victim)} x[s,r,c] = 2 |
Applies to the victim’s enclosed room | Forces exactly 1 suspect into the victim’s room | Victim at R6C1 (Gazebo) + row/col blocks → culprit at R5C2 |