How to play
- Choose Free play (pick one of six layouts) or the Daily challenge; the board is generated in a few milliseconds.
- Click or tap a free tile to select it, then its matching partner. Both disappear and may free the tiles they were blocking. Clicking a blocked tile shows why it cannot move.
- Use Hint when you are unsure: it highlights a pair that keeps the board solvable whenever such a pair is known. Undo takes back any move, including a reshuffle.
- If no pairs are left, Reshuffle rearranges the remaining faces into a position that is verified to be clearable, or Restart the same deal from the beginning.
- Keyboard: arrow keys move between visible tiles, Enter or Space selects, Esc deselects, Ctrl+Z undoes, H asks for a hint, N starts a new game. Zoom with the buttons, Ctrl+wheel or a pinch.
Example
On the Classic turtle the single apex tile sits on the fifth level above the centre, so the four tiles beneath it cannot be taken until the apex is gone. Suppose two Dots 5tiles are free on the left wing and a third Dots 5 is under the apex. Removing the two free ones now leaves the fourth Dots 5 with only the buried copy as a partner. The hint avoids this: it follows a plan that was replayed through the rule engine from the current position, so it proposes the pair that keeps the remaining 142 tiles clearable – for example the apex with its free twin first. If you removed a pair outside the plan, the game tries to repair the plan by pairing the two orphaned tiles; when that fails the solver in the background checks the position again before the next hint.
Rules and scoring
The board geometry is stored in half-tile units, so the turtle’s shifted end tiles and apex are exact: a tile on a higher level that overlaps another by even half a tile covers it, and two tiles touching at the same level block each other sideways. Neighbours above and below never block. Tiles that match: Dots 1–9, Bamboo 1–9, Characters 1–9, the four winds and three dragons only with the identical face; the four flowers (plum, orchid, chrysanthemum, peony) with each other; the four seasons with each other. A flower never matches a season.
There is no point score. The result is the time(counted on a monotonic clock while the game is active – it pauses when you pause or hide the tab) and the number of hints and reshuffles used. Undo is free and does not count as help. Statistics keep games finished, wins, wins without help and, per layout, the best time with and without help. A stuck game counts as finished only when you leave it.
Deal generation: the generator first finds a complete removal order from the empty geometry (depth-first search with backtracking under a fixed node budget), then assigns matching face pairs to the position pairs and replays the whole sequence with the real rules. Only a deal that passes this replay is shown. The daily seed is calcpark-mahjong|daily|YYYY-MM-DD|layout|v1 with the UTC date, so everyone gets the same board; the layout rotates by weekday (Easy on Monday and Thursday, Fortress Tuesday, Butterfly Wednesday, Pyramid Friday, Classic turtle at the weekend). A daily streak only counts days whose challenge you started on that day.
Sources: Wikipedia – Mahjong solitaire, Wikipedia – Mahjong tiles.
Questions
- Is every deal solvable?
- Yes. Each board is generated from a complete removal sequence and verified by replaying it, so at least one winning order exists from the start. Removing pairs in a different order can still block you; then undo a few moves, use a hint or reshuffle.
- When does the daily challenge change?
- At 00:00 UTC. The board is derived from the UTC calendar date and the layout of that weekday, so players in every time zone see the same deal. Earlier days can be replayed from the calendar.
- Is a hint always a winning move?
- When the game knows a verified plan from the current position, the hint is a pair that keeps the board clearable and says so. If no plan is known, the solver searches in the background; if it runs out of budget the hint still shows a legal pair but tells you it could not be verified.
- Where is my progress stored?
- In this browser’s localStorage under keys starting with calcpark:mahjong. Nothing is sent anywhere; clearing site data removes the saved games and statistics. If the same game is open in two tabs, the newer save is never overwritten silently.