Solver for Advent of Code 2024 puzzles. https://adventofcode.com/2024/
Go to file
Stefan Müller 7693c64037 Update readme 2024-12-02 11:08:38 +01:00
AdventOfCode2024 Add solutions for "Day 1: Historian Hysteria" 2024-12-01 16:32:21 +01:00
.gitignore Add basic solver logic with demo implementation and empty unit tests 2024-11-30 02:23:31 +01:00
LICENSE Initial commit 2024-11-29 19:28:32 +01:00
README.md Update readme 2024-12-02 11:08:38 +01:00

README.md

AdventOfCode2024

Solver for Advent of Code 2024 puzzles. https://adventofcode.com/2024/

This is a single command line application for the puzzles written in C++17 with Visual Studio 2022 (v143).

Puzzle Input

This project does not contain the puzzle or example inputs as per the copyright notice of Advent of Code. In order to run the compiled application, the puzzle inputs have to be downloaded from the Advent of Code 2024 puzzle pages, and placed as text files into the AdventOfCode2024\data directory, e.g. AdventOfCode2024\data\historian_hysteria.txt, or AdventOfCode2024\data\example\historian_hysteria.txt for the unit tests. The application will output an error message with details if it cannot find an input file.

Tests

The solution contains a unit test project to help troubleshoot issues and prevent regressions in the solver class framework. These tests cover the solutions for provided examples and full data inputs. I did not find a definitive source for it, but the full data inputs seem to be user-specific, so adding my solutions as tests does not spoil the solutions.

Solutions

Day 1: Historian Hysteria

🔎 Puzzle: https://adventofcode.com/2024/day/1, Solver: HistorianHysteria.cpp

I'm using a std::multiset to collect and sort the values for both lists. This allows to use a single iteration of the left list and two iterations of the right list simultaneously to solve both parts. Nice application of iterators.

License

Copyright (C) 2024 Stefan Müller

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.