305625c7a29af45bbf826b82c933c3fc2714913e
feat: solve puzzle 14
Advent of Code 2023
This repository contains my solutions for the Advent of Code 2023 challenge.
Language
I am using C# for this year's challenge. I'd consider myself proficient in C#, but on a day to day basis I don't use it as much and would just like to get more practice with it.
Structure
Each day's solution is contained in a separate folder. Each folder contains:
- A
PROBLEM.mdfile containing the problem description. - A
INPUT.txtfile containing the input for the problem. - A dotnet console application containing the solution.
- An xUnit test project containing unit tests for the solution.
Prerequisites
Running the Solutions
To run the solutions, navigate to the solution folder and run the following command:
dotnet run -- <path-to-input-file>
Or for part 2 solutions
dotnet run -- <path-to-input-file> part2
You can also build the projects and run the executables directly.
dotnet build
./bin/Debug/net8.0/<project-name> <path-to-input-file>
Challenges
| Day | Problem | Solution | Status | Notes |
|---|---|---|---|---|
| 01 | Problem | Solution | ✅ | The trickiest part here was accounting for overlapping digit words. |
| 02 | Problem | Solution | ✅ | The key to me here was to parse the input into a useful model. |
| 03 | Problem | Solution | ✅ | The edge case that got me here was lines ending with a part number. |
| 04 | Problem | Solution | ✅ | Part 2 gets out of hand quickly with just 200 cards. |
| 05 | Problem | Solution | ✅ | I brute forced part 2 using parallelism. I know shame. |
| 06 | Problem | Solution | ✅ | Thank goodness part 2 was not like 5's part 2. 😅 |
| 07 | Problem | Solution | ✅ | What took me longest here was I missed a case when jokers are wild and there are three groups of cards. |
| 08 | Problem | Solution | ✅ | Got to implement a least common multiple algorithm for part 2. |
| 09 | Problem | Solution | ✅ | Part 1 took me unnecessarily long. The bug was summing a line to check for all zeros is bad idea when negative numbers are involved. |
| 10 | Problem | Solution | ✅ | So...my solutions are rather slow, but they work. Part 2 appears to have a mathematical solution, but scanning is what I came up with on my own. |
| 11 | Problem | Solution | ✅ | Expanding the universe was fine in part 1, but part 2 showed I actually needed to calculate the expansion instead of expanding the input. |
| 12 | Problem | Solution | ✅ | This one stretched my skills. I needed lots of help from the interwebz. |
| 13 | Problem | Solution | ✅ | This solution is the one I think I'm most proud of so far. |
| 14 | Problem | Solution | ✅ | Cycles and a cache...that's all I'm going to say. |
| 15 | Problem | Solution | ⌛ | |
| 16 | Problem | Solution | ⌛ | |
| 17 | Problem | Solution | ⌛ | |
| 18 | Problem | Solution | ⌛ | |
| 19 | Problem | Solution | ⌛ | |
| 20 | Problem | Solution | ⌛ | |
| 21 | Problem | Solution | ⌛ | |
| 22 | Problem | Solution | ⌛ | |
| 23 | Problem | Solution | ⌛ | |
| 24 | Problem | Solution | ⌛ | |
| 25 | Problem | Solution | ⌛ |
Languages
C#
100%