Play it now → officiel-tinkerthink.github.io/CS50P-Final-Project
Guess the hidden equation in six tries. A Nerdle-inspired maths puzzle — my CS50P final project, now a proper web game with a daily puzzle, three difficulties and shareable results.
A secret equation is hidden — only + and −, one =, no spaces. Every guess must itself be a true equation of
the same length (7+4=11 or 11=7+4). After each guess the tiles flip:
- 🟩 right character, right place · 🟨 in the equation, elsewhere · ⬜ not in the equation (or no more copies of it)
| Difficulties | Easy (1-digit numbers), Medium (2-digit), Hard (3-digit). |
| Daily | The same puzzle for everyone on the same UTC day, per difficulty. Your progress is saved so you can come back. |
| Practice | Endless random puzzles. |
| Share | Copy your result as the familiar emoji grid. |
| Statistics | Played, win %, current and max streak, guess distribution — per difficulty. |
| Still possible | How many equations the generator could have made that agree with every clue so far (live for Easy/Medium; one click for Hard's 3 million). Show them after the game to see what you could have deduced. |
| Hint | Reveals one correct character. Costs your streak. |
Keyboard works everywhere: digits, + - =, Enter, Backspace. Colours on the keypad remember what you've learned.
Static web app — no build step, no dependencies.
git clone https://github.com/Officiel-TinkerThink/CS50P-Final-Project.git
cd CS50P-Final-Project
python3 -m http.server 8000 --directory docs # or: npm startnode --test tests/*.test.js # scoring (same vectors as the Python tests), validation, generator, daily seeding, candidates
pip install -r requirements.txt pytest && pytest # original Python gamepip install -r requirements.txt
python3 project.pyPick a difficulty, type equations, and the rich console colours the characters. Video demo of the CLI version:
https://youtu.be/WbetvCM5di4.
docs/js/arith.js ports game_setup, get_answer's validation and assessment from project.py one-to-one, so the
browser game scores guesses exactly like the CLI. test_project.py was rewritten as real pytest tests (the original
swallowed its own failures with a bare except ValueError: pass).
docs/ ← web app (GitHub Pages): index.html, css/, js/arith.js (engine), js/app.js (UI)
project.py ← the original CS50P game
test_project.py ← pytest suite for project.py
tests/ ← node:test suite for the JS engine
scripts/ ← Playwright demo recorder
assets/ ← demo GIF/MP4, screenshots
Thanks to David Malan and the CS50 team for CS50's Introduction to Programming with Python. Inspired by Nerdle.
Wahyu Bornok Augus Sinurat — @Officiel-TinkerThink
