In 2017, I was a sophomore in college. At that time, I just professionally learned computer programming for less than a year.
Paul Dempster is one of our university teachers (after ten years at Nottingham, he now teaches at Lancaster). I still remember his look in the classroom—accompanied by the concise PPT typesetting, he quickly and skillfully used his IDE and Terminal to teach us ignorant children the basic programming knowledge.
Compared with the computer theory courses taught by other teachers, I prefer to take his C language courses. Because in my opinion this is more practical and refreshing. I remember that the weekly half-hour quiz he arranged for us was novel and interesting, and sometimes full of challenges, such as implementing the linked list method within a time limit, or asking a format for a C language source file that was mistyped (At that time, I was stupid enough to type the format by hand instead of using the IDE formatter tbh). This interest allowed me to score 99/100 in the final programming assignment.
My First Year AdventOfCode
When the exam review season of the first semester came, Paul sent us an email to introduce AdventOfCode.com (forgive me for losing the original text of the email, because the school email can no longer be logged in after graduation).
In the email, with a few long and short paragraphs, we were introduced that this website is a Programming Puzzle website. From December 1st to Christmas, there is one question per day, and each question has two questions of increasing difficulty part. You will earn a star for each part you complete, for a total of 50 stars over 25 days. Many people around the world are participating. People use it to play speed games, prepare for interviews, hone their programming skills, compete against each other, or just for fun.
Paul also set up a private leaderboard, to invite us to join in and play together. Although there were less than a dozen students who joined in the end.
I clicked on the website and completed the first day's questions in a few minutes, and got two stars. I am excited.
Just as excited as I am is one of my roommates.
In the next few days, we will wait for the question to be unlocked at 1 pm every day (GMT+8 in China, i.e., EST 0 a.m.), and then rush to solve the problem.
However, not every day goes well, and the further you go, the more difficult the questions will be. We are often frozen for a period of time after submitting wrong answers due to misunderstanding of the meaning of the question or wrong answers, and we often wait for a long time because of writing inefficient logic (once you play, you will see).
We wrote the code poorly, but were very happy to see that it solved the problem. We have worked hard to optimize the code, hoping that it can run more efficiently.
Some days, I've even written a visualization of the problem-solving process.
In the end, we unlocked it for 25 days.
We were so happy.
AdventOfCode Every December
Since 2015, every Christmas, AdventOfCode has a background story. With the daily update of the problem-solving progress, the story gradually develops, and finally completes the ending on Christmas Day. And everyone who solved the problem had a happy and challenging month, which is really worth celebrating, and left a good and deep memory.
And I would introduce this event every year in the following years to different people - new classmates, new friends, new colleagues...
(Screenshot is me sharing this event in Chinese in my WeChat Moments.)
In the first few days of 2019, I even tried to solve problems in a different language every day (Songkeys/advent-of-code-2019).
Unfortunately, due to various reasons, I couldn't last more than 20 days every year, and I couldn't get all the stars anymore. Because there is no longer much time to devote to it, and there is no longer the company of those classmates and friends.
Then, Let's Play Again
In the blink of an eye, five years have passed, and it is already 2022.
I am no longer that ignorant coding novice. Nowadays, the code I write is rarely for learning and interest, but more for work or project purposes. Although there are different kinds of fun, compared to the beginning, I always feel that something is missing.
I decided to set a flag here - no matter what this year, I have to get 50 stars on Christmas Day. In the next few days, I will slowly fill in the checkpoints of previous years.
If you are moved by me, then this year's December 1st is waiting for you!
By the way, you can also visit these communities:
- Discord: I've been playing on this Discord server for several years. There are top 100 masters in the world, masters of various languages, and newcomers. People in different time zones often wait for the topic to be unlocked together, discuss the topic together, and help each other give tips.
- Reddit: In this subreddit, you can see more other activities (such as a poem of the day for a certain year), and more explanations from gods and men (For example, someone use arduion to solve the problem , use minecraft to solve the problem, use folding screen phone to solve the problem , wrote a paper to solve the problem method), and many interesting memes.
- Behind the scenes (videos): Author Eric Wastl shared some behind-the-scenes stories on numerous occasions.
Let's play together.