BuildSeniorBackendAuto-graded
Evaluate arithmetic with correct precedence and parentheses
Write your own parser for + - * /, unary minus and parentheses. Using eval() or a math library isn't allowed.evaluate(expr) should handle + - * /, unary minus, nested parentheses and decimals. * and / bind tighter than + and -, and operators of the same rank apply left to right. Today 2 + 3 * 4 returns 20, (2 + 3) * 4 crashes and 2 + returns a number. Malformed input and division by zero must raise EvalError, and no other exception should escape. Parse the expression yourself: eval, exec, compile and expression libraries are not allowed. SPEC.md has the full grammar.45 min
python
You're done when
- Ordinary expressions give the right value, including decimals and any amount of spacing.
*and/bind tighter than+and-, and parentheses override that.- Unary minus works at the start of an expression, after an operator and in front of a parenthesised group.
- Malformed input such as
2 +,(1 + 2or an empty string raisesEvalError. - Division by zero raises
EvalError, including through a sub-expression like5 / (2 - 2).
What it measures
Parser designHow the parser encodes precedence and left-to-right grouping.
Edge casesWhether unary minus, nested parentheses and every error case are covered.
Own implementationWhether the evaluation is written by hand, without `eval` or an expression library.
Your environment
Terminal + editorA full shell in the browser
Claude CodePre-authenticated, no key setup
Isolated microVMYours alone, wiped afterwards
Start this lab
45 min
Start labYou'll sign in to Anthropos to start. The lab opens in a private cloud workspace with Claude Code ready to use.AI Labs is part of Anthropos Workforce. Not on your plan yet? Book a demo