AOC21

My Advent of Code solutions written in Kotlin

Why Kotlin?

I think Kotlin is a really suitable language for Advent of Code, because it handles list interactions perfectly with
functions like map and fold. As most of the days in Advent of Code involve some kind of list manipulation /
analysis, this is a really important thing to get right.

Furthermore, Kotlin is very extendable. This allows me to write my own framework, which automates a lot of tasks and
allows me to extend normal Kotlin types like strings or lists with my own functions, which saves me a lot of time
writing boilerplate code.

Framework? What framework?

I’ve written a small framework to ease writing solutions and executing them automatically. It fetches your own personal
input from the AoC API using a session cookie, caches it into a yml file and reuses this file when needed.

This is all reduced to a single class instantiation, allowing me to start writing solutions in only a couple lines of
code:

fun main() {
    Solution(2020, 1)
        .part1 {
            // Sum up all numbers
            lines.toInts().sum()
        }
        .part2 {
            // Multiply all numbers
            lines.toInts().product()
        }
}

Upon running this function, the results automatically get output to the console:

Part 1: 348920
Part 2: 428911409

How do I run the solutions?

I’ve built this repository assuming you have an IDE to run individual main functions. If you don’t, you’re out of luck.

First, you’ll need a session cookie from Advent of Code. To get it, log in to the website.
Then, open the inspector and navigate to the Storage section. You should be able to find a cookie called session.
Assign the contents of this cookie to the environment variable named COOKIE.

You can also do this using a .env file:

COOKIE=1234abcd

Then, using your favorite IDE (for example IntelliJ IDEA or Eclipse), execute the main function in the solution file you
want to execute (for example nl.chrisb.aoc21.y21.Day1.

Thanks for reading!

GitHub

View Github