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, Pramod Yadav, Yichen Zhang张一辰 and CMIMC participants.

Welcome to Function Academy.


Let us send you a login code, and you are good to go!


By clicking "Verify", 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.

Schedule 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.

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: 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!