Home

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.

  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: