Project history
How We Built Fog Sweep 64
A second way to practice the Prime Factor 64 facts
From a matching exercise to a game of discovery
Prime Factor 64 began as a way to memorize difficult three-digit products in both directions. In the original game, Sriram noticed that a rough estimate and a distinctive last digit could make matching easier. That led to grouping products with shared endings. After building the original game and its guide, he wanted a separate, more playful version using the same 64 results.
Sriram proposed two chessboards, one with expressions and one with results. Touching a correct pair could make it disappear. He also floated a Minesweeper-like idea where a move would change what the player could see. The prototype, Sweep the Fog, combined the two boards with progressive reveals. It used correct matches to uncover tiles and skipped mines and guessing at covered squares.
How the fog lifts
Each game has four rounds of 16 pairs. The expression and result tiles are shuffled separately on two 4 × 4 boards. Eight pairs are face up at the start of each round. A correct match clears both tiles, and every two matches reveal two more pairs until all eight hidden pairs have been uncovered. The player can start a match on either board.
The deal groups products by their final digit. The opening draws from pairs and triples with shared endings, and each later reveal adds two products that end in the same digit. This makes the last digit less useful when the tiles first appear. The final unmatched pair still becomes obvious, a trade-off Sriram had accepted in the original matching game.
Each result appears once per game. When a product has two factor pairs, the game randomly chooses one. It also randomizes the order of the two factors. The package reuses the same deck as the original game and learning guide.
What the round review added
Sriram asked to reveal the completed board with each expression and result together, in the expression’s original square. Color and labels distinguish first tries, retries and slow matches. A wrong attempt counts against the first tile tapped. The tile time is the gap between the two taps of the successful match. Five seconds or more earns a Slow label, and a tile can show both Retry and Slow.
He also asked for a score in place of Covered per board. Version 2 removed the counter and called its replacement Round first try. When Sriram reported still seeing the old counter, version 3 made the intended label explicit as First-try score. The archived version 3 diff is a single line, since version 2 already contained the scoring behavior. The live score uses the number of distinct facts attempted so far in the round as its denominator.
The finish and the name
Sweep the Fog was the trial name. Sriram initially suggested Sweep Factor 64 for the finished game and later chose Fog Sweep 64. He asked for a final fanfare, the total score and time, and a breakdown by round. He confirmed that rounds should have a completion cue and that sound should start on.
Rounds 1–3 end with a short chime. The last round ends with a longer rising fanfare and a sustained chord. The player can mute audio with the Sound control. The final screen gives the first-try score out of 64 and the sum of all four round times, alongside the score and time for each round. Each round’s timer runs from the first tap to the last match, so time between rounds and on the review screens is excluded.
Pause and resume
Sriram spotted two effects of stepping away mid-round. The break increased the round and game times, and a break between two taps could also earn a Slow label. He pointed to the pause in Prime Factor 64 as the model.
Pause now hides the boards and blocks tile input. Resume restores the same boards and selection. The round timer and the time between taps use the same active-play clock, with pauses subtracted. The Slow threshold remains five seconds of active play.
Project home
Sriram noticed that Fog Sweep 64 needed the same way back to the project index as Prime Factor 64. The header now links to the page where players can choose either game or open the learning guide.
He asked for the cleaner placement used by Prime Factor 64. The title and Project home now sit at opposite ends of the header. Sound, Pause, and New game sit below the round progress display.
Browser tab icon
Sriram asked for each game to have its own tab icon. Fog Sweep 64 uses two revealed mint tiles and two covered tiles on a dark teal board.
Later, the project home, the learning guide, and both history pages gained tab icons in commits cb67632 and 01a2541. This history page uses the Fog Sweep 64 icon. The game files did not change, so the technical version log has no new entry.
Shared practice history
In Update 8, Grok Bot suggested bringing Fog Sweep misses into Prime Factor 64’s Practice weak facts. Completing a round saves all 16 first-try results together. Retry contributes a miss, and a first-try success counts as seen, including Slow matches. Leaving a round early skips that round’s observations. The games share the same recovery and cross-tab save safeguards. Prime Factor 64 still handles recall retirement and records its own personal bests.
In Update 9, Muse proposed a local outbox for completed rounds. Each round puts its observations in the outbox before waiting for the shared storage lock, so Prime Factor can recover them after the player returns to Project home.
Technical version log
Download the Fog Sweep 64 historical diffs for the four saved versions leading up to the first project commit on GitHub. The repository’s Git history starts at fa804dd and tracks subsequent changes.
Entries 1–4 count the saved dist/index.html at each original commit. Entries 5–10 count the packaged fog-sweep-64.html in Updates 2–5, 8, and 9, with changes measured against GitHub commits 96ec5a8, bde565d, 8e8ca00, 9d31917, 20f0813, and 6229d4e respectively. Blank lines count. CSS and JavaScript count lines inside their tags. HTML counts the remaining lines, including the tags. The shared practice-progress.js has 197 lines in Update 8 and 249 in Update 9.
| Version | JS LOC | CSS LOC | HTML LOC | Total LOC | Diff | Feature change | Implementation |
|---|---|---|---|---|---|---|---|
16518476 |
277 | 182 | 50 | 509 | +509 / −0 | Two shuffled 4 × 4 boards, staged reveals, sound toggle and a covered-tile counter. | Groups products by final digit and deals matching reveal waves to both boards. |
2ed683e7 |
327 | 206 | 57 | 590 | +91 / −10 | Replaces Covered per board with Round first try and adds a color-coded review after every round. | Tracks a retry and successful tap-to-tap time per result. Reviews preserve expression positions. |
3a833c4f |
327 | 206 | 57 | 590 | +1 / −1 | Renames Round first try to First-try score. | One HTML line replaced. Scoring logic carries over from version 2. |
47030ad4 |
392 | 223 | 69 | 684 | +109 / −15 | Renames the game, turns sound on by default and adds the final score and time breakdown. | Accumulates scores and elapsed times across rounds. A rising fanfare ends in a sustained four-note chord. |
| 5 Update 2 |
423 | 228 | 74 | 725 | +51 / −10 | Pause and resume mid-round. | Preserves tile state and uses one pause-adjusted clock for rounds and successful matches. |
| 6 Update 3 |
423 | 241 | 75 | 739 | +15 / −1 | Project home link. | Links to the project index and moves the game controls to a second row on narrow screens. |
| 7 Update 4 |
423 | 251 | 75 | 749 | +19 / −9 | Project home alignment. | Moves gameplay controls below round progress and reserves the header for the title and Project home. |
| 8 Update 5 |
423 | 251 | 76 | 750 | +1 / −0 | Browser tab icon. | Links a 32 × 32 PNG that depicts revealed and covered tiles. |
| 9 Update 8 |
438 | 251 | 78 | 767 | +18 / −1 | Completed rounds feed Prime Factor 64’s weak-facts drill. | Writes one batch of first-try observations per round through the shared practice storage script. |
| 10 Update 9 |
438 | 251 | 78 | 767 | +0 / −0 | Completed rounds survive navigation during a queued save. | The shared script writes an outbox batch before waiting for the lock and removes it after merging. |
Update 2 SHA-256 for fog-sweep-64.htmlcc575ed510777a07c5b8019e1ec2f722f76abcb542bb339c4a115a8480261aae
Update 3 SHA-256 for fog-sweep-64.htmle06ed0bca971536509223da60be0a635725071e1c3a4faecea847a4d696b2e21
Update 4 SHA-256 for fog-sweep-64.html21a0ff3e1a71e05cc6a669d2fd8de26a0bf20e058888b9ac3777a40e2e0a4b90
Update 5 SHA-256 for fog-sweep-64.html42120cc984195b01dab325ce0669924e0c15c5b7b4d0a3f7b0f36d828f0c32c2
Update 8 SHA-256 for fog-sweep-64.html8b7795c5c714946acae2413831c9c108e0e74a470dafe17816f60cab0b462c66
Update 9 SHA-256 for fog-sweep-64.html8b7795c5c714946acae2413831c9c108e0e74a470dafe17816f60cab0b462c66
Update 9 SHA-256 for practice-progress.jsf396b6cbac3265db1f3717943191987c1d9820f795cf0af86154683854c78a0e