Advent of Code 2015: Rust Solutions

Join me as I solve all 25 days of Advent of Code 2015 using Rust! This series documents my journey through the classic 2015 puzzles, showcasing different approaches, optimizations, and Rust idioms.

What is Advent of Code?

Advent of Code is an annual event featuring daily programming puzzles throughout December. Each day presents a two-part challenge that tests algorithmic thinking and problem-solving skills.

Why Rust?

Rust is an excellent language for Advent of Code because:

  • Strong type system catches bugs at compile time
  • Pattern matching makes parsing input elegant
  • Iterator chains enable concise solutions
  • Performance for brute-force approaches when needed
  • Great ecosystem with helpful crates

Series Structure

Each article in this series covers one day's puzzle, including:

  • Problem summary and analysis
  • Solution approach and algorithm choice
  • Rust implementation with explanations
  • Performance considerations
  • Alternative approaches
  • Key takeaways and Rust patterns learned

Repository

All solutions are available on GitHub: Advent of Code 2015 Solutions

Articles in This Series

  1. Day 1: Not Quite Lisp - Character counting and string traversal
  2. Day 2: I Was Told There Would Be No Math - Parsing and calculations
  3. Day 3: Perfectly Spherical Houses in a Vacuum - Grid navigation
  4. Day 4: The Ideal Stocking Stuffer - MD5 hashing and brute force
  5. Day 5: Doesn't He Have Intern-Elves For This? - String validation
  6. Day 6: Probably a Fire Hazard - Grid manipulation
  7. Day 7: Some Assembly Required - Circuit simulation and memoization
  8. Day 8: Matchsticks - String escaping and encoding
  9. Day 9: All in a Single Night - Traveling salesman problem
  10. Day 10: Elves Look, Elves Say - Look-and-say sequence

... (more days to be added as articles are published)

Prerequisites

To follow along:

  • Basic Rust knowledge (variables, functions, iterators)
  • Understanding of common data structures (Vec, HashMap, HashSet)
  • Familiarity with pattern matching and error handling

Let's Begin!

Start with the first day's article to begin the journey!