I would like to particularly thank the following people for their ideas, suggestions and experiences in the early stage of this project: Junyan Jiang, Dilhan Salgado, Vipul Goyal, Joseph Li李秋生, Po-Shen Loh罗博深, Adam Bertelli, Thomas Lam, Daniel Li, Evan Wu, Josh Abrams, Isaac Browne, Samuel Delatore, Keerthana Gurushankar, Howard Halim, Misha Ivkov, Jennifer Jin, Chris Lambert, Ethan Lu, Vlad Oleksenko, Gabriel Wu, Yichen Zhang张一辰 and CMIMC participants.

The button below will permanently clear the user data on your client side. That is, your browser will forget that someone has had an account here.

We are in unstable mode right now! Whenever the server restarts, your team data will be deleted. All user data will be cleaned before the actual competition.


By clicking on the button above, you agree to our Terms of Service.

During the event, there will be a bunch of mysterious functions. Their expressions are unknown. You can evaluate them on arbitrary numbers and see the result, or plot and manipulate them as you wish. Your goal is to find their expressions.


In the waiting room, you can create/join a team. Team sizes are capped at 5. Your team name should be your actual team name in CMIMC. Multiple teams from the same organization can optionally coallesce with each other (name = school/org name), subject to the same size restriction. CMIMC volunteers, make sure that your team name contains the phrase "CMIMC" so it's placed at the bottom of the leaderboard.

Before the event, people will have time to sign up or join their team. After 18:15, all teams are locked (which means nobody can get in or out).


There are 32 levels (i.e. functions) in total, evenly divided into 8 ranks. When the game starts, only rank 1 is unlocked.

The event is 50 minutes long. At the x-th minute, solving 4-floor(x/10) levels in a rank would unlock the next rank: that is, in the first 10 minutes, you need to solve all the 4 levels in a rank to unlock the next rank, but this number decrements once every ten minutes. In particular, in the final 10 minutes, all levels are unlocked!

Of course, the progress is accumulative and shared with the team, so be sure to distribute the work.


A team's score is calculated by x*y, where x is the number of levels the team has solved, and y(⩽x) is the number of ranks the team has (partially-)solved.

For example, if a team solves three levels in rank 1, one level in rank 2, and one level in rank 6 (which can only happen in the last 10min), their score will be 5*3=15.


17:30-17:45 (Optional) I can answer any questions on zoom
17:45-17:55 (Optional) I will explain the user interface, and elaborate on the neat g(x) trick (which is used extensively by those who get 200+ out of this)
17:55-18:00 Team formation period (contact your friends)
18:00-18:50 The actual event. Levels become visible at 18:00, teams are locked at 18:15, and the score will be frozen at 18:50.
18:50-20:00 (Optional) You can continue playing if you want. I will be contacting the winning team(s) around 19:00 for prizes.
After 20:00, your data might be deleted.

When am I right?

What if the reference solution is abs(x) but you submitted sqrt(x^2), which looks, swims and quacks like abs(x)? Totally accepted! Correctness of your answer depends on its behavior on the random samples.

The correctness check is automatic, subject to a ~1s delay. You can hit the Enter key to submit immediately. Submitting this way will also exhibit a counterexample if your answer is incorrect, so you can also do that if you think your answer is correct but it's not passing the check.

What not to do

Please review the first term in our ToS, where we list a few unethical behaviors that will usually nullify your [team's] score.

Usage Tips
  1. (This is crucial for solving hard levels.) At any level, in the bottom textbox, you can type things like f(x)/x and ln(f(x)), and the plot and evaluator will update to reflect that auxiliary function instead. For example, if ln(f(x)/x) evaluates to 1024 at x=10, you may have a good guess what f(x) is, whereas it's almost impossible to guess that just by staring at f(x).
  2. If the bottom textbox is too short for you, you can type ".." (two dots) to lengthen it. Type ",," or "//" to shorten.
  3. The top textbox also accepts constants like pi, e and i. If you cannot type letters there (sometimes happens on Android), type ".." to force-switch to text mode.
Function Reference

The functions can be made from the following operations: x, integers 1–10, -f, f+g, f*g, 1/f, f^2, 2^f, e^f, sin(f), cos(f), tan(f), floor(f), sqrt(f), abs(f), log2(f), ln(f).

For example, the following is a possible function: f(x) = ln((x^2)^2)+sqrt(5).

The following functions/constants won't be in the actual expression, but are potentially useful in auxiliary functions: ceil, asin, acos, atan, re, im, i, pi. For a list of all functions understood by the system, see here.

Waiting room

↑︎create/join a team ↖︎check out the levels!