Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Advent of Code 2017

Solutions to the Advent of Code 2017 edition by Jeroen Heijmans.


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.


Here's what I learned (or noticed) each day.

  1. I will never write as funny backstories for puzzles as Eric. (Day 1: Inverse Captcha)
  2. Glad my language has functional constructs. (Day 2: Corruption Checksum)
  3. Sometimes the best code is no code. (Day 3: Spiral Memory)
  4. Parse input with code, not with manual editor-fu. (Day 4: High-Entropy Passphrases)
  5. Glad my language has imperative constructs. (Day 5: A Maze of Twisty Trampolines, All Alike)
  6. Mutable data structures can ruin your day. (Day 6: Memory Reallocation)
  7. Muscle memory for your chosen language is important. (Day 7: Recursive Circus)
  8. Use regexes! But now you have three puzzles... (Day 8: I Heard You Like Registers)
  9. Pre-processing can be very important. (Day 9: Stream Processing)
  10. I am terrible at reading comprehension. (Day 10: Knot Hash)
  11. I am really terrible at reading comprehension. (Day 11: Hex Ed)
  12. My language of choice has constructs I never knew about! (Day 12: Digital Plumber)
  13. Transforming problems into other problems before solving them can help. (Day 13: Packet Scanners)
  14. Don't throw away code. (Day 14: Disk Defragmentation, Knot Hash reuse)
  15. Learn from other people's solutions. (Day 15: Dueling Generators)
  16. Screw you, off-by-one errors. Screw you n+1 times!! (Day 16: Permutation Promenade)
  17. Circular buffers take some practice. (Day 17: Spinlock)
  18. Emulating low-level code is a thing apart. (Day 18: Duet)
  19. Advent of Code is aMAZEing! (Day 19: A Series of Tubes)
  20. Guesstimating the solution can sometimes make you effective. (Day 20: Particle Swarm)
  21. TDD to the rescue when 2D array manipulation turns out to be too hard. (Day 21: Fractal Art)
  22. Data Structures are more important than language features. (Day 22: Sporifica Virus)
  23. I am really terrible at low-level code. (Day 23: Coprocessor Conflagration)
  24. Modern hardware "allows" you to write less-performant, more readable code. (Day 24: Electromagnetic Moat)
  25. 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:


Solutions to the Advent of Code 2017 edition by Jeroen Heijmans.






No packages published