Skip to content

coderlevv/advent-of-code

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

59 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Advent of Code solutions

I came across Advent of Code in 2021 and was instantly hooked. I started this repository along the 2022 event. Solutions of puzzles from earlier events are not available here (yet).

2022

For this event the intention was to hone my JavaScript skills. In the end, I used JavaScript for about half of the puzzles and switched to my go-to programming language, Python, for the other half. Python together with a Jupyter notebook is the perfect environment for me to creatively & quickly explore ideas and build solutions step by step.

2023

I was picking up some Rust over the last two years, so this years AoC was a great opportunity to apply my newly aquired knowledge of the language. It was another great AoC experience and I'd say I have a good deal of Rust experience under the belt now. Looking forward to the next systems programming project...

2024

This year, my focus was on getting familiar with TypeScript, and the event provided an excellent platform to dive deeper into the language. While most days went smoothly, there were some real brainteasers (mostly day 21 and some part 2 challenges)! Advent of Code has become a cherished tradition in my year, offering a blend of fun, learning, and problem-solving. I’m already looking forward to next year’s challenges!

Programming Environment for Advent of Code 2024

For the 2024 Advent of Code, I embraced a minimalist and distraction-free environment to fully focus on solving the puzzles. This approach ensured that my attention was entirely on the problem at hand. Here's an overview of my setup:

  • Operating System: A Linux From Scratch (LFS) system, version 12.2, built completely from sources using lfshelper, a program I developed to (semi-)automate the LFS build process. It's available on GitHub.
  • Console-Only Workflow: Staying true to minimalism, I worked entirely within the console:
    • Vim served as my IDE, fully embodying the philosophy described in Practical Vim: Edit Text at the Speed of Thought. With the ALE, eslint, and prettier plugins, I had real-time linting, error checking, and formatting seamlessly integrated—combining the efficiency of a console-based workflow with modern development tools.
    • screen allowed me to efficiently manage and switch between multiple terminal sessions, keeping my workspace organized and productive.
  • Programming Language: All puzzles (well, almost all 😊) were implemented in TypeScript, making it an ideal opportunity to deepen my understanding of the language.

This minimalist setup, free of unnecessary distractions, provided the perfect environment to focus entirely on problem-solving. Tools like Vim and its powerful plugins ensured a smooth and efficient coding experience, while the console-based workflow kept things simple and productive.

2025

Once again, Advent of Code turned December into a small daily festival of thinking, tinkering, and quiet satisfaction. As usual, there was a short pre-event ritual: choosing the language. This year, the choice fell on R — a familiar companion, yet one that still manages to surprise when pushed beyond its usual statistical comfort zone.

What made this year especially enjoyable was the workflow itself. Using screen, vim, and vim-slime, I effectively set up a lightweight, REPL-driven IDE inside the terminal. One window became a playground for experimentation — trying ideas, inspecting intermediate states, poking at data structures — while the other gradually collected the cleaned-up solution. This back-and-forth rhythm felt very natural and turned even tricky puzzles into something playful.

Despite having used R for many years, Advent of Code once again pushed me beyond routine patterns. I explored what I’d call advanced list usage, for example using lists explicitly as queues in breadth-first search algorithms. I also implemented a proper S3 class during the event and gained a much clearer, hands-on understanding of how S3 method dispatch works — something that had always felt a bit abstract before.

For some of the part-two puzzles, I reached out for a nudge from chatGPT — not to get a ready-made solution, but to turn a promising idea into a working one. Whether it was a hint about implementing memoization, the idea of reframing the problem as linear programming on day 10, or the crucial insight on day 12 that switching to bitmap-based representations could turn an “effectively infinite runtime” into a merely heroic 1.5 hours, these small conceptual pushes often made all the difference. They didn’t remove the challenge — they sharpened it.

About

Solutions to Advent of Code puzzles.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published