Had a stab at the 2021 advent of code challenge.
These are not ideal or reference solutions by any stretch of the imagination.
Day | Name | Status |
---|---|---|
1 | --- Day 1: Sonar Sweep --- | ⭐ ⭐ Complete |
2 | --- Day 2: Dive! --- | ⭐ ⭐ Complete |
3 | --- Day 3: Binary Diagnostic --- | ⭐ ⭐ Complete |
4 | --- Day 4: Giant Squid --- | ⭐ ⭐ Complete |
5 | --- Day 5: Hydrothermal Venture --- | ⭐ ⭐ Complete |
6 | --- Day 6: Lanternfish --- | ⭐ ⭐ Complete |
7 | --- Day 7: The Treachery of Whales --- | ⭐ ⭐ Complete |
8 | --- Day 8: Seven Segment Search --- | ⭐ ⭐ Complete |
9 | --- Day 9: Smoke Basin --- | ⭐ ⭐ Complete |
10 | --- Day 10: Syntax Scoring --- | ⭐ ⭐ Complete |
11 | --- Day 11: Dumbo Octopus --- | ⭐ ⭐ Complete |
12 | --- Day 12: Passage Pathing --- | ⭐ ⭐ Complete |
13 | --- Day 13: Transparent Origami --- | ⭐ ⭐ Complete |
14 | --- Day 14: Extended Polymerization --- | ⭐ ⭐ Complete |
15 | --- Day 15: Chiton --- | ⭐ ⭐ Complete |
16 | --- Day 16: Packet Decoder --- | ⭐ ⭐ Complete |
17 | --- Day 17: Trick Shot --- | ⭐ ⭐ Complete |
18 | --- Day 18: Snailfish --- | ⭐ ⭐ Complete |
19 | --- Day 19: Beacon Scanner --- | ⭐ ⭐ Complete |
20 | --- Day 20: Trench Map --- | ⭐ ⭐ Complete |
21 | --- Day 21: Dirac Dice --- | ⭐ ⭐ Complete |
22 | --- Day 22: Reactor Reboot --- | ⭐ ⭐ Complete |
23 | --- Day 23: Amphipod --- | ⭐ ⭐ Complete |
24 | --- Day 24: Arithmetic Logic Unit --- | ⭐ ⭐ Complete |
25 | --- Day 25: Sea Cucumber --- | ⭐ ⭐ Complete |
It's easy to get carried away on this challenge, but I have a full time job and a mountain of other hobbies, so...
- This is about having fun, challenging myself and learning new things.
- I may skip days, particularly if I am getting bogged down on the problem or life gets in the way (See Rule #1).
- This year I am open to using 3rd party non-core python libraries where they would reduce dev time on a problem.
- I will not look at any reference solutions until after the event is complete.
- I can research ways of efficiently solving general problems required by the task provided it doesn't conflict with Rule #4.
Every day has its own package in the src, this is used to define any unique code or functions for solving the daily problems.
My personal data is included as a text file in each challenge's package under the data
subdir, this is so anyone could verify my results without needing my AoC auth token.
The days code is executed using a module in the tests package that executes via a Pytest runner. This pytest modules verify the answers against those I computed in the challenge, you can see the result of all the automated tests in Github Actions.
Repository dependencies for execution are located in requirements.txt.
Used the following third party libs:
- Numpy - Python lists are cool, but they're kinda terrible when it comes to higher dimensional numeric matrix mathmatics. Why waste your time when there is a well maintained library that is built for doing this efficiently?
- Bitarray - Python does a lot of things well, but lacking a native way to work with bits via the list paradigm is a huge downside for serial-communications use-cases. Why mess around with huge python types and having to bitmask everything when you can use this beautiful c extension?
- Frozen Dict - Python dicts are awesome collection types for hashed performance lookup of pretty much anything, however not being able to be hashed can be annoying. The frozendict package implements the rejected PEP for adding a frozen dictionary type, these work like normal dicts but are static such that you can hash them or pickle them ect.
Code formatting is handled via pre-commit see the hooks used on this repo.
The source of this repo uses the MIT open-source license, for details on the current licensing see LICENSE.md or click the badge above.
- Copyright 2021 © NullTek.