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.
- 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 Over All Years: 218
After I'm all caught up, I may try my hand at some visualizations.
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