Advent of Code 2020

Published November 25, 2020

Tags: codeadvent codeadvent2020 python

Last winter, I participated in the annual Advent of Code Challenge, a website which offers small (but not necessarily easy) programming challenges every day from December 1 through 25. It turned out to be a great way to get exposed to different corners of development in my language of choice (Python), and with a little more time on my hands this Winter, I'm excited to dive into it again.

The challenges are all written in a non-programming-language-specific way. For example, the first part of the problem from December 1, 2019 boils down to:

* Ingest a list of numbers from a text file, with one line per number

* For each number, divide it by 3, round down, and subtract 2

* Sum all these results together

* Print/return/somehow give the user back the sum

While I was doing this in Python, there's no reason you couldn't do it in C, or Java, or Haskell, or ALGOL, or any language of your choice (though of course, some of the problems will be more tractable using structures built into some languages and not others). The actual prompts are a bit more flavorful that that example - a narrative about needed to rescue Santa from outer-space was woven through all 25 problem last year.

I'm confident in saying that my Python has gotten significantly stronger over the past year, but I'm feeling like I could be stronger in some algorithmic thinking (the mazes last year slayed me) and in some process crevices around my workflow. To that end, my goals for this year are:

  • To strengthen my intuition for solving data-based problems with time-efficient algorithms
  • To cement the core concepts around Pythonic data structures in my knowledgebase
  • To become more comfortable with Git/GitHub, in particular its command line interface and the branch/merge/HEAD flow
  • To complete each challenge on the day it's issued

Because nobody needs their RSS feed flooded by me every day for a month, I think I've found a way to start a blog post on, say, December 1st, update it every day for a week, then only push to the RSS feed on the 7th - so if you want to check on them daily, you can go to the actual factual blog, or just wait for the summary posts to come out.

If you're just interested in the code (or are reading this from the future) and want to see my solutions, I'll be posting the code over on GitHub. I'm not going to be striving to be one of the first 100 people posting successes to each problem (for which there is a leaderboard), I'm just solving these for me. And I encourage anyone out there looking to build their programming confidence to do the same!