Sudomine
A free deduction puzzle where sudoku line counts meet minesweeper neighbour counts. Every board has one solution, so no guessing. Plays on mobile.
Sudomine is a free logic puzzle that combines Sudoku and Minesweeper. You find the hidden mines on a small grid using number clues, and every board has exactly one solution, so you never need to guess. It plays in your browser on desktop and mobile, with no sign-up.
How to play
- Goal: mark where the mines are. Mines hide under the blank cells, and every row and every column holds the same fixed number of them (one on the smallest board, two on the larger ones). That is the sudoku half.
- Number clues: the numbers already on the board are safe, and each one counts the mines in the eight cells touching it. That is the minesweeper half.
- Marking: tap a blank cell to place your current mark, tap again to switch it, and a third time to clear it. The Mine / Clear control sets which mark comes first.
- Feedback: dots along the top and right edges count the mines you have placed in each line. A finished line turns green, and a line with too many mines turns red.
- Keyboard: arrow keys move, space places,
MandCswitch the mark,Uundoes andRreveals one cell.
History
Two puzzles that have nothing to do with each other turn out to share a shape.
Sudoku is a counting constraint along lines; minesweeper is a counting constraint
around a point. Put both on the same grid and every clue you read constrains the
other kind — which is why Sudomine boards can be solved by pure deduction on
fields far smaller than either parent needs.
Usage Tips
- One tap is the whole control scheme. Tap a blank cell to place your current
mark, tap again to switch it, tap a third time to clear it. - The Mine / Clear control decides what a first tap places. It never changes
the board, only the order of the cycle — so there is no mode to get wrong. - Marking cells you are sure are safe is not busywork: a full line of clear
marks is what makes the next deduction visible. - The dots along the top and right edges count the mines you have placed in each
line. A finished line runs a green inlay down its groove; an overfilled one
turns red. None of that feedback looks at the solution — it only checks your
marks against each other, so it can never give the answer away. - Reveal one fills a single cell correctly and locks it. Best times are only
recorded for runs that used none. - Three difficulties: Survey (5×5, one mine per line), Seam (6×6, two per
line with a few clues spare) and Deep cut (7×7, two per line and nothing
handed back). Each keeps its own top-five board. - Clearing a panel scores points — the harder the tier and the faster the clear,
the more it is worth, and every reveal you spend costs you 30% of the total. - On a keyboard: arrow keys move the cursor, space places, M and C switch
what a tap places, U undoes, R reveals. - Your board saves itself. Close the tab mid-solve and it comes back untouched.
- Install it as an app for offline play.
Technical Notes
- The generator lays down a random binary matrix with equal row and column sums,
computes every clue, then strips clues one at a time while a counting solver
verifies the board still has exactly one solution. A few are handed back
afterwards — that number is the difficulty dial. - The solver is a depth-first search over rows. Its strongest prune is clue
closure: a clue in row r−1 depends only on rows r−2, r−1 and r, so
placing row r settles it completely. When the node budget runs out it reports
"not proven unique" rather than guessing, which keeps deal times bounded. - The board is drawn twice over: a WebGL panel underneath and real HTML buttons
on top of it, sharing one geometry. Taps hit the DOM, so there is no
hit-testing and no input latency, and the numerals stay real text that scales
with your system font size. - The panel is a single fragment shader. Cells are pockets milled into one
surface, mine marks are table-cut stones set into them, and a finished line
lays an inlaid filament along its groove. The material is described by how it
catches light rather than by what it emits, which is what lets the same shader
serve both the light and dark themes. - If WebGL is refused, the board falls back to flat CSS and stays completely
playable. With Reduce Motion on, the panel stops animating but still
redraws as you mark cells.