Practise the technique, not the problem
A practice tool I wrote in Rust that runs in the browser as WebAssembly. It does not check your code against an answer. It runs your solution on a thousand generated inputs and compares what comes out. It also measures how your code scales, and decides what to give you next based on what you are starting to forget.
Your solution and the reference both run on a thousand generated inputs. If the answers match, you pass. Any working approach counts, including ones I never wrote a reference for
It puts counters inside your loops, runs the code at growing input sizes, and fits a curve to the counts. That is how it can tell you wrote O(n²) where the reference is O(n)
Cards are techniques, not problems. When one falls due you get a different problem from the same family, so you have to know the technique rather than remember an answer
Once you know a technique well enough, the live feedback switches off and you only get a verdict when you submit. Nobody tells you that you are close in a real interview
egui draws the interface, oxc parses and instruments your JavaScript, and Boa runs it. All of it compiles to one WebAssembly binary. No node, no npm, no JavaScript build step
A problem is a folder holding a TOML file, an input generator, and one or more reference solutions in JavaScript. Adding one takes no Rust code and no scoring logic
Each node is a technique. The brighter it is, the better you still know it. Nodes dim on their own as time passes.
The problem, worked examples and constraints sit next to the editor. You can add your own test cases and check them against the reference.
Where to spend your time next, plus the techniques that keep slipping back to forgotten. It is not a score.
This is the real app, compiled to WebAssembly. Nothing to install and no server involved. It opens in a new tab and runs in your browser.
▶ Launch ALGO-MASTER