Advent of Code
What is Advent of Code? Well, go to https://adventofcode.com/
Okay, but what is it? Go to https://adventofcode.com/2021/about
Primarily, I’ve used Advent of Code as a fun way to keep my coding skills from atrophying during times where I’m coding less at work and it serves as a great way to learn new languages by forcing me to interact with typical things like:
- reading and writing from a file
- splitting input by line
- basic list and map operations
- some intermediate structures, like heaps and graphs
- the part 1 / part 2 stucture is a nice example of changing requirements
Putting my progress into a single place to make tracking easier:
My Advent packages by language with thoughts
- Python: valbaca/advent-py
- Python is #1 for a reason, both in general and especially with Advent of Code solvers.
- Does run into perf issues, even on reasonable algorithms.
- It looks like I’ll primarily be using Python at work, so I’m going to focus on Python.
- Go: valbaca/advent-go
- I’ve used Advent to learn Go. Go is eating Java, so I needed to be familiar with it.
- Incredibly fast to compile and execute (~50x compared to Python), but can be downright boring and tedious to write.
- I really miss niceties of (nearly every other) language.
- I thought I was going to use Go for my primary coding language at work, but when I started I found it’s purely Python
- Java & Clojure: valbaca/advent
- Java has been the language I’ve used most for the past 10 years in my career, but I wanted to learn Clojure.
- I’ve used Advent to learn Clojure. I reach for Java occassionally for perf and familiarity.
- Certainly discovered some of the Clojure super-powers: writing a input file reader that uses the namespace of the file is some cool magic.
- REPL is awesome, but initial startup, REPL connection pains, and absurd memory usage really drag.
- Crystal: valbaca/AdventOfCode-Crystal
- Again, used Advent of Code to help learn, but hardly got far at all.
- Super fast to execute, tad bit slow to compile. No good debugger or IDE.
- I really wish Crystal fulfilled that sweet spot of Ruby syntax at C speed…but it has essentially no tools.
- JS/TS: …nah
- Rust: …maybe someday?
Progress by Year and language
- Year 2015: 🎄 DONE! multiple times!
- Year 2016: ❄️ ON ICE @ Day 20
- Days 1-7 & 19 in Python
- 1-11 in Clojure and 11-18 in Java.
- 1-12 in Go
- Year 2017: ❄️ ON ICE @ Day 7
- Days 1-5 in Crystal
- Year 2018: ❄️ ON ICE @ Day 6
- Year 2019: ❄️ ON ICE @ Day 2
- Year 2020: 🎄 DONE!
- Fully solved in Python valbaca/advent-py
- Year 2021: 🌟 IN PROGRESS!
- Currently solving in Python valbaca/advent-py