Awesome
Advent of Code 2017
Solutions to the Advent of Code 2017 edition by Jeroen Heijmans.
Running
Open up index.html
in a modern browser.
For maximum convenience I recommend using livereload by installing globally (npm install --global livereload
) and then just serving the repository with livereload .
.
Then the index.html
file will automatically reload if you tweak solutions.
Lessons
Here's what I learned (or noticed) each day.
- I will never write as funny backstories for puzzles as Eric. (Day 1: Inverse Captcha)
- Glad my language has functional constructs. (Day 2: Corruption Checksum)
- Sometimes the best code is no code. (Day 3: Spiral Memory)
- Parse input with code, not with manual editor-fu. (Day 4: High-Entropy Passphrases)
- Glad my language has imperative constructs. (Day 5: A Maze of Twisty Trampolines, All Alike)
- Mutable data structures can ruin your day. (Day 6: Memory Reallocation)
- Muscle memory for your chosen language is important. (Day 7: Recursive Circus)
- Use regexes! But now you have three puzzles... (Day 8: I Heard You Like Registers)
- Pre-processing can be very important. (Day 9: Stream Processing)
- I am terrible at reading comprehension. (Day 10: Knot Hash)
- I am really terrible at reading comprehension. (Day 11: Hex Ed)
- My language of choice has constructs I never knew about! (Day 12: Digital Plumber)
- Transforming problems into other problems before solving them can help. (Day 13: Packet Scanners)
- Don't throw away code. (Day 14: Disk Defragmentation, Knot Hash reuse)
- Learn from other people's solutions. (Day 15: Dueling Generators)
- Screw you, off-by-one errors. Screw you n+1 times!! (Day 16: Permutation Promenade)
- Circular buffers take some practice. (Day 17: Spinlock)
- Emulating low-level code is a thing apart. (Day 18: Duet)
- Advent of Code is aMAZEing! (Day 19: A Series of Tubes)
- Guesstimating the solution can sometimes make you effective. (Day 20: Particle Swarm)
- TDD to the rescue when 2D array manipulation turns out to be too hard. (Day 21: Fractal Art)
- Data Structures are more important than language features. (Day 22: Sporifica Virus)
- I am really terrible at low-level code. (Day 23: Coprocessor Conflagration)
- Modern hardware "allows" you to write less-performant, more readable code. (Day 24: Electromagnetic Moat)
- Private Leaderboards are equal parts Skill, Vigilance, Timezone, Reading Comprehension, Free Time, and Fun :D (Day 25: The Halting Problem)
Compendium Repo
I've created a Google Chrome Extension to spice up your private leaderboard page with graphs. It is open source if you want to contribute!
Here's direct links to every year's solutions I have so far:
- Advent of Code 2015 solutions: not available yet!
- Advent of Code 2016 solutions: not available yet!
- Advent of Code 2017 solutions, in JavaScript
- Advent of Code 2018 solutions, in C#
- Advent of Code 2019 solutions, in Python
- Advent of Code 2020 solutions, in TypeScript
- Advent of Code 2021 solutions, in PHP
- Advent of Code 2022 solutions, in JavaScript
- Advent of Code 2023 solutions, in TypeScript