Skip to content

djotaku/adventofcode

Repository files navigation

Advent of Code

In 2020 I discovered https://adventofcode.com/ via the Python Discord server.

This repo contains my solutions to the Daily Challenges in folders by year. Each day also has the problem description and any lessons I learned.

Event Years

  • 2015
    • Second Problem Set Tackled (April 2021 - Sept 2021)
    • Originally solved with Python
    • New languages for this set: Ruby and Perl
    • 50 Stars Collected
      • 20210828 - Reached 34 stars without skipping any Days/Parts. This put me in a tie with my score at the end of 2020 when I was doing it live Dec 2020.
      • 20210919 - First set of Advent of Code I completed with all 50 stars!!!!
    • Nerdy tidbit: At end of 2015 repo code was split as follows:
      • 63.6% Python
      • 18.7% Ruby
      • 17.6% Perl
      • 0.1% Shell
  • 2016
    • Third Problem Set Tackled (Oct 2021 - )
    • Old languages for this set: Python, Ruby, Perl
    • New languages for this set: Haskell and Go
    • 33 stars Collected so Far
    • 20221029 Reached 150 stars total for the repo
  • 2017
    • Sixth Problem Set Tackled (Dec 2022 - )
    • Old languages for this set: Python, Ruby, Perl, Haskell, Go
    • New languages for this set: Rust and Julia (“One hard one and one easy one”)
    • started before done with 2016 to try and get to 200 stars for the repo before the end of 2022.
      • goal achieved 20221227 - 200 stars for the whole repo!
    • 10 stars collected so far
  • 2018
    • Seventh Problem Set Tackled (March 2023 - )
    • Old languages for this set: Python, Ruby, Perl, Haskell, Go, Rust, Julia
    • New languages for this set: Java and Kotlin (“The Javas” Part 1)
    • New current way of going through the old problems: do them all from 1, then 2, etc instead of trying to finish each year first.
    • 2 stars collected so far
  • 2020
    • First Year of Participation (1st attempt: Live Dec 2020; Trying to get all 50 stars: Sept 2021 -)
    • Solved with Python only during AoC
    • 36 Stars Collected So Far
  • 2021
    • Fourth Problem Set/Second Year Participating Live
    • Primarily solved with Python during December 2021
    • 35 stars collected so far
    • Reached 100 stars total over all years on 20211202
    • Interruption in problem-solving days 15-19 due to WorldCon 2021 and 21-25 for family time at Christmas
    • Repo stats at end of 2021 Live period the repo code was split as follows:
      • 67.9% Python
      • 14.4% Ruby
      • 13.7% Perl
      • 2.5% Go
      • 1.4% Haskell
      • 0.1% Shell
  • 2022
    • Fifth Problem Set Tackled/Third Year Participating Live
    • Will primarily solve with Python during December 2022
    • 36 Stars Collected so far
    • A few days where I didn't get as much time to work on it as I wanted, but very happy with my progress this year. I finished Day 25 with 36 stars. This is in line with my averages - 35 stars in 2021 and 36 in 2020. (Although I may have solved 1-2 stars for each of those after the year in which the AoC took place)
    • Repo stats: at the end of the 2022 Live period the repo code was split as follows:
      • 73.1% Python
      • 11.7% Ruby
      • 10.9% Perl
      • 3.2% Go
      • 1.1% Haskell
  • 2023
    • Eighth Problem Set Tackled/Fourth Year Participating Live
    • Python as primary language; probably Go as secondary and other languages if there's time.
    • 16 stars collected so far
    • Repo Stats: at the end of the 2023 Live period
      • 73.8% Python
      • 11.0% Ruby
      • 10.2% Perl
      • 3.9% Go
      • 1.1% Haskell

total stars

Total Stars Over All Years: 218

After I'm all caught up, I may try my hand at some visualizations.

Lessons learned from all my years of doing this

A distillation of what I learned each year. (which is itself a distillation of what I learned daily)

  • Learn algorithms for Conway’s Game of Life
  • Learn Recursion and Memoization (Caching)
  • Often (maybe always, but not in my limited experience) the answer comes down to: map, filter, reduce
  • Use Unit Tests to keep from going mad
  • For performance reasons you usually want to use a map/hash/dict rather than a list/array/vector/slice
  • Solving programming puzzles is addictive
  • From doing the problems in more than one language:
    • While you can more or less ape general programming across any language, learning how to take advantage of each language’s quirks, build-in libraries, and paradigms is a lot of fun and can show how some are better at certain problems than others
    • I prefer languages without semicolons to languages with semicolons

About

My solutions to the Advent of Code challenges

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published