
Daily Brains · one small mahjong solitaire table a day, forgiving on Monday and full of traps by Sunday.
Mini Mahjong is the tile-matching puzzle in Daily Brains (/daily). Each day lays out one compact mahjong solitaire table of 40 to 72 tiles in 2 to 4 layers, in one of 27 hand-designed shapes. Clear it by matching pairs of free tiles. Every deal is the same for everyone and is guaranteed to be clearable: it was built by taking the shape apart pair by pair, and a solver has proved it again. The week ramps from a gentle Monday, where almost any order works, to a fiendish Sunday, where most careless games get stuck and you have to plan which twin to take.
Deals are made offline by scripts/mini-mahjong/generate.mjs. The generator takes the day's shape apart two free positions at a time and gives each removed pair its faces; played forwards, that order is a solution, so every deal can be cleared. Each candidate deal is then re-solved and rated with random greedy playouts: hundreds of careless games that always take a random free matching pair. The share of those games that get stuck is the deal's difficulty. A deal is kept only when that share falls in its weekday's band. Saturday and Sunday deals must also contain several trap moves, legal matches that the solver proves leave the table unwinnable.
Most faces appear twice, and a pair whose only twin is free is always safe to take. The danger is a face that appears four times. When three of them are free, you have to choose which two to match, and the fourth may be sitting underneath one of the three, or locked in a row behind it. Take the wrong two and the last two can never meet. Monday tables use few four-of-a-kind faces and open with plenty of free pairs; the weekend is built from them.
The deal book in deals.js holds 52 weeks of deals for each weekday: 364 tables, all different, with the faces lightly scrambled in the page source. Puzzle n plays its weekday's deal for week n/7, so the ramp holds whatever weekday the series launches on. The shapes come in three sizes: Monday and Tuesday draw from ten small tables, Wednesday and Thursday from eight medium ones, and Friday to Sunday from nine large ones. Each pool rotates week by week with the weekdays at different offsets, so a shape never appears two days running. scripts/test-mini-mahjong.mjs re-solves the whole book with an independent solver and re-measures the ramp.
Tap a free tile to pick it up (it lifts and glows jade), then tap its twin to take the pair off with an ink-seal flourish. Tap a different free tile to switch, or the same tile to put it down. A tile is free when nothing lies on it and its left or right side is open. Blocked tiles are shaded slightly darker, and tapping one gives a little shake. Higher layers sit up and to the right, with a jade back edge and soft shadows that show how deep the stack goes.
All 42 faces are drawn in code as SVG: dots and bamboo 1 to 9, characters 1 to 9, the four winds, the red, green and white dragons, four flowers (plum, orchid, chrysanthemum, bamboo) and four seasons (spring, summer, autumn, winter). Characters and winds carry a small index (1 to 9, E S W N) in the corner. Every face matches only its exact twin, except that any flower matches any flower and any season matches any season.
Undo is free and unlimited, and it can also take back a shuffle. Hint asks the solver for a pair that keeps the table winnable and lights it in gold. If the table can no longer be cleared, a hint says so and offers to undo exactly as many moves as it takes to get back on a winning line. When no pairs are open at all, a panel offers Undo, Rewind (the same rescue, as a hint) or Shuffle. Shuffle re-deals the tiles still on the table into a solvable arrangement; it needs a second tap to confirm because it costs points.
Par is one match per pair on the table, plus a par time that grows with the table and the weekday. Every match counts, including ones you later undo, so the match counter in the status bar turns red once you have gone over par. The clock runs while the table is on screen and stops while a sheet is open or the tab is hidden; tap it (or press P) to pause and cover the table. Progress is saved on every move.
A cleared table scores 500, plus up to 250 for time (full at or under par, fading to nothing at three times par), plus up to 150 for efficiency (minus 15 for every match over par), plus 100 for a clean hand: par matches, no hints and no shuffles. Each hint costs 60 and each shuffle 120, and a cleared table never scores below 100. The maximum is 1000. A clean hand is a perfect day.
Touch or mouse to play. Keyboard: U, Backspace or Ctrl+Z undoes, H takes a hint, S shuffles, P pauses, Esc closes a sheet. The share card never shows the tiles. It reads like: "Mini Mahjong #41 · Thursday (Tricky) / The Drum, 60 tiles: cleared in 4:12, under par / A clean hand: par matches, no hints, no shuffles / 1000 pts · streak 3 / wowcool.world/daily/mini-mahjong".



Stuck rate: the share of random greedy games that get stuck, measured by the test over the whole book.
| Day | Difficulty | Tables | Stuck rate | Par time per tile |
|---|---|---|---|---|
| Monday | Gentle | Small, 40-48 tiles | about 0% | 3.0 s |
| Tuesday | Easy | Small, 40-48 tiles | about 15% | 3.4 s |
| Wednesday | Steady | Medium, 50-62 tiles | about 30% | 3.8 s |
| Thursday | Tricky | Medium, 50-62 tiles | about 45% | 4.3 s |
| Friday | Tough | Large, 64-72 tiles | about 60% | 4.8 s |
| Saturday | Hard | Large, 64-72 tiles | about 75% | 5.4 s |
| Sunday | Fiendish | Large, 64-72 tiles | about 89% | 6.0 s |
| Size | Shapes |
|---|---|
| Small (Mon, Tue) | The Lantern, The Kite, The Moon Gate, The Fan, The Gold Ingot, The Four Winds, The Pine, The Compass Rose, The Ginkgo Leaf, The Cloud |
| Medium (Wed, Thu) | The Lotus, The Butterfly, The Little Turtle, The Plum Blossom, The Crane, The Drum, The Bamboo Grove, The Temple Bell |
| Large (Fri to Sun) | The Koi, The Paifang Gate, The Stone Arch, The Pagoda, The Hourglass, The Junk, The Abacus, The Twin Pavilions, The Palace |
| Event | Reward |
|---|---|
| Clear the table | 15 Tickets |
| A clean hand (par matches, no hints, no shuffles) | +25 Tickets |
| First Table (first clear) | Bronze · 10 Tickets |
| A Clean Hand | Silver · 20 Tickets |
| Quick Hands (clear under par time) | Bronze · 15 Tickets |
| The Long Game (Saturday or Sunday, no hint, no shuffle) | Gold · 30 Tickets |
| Sunday Table (clear a Fiendish Sunday) | Silver · 25 Tickets |
| Jade Master (clean Fiendish Sunday) | Gold · 50 Tickets |
| Seven Tables (clear on all seven weekdays) | Gold · 40 Tickets |
| Lightning Hands (secret: half the par time) | Gold · 30 Tickets |
| Three-Day Streak | Bronze · 15 Tickets |
| Full Week (7-day streak) | Gold · 40 Tickets |
| Grand Master (30-day streak) | Legendary · 100 Tickets |