From 104f034568c741ab857cc8bb612e188e7f707f52 Mon Sep 17 00:00:00 2001 From: Jos van Goor Date: Sat, 3 Dec 2022 10:48:26 +0100 Subject: [PATCH] Advent 2022 day2 & day3 --- advent_of_code_2022/day2/input.txt | 2500 ++++++++++++++++++++++++++++ advent_of_code_2022/day2/main.cc | 47 + advent_of_code_2022/day3/input.txt | 300 ++++ advent_of_code_2022/day3/main1.cc | 26 + advent_of_code_2022/day3/main2.cc | 44 + advent_of_code_2022/day3/test.txt | 6 + 6 files changed, 2923 insertions(+) create mode 100644 advent_of_code_2022/day2/input.txt create mode 100644 advent_of_code_2022/day2/main.cc create mode 100644 advent_of_code_2022/day3/input.txt create mode 100644 advent_of_code_2022/day3/main1.cc create mode 100644 advent_of_code_2022/day3/main2.cc create mode 100644 advent_of_code_2022/day3/test.txt diff --git a/advent_of_code_2022/day2/input.txt b/advent_of_code_2022/day2/input.txt new file mode 100644 index 0000000..8a61258 --- /dev/null +++ b/advent_of_code_2022/day2/input.txt @@ -0,0 +1,2500 @@ +A Y +C Y +C X +A Y +C X +C Y +B Z +A Y +A Y +C Z +A Y +A Y +A Y +C Y +A Y +A Y +A Y +A X +B X +A X +A Y +C Y +C X +A Y +A Y +C Y +A X +A Y +B Z +A Y +C X +A Y +A Y +C Z +C Y +C X +A Y +A Z +A Y +A Y +A Y +A Y +C Y +C Y +B Z +B Z +C Y +B X +A Y +A Y +A Y +C Z +A Y +C X +A Z +C Y +A Y +A Y +A Y +A Y +A Y +C X +A Y +C Y +A Y +C Y +A Y +A X +C Y +A X +A Y +C Y +C Y +A Y +C X +A Y +A Y +A Y +C X +A Y +A Y +A Y +C X +A Y +C X +A Y +A Y +C Z +A Y +A Y +A Y +C X +A Y +A X +C Y +A X +B Z +C Y +A Y +A Y +B Z +C Y +A Y +A Z +C Z +C Y +B Z +A Y +A Y +C Y +A Y +C X +A Y +A Y +C X +C X +C Y +A Y +A Y +C X +A Y +A Y +A Y +A Y +C X +C Y +A Y +A Y +A Y +C Z +A Y +C Y +A Y +C X +C Z +A Y +B X +A Y +C X +A Y +B X +A Y +C Z +A Y +A Y +A Y +A X +A Y +A Y +A Y +C Y +A Y +A Y +A Y +A Y +C Y +C X +A Y +A Y +A Y +A Y +C Y +A Y +A Y +A Y +C Y +B X +A Y +A Y +A Y +A Y +A Y +A X +C Y +A Y +C X +A X +B Y +A Y +C X +A Y +C Y +C Y +A Z +C Z +C X +B X +C Y +A Y +C Z +A Z +A Y +C X +A Y +A Y +C X +A Y +B X +C X +A Z +C Y +A Y +C X +A Y +A Y +A Y +B Z +C Z +A Y +A X +C X +A Y +A Y +C Y +A Y +A Y +A X +A X +C Y +C X +B X +A Y +A Y +A Y +A Y +B Y +A Y +C Y +A Y +A X +B Z +A X +C Z +C X +C X +C Y +C X +C X +A X +C X +A Y +C Y +A X +C X +B Z +C Z +A Y +C X +B Y +A Z +C Y +C X +A Y +A Y +A Y +C X +A Y +A Y +A Y +A X +B Y +C Y +C X +B Z +A Y +A Y +B Y +A Y +A Y +A Y +C X +A Y +A Y +A Y +A Y +A Y +A Y +A Y +A Y +A Y +C Y +C Y +C Z +A Y +C Y +A Y +A Y +A X +A X +A Y +A Y +C Y +A Y +A X +A Y +A Y +C X +A Y +C X +C X +C Y +B Y +A Y +C X +A Y +A Y +A X +A Y +A Y +A X +A Y +B Z +C Y +A Y +A Y +A Y +C Y +C Z +A Y +A Y +A Y +A Y +A Y +C Y +C Y +C Y +C Y +C Y +A X +C Y +A Y +A Y +A Y +A Y +C X +A Y +C Z +A Y +B Y +A X +A Y +A Y +A Y +C Y +C Y +A X +C Y +A Y +A Y +A Y +B Z +A X +A Y +A Y +A Z +C Y +A Y +C X +C Y +C Y +C Z +B Y +C X +C X +A Z +C Y +A Y +A Z +A X +A Z +C Y +C X +B Z +A X +C Y +A Y +C Y +B Z +A Y +A Y +C X +C X +C X +A Y +B X +C X +C Y +C X +A X +A X +B X +A Y +A Y +A Y +C X +A Y +C Y +C X +A Y +B Z +A Y +A Y +A Y +B X +A Y +A Y +A Y +C Y +A Y +C X +C Y +C Y +A Y +B Z +C Y +C X +C Y +C X +C X +C Y +A Y +A Z +A Y +A Y +A Y +A Y +C Z +A Y +A Y +C Y +A Y +A X +C Z +C Y +C X +C X +A Y +A Z +A Z +B Y +A X +C X +C X +A Y +A Y +A Y +C Z +C X +C X +C X +A Y +C Z +A Z +C X +C Y +A X +C X +C X +A Y +C Y +C Y +B X +B Z +A Y +A Y +A Y +B Z +C Y +A Y +B Z +A X +C Y +C Y +B X +C X +B Y +A Y +B X +C Z +A Y +A Z +C Z +C Z +A Y +A X +A Y +A X +C Y +A Y +A Y +A Y +C X +C X +C X +A Y +A Y +A Y +A Y +A Y +C Y +A Y +C Y +A Z +C X +C Y +A Y +A Y +B Y +C Y +A Y +C Z +C Z +A Y +B Y +A Y +A Y +A X +C Y +A Y +A Y +A Y +C Z +C Y +C X +A Y +A Y +B Z +C Y +C X +C Z +A Y +C Y +A Y +A Y +C X +C Y +C Y +A Y +C Y +C X +C Y +A Y +A Y +A Y +A Z +B Z +A Y +A Y +A X +C Z +C X +A Y +A Y +A Y +C X +C Y +B Z +C X +A Y +A Y +A Y +C Y +A Y +C X +C Z +C X +A Y +A X +A Y +C Z +C X +B Y +A Y +A X +A Y +B Y +A Y +A Y +C Y +C Z +C Y +C Y +C X +A Y +A Y +A X +A Y +A Y +A Z +A X +C Y +A Y +C Y +C Y +C Z +C Y +C Y +A Z +A Y +C Z +C Y +C Y +C Y +B X +C Y +A Y +C X +A Y +B X +C Z +C Z +C Y +A Y +C X +A Y +A Y +A Y +A Y +C Z +A Z +A X +C Y +C X +A Y +A Y +C X +C Y +C Z +C X +C Y +A X +A Y +A Y +B X +A Y +A X +C X +A Y +A Y +A Y +B Z +A Z +B Z +C X +B Z +A Y +C X +A Y +C X +A Y +A Y +C Y +A Y +A Y +B X +A Y +C Y +A Y +A Y +A Y +C Y +A Y +A Y +A Y +B Y +A Y +C Y +A Y +A Y +A Y +A Y +C Y +A X +B X +A Y +B Z +C X +A X +B X +C Y +A Y +B X +C Y +A Y +B X +A Y +C X +B X +A Y +A Y +A Y +A Y +C X +C X +A Y +B X +C Y +A Y +A Y +A Y +A Y +B X +A Y +B Z +C X +A Y +B Z +C X +C Z +C Z +B X +C Y +A Y +A Y +A Y +A Y +A Y +A Y +C Y +A Y +A Y +A X +A X +C X +A Y +C Z +C Y +A Y +C X +A Z +A Z +A Y +C Z +A Y +A Y +A Y +C Y +A X +C X +C Z +A Y +A Y +C X +B X +A Y +A Z +C Y +A Z +A Y +A Y +A Y +A Y +A Y +B X +A Y +C Y +C X +A Y +A Y +C Z +C Z +C Y +A Y +B Z +A Y +A Y +A Y +A Y +A Y +C X +A Z +A Y +C Y +A Z +C X +A Y +C X +A Y +A Y +C Z +C Y +A Y +A Z +C X +C X +A Y +B Z +A Y +B X +C Y +C X +C Z +A Y +A X +C X +C Z +C Y +C X +A Y +A Y +A Y +A Y +A Y +A Y +C Y +A Y +C Y +A Y +C Y +B Y +A Y +A Y +A Y +A Y +B Z +C Y +A Y +C Y +A X +C Y +A Y +B Y +C Y +C X +C X +A Y +A Y +A Y +C X +A X +A Y +A X +C Y +A Y +A Y +C Y +C Y +A Z +A Y +A Y +B X +A Z +B X +A Y +C Y +A X +C Y +C Z +B Z +A Y +A Y +C Y +A Y +C Z +A Y +A X +A Y +C Y +A Y +A Y +A Y +A Y +A Y +A Y +A Y +A Y +C X +C Y +A Y +A Z +A Y +C X +A Y +C Z +A Y +C X +A X +A Y +C Y +A Y +C X +A X +A Y +A Y +A Y +C Y +A Y +C Y +A Y +B Y +C Y +C Y +A Y +A Y +A Y +A Y +C Z +A Y +C Z +A Y +C Y +B X +A X +C Y +C Z +A X +A Z +A Y +A X +C Z +C Y +A Z +C Y +A X +A Y +A Y +A X +C Z +A X +A Z +C Y +A Y +C Y +A Z +B Z +A Y +C X +C X +A Y +A Y +A X +A Y +A Y +A Y +C X +A Y +B X +A Y +C X +A Y +C Y +A Y +C Y +C Z +C Y +C Z +A Z +A Y +C Y +C Z +C Z +A Y +A Y +C Y +A X +A Y +C Y +A Y +A Y +A Y +A X +A Y +B Z +C Y +C X +A Y +C X +B X +C Y +C Y +A Y +C Y +C Y +A X +A Y +A X +A Y +A Z +C Z +B X +A Y +C X +A Y +C Z +A Y +C Y +A Z +A Y +A Y +A Y +C Y +C Y +A Y +A Y +C Y +A Y +C Y +C Y +A X +A Y +C X +C Z +A Y +A Y +A Y +C X +C X +C Y +C Y +C Z +A X +A Y +C Y +C Z +A Y +B Y +A Y +C Z +C Z +A Y +A Y +A Y +B Z +A Y +A Z +A X +C X +C X +C Z +A Y +C Z +A Z +C Y +C Z +C X +C Y +C X +A Y +C Y +A Z +A Y +A Y +A Y +A Y +C Y +A X +C X +A Y +A Y +C Z +B Z +A Y +A Y +C X +A Y +C Y +C Y +B Z +A Y +C Y +A Y +C X +C X +A Y +C Y +A X +C X +A Y +C Z +A Y +C X +A Y +C X +A Y +C Y +A Y +C Z +A Y +C Z +A Y +A Y +A Y +C Y +A Y +A X +A Z +A Y +C Y +C Y +A Y +A Y +B Z +A X +A X +C X +C X +C Z +C Z +A Y +A Y +A Y +A X +A X +A Y +A Z +C Y +C Y +C X +A Y +C X +B X +A X +A Z +A Y +B X +A Y +B Z +B Z +A Y +B X +C Y +A Y +A Y +C Y +C Y +A Y +A Y +A Z +A Y +C Z +B X +A Y +C Y +C Y +A Y +B X +C X +C Y +A X +C X +A Y +A X +A Y +A Y +B Z +A X +C Y +A Y +A Z +B Y +A Y +B X +A Z +C Y +C Z +C Z +C Z +C Y +A Y +C Y +C Y +B Y +A Y +C Z +B Y +A Y +A Y +A Y +A X +B Z +A Y +C Z +A Y +A X +C Z +C X +A Y +A Y +A Y +B Z +B Z +A Y +C Z +A Y +A Y +A Y +C Y +C Z +C X +A Y +B Z +C Y +B Z +C X +C X +A Y +A X +A X +B Z +C Y +C Y +C X +A Y +C X +C X +A Y +C X +C Z +A X +C Y +C Y +C Y +A Y +A X +C Y +A Y +A Y +C Y +C X +C Y +B X +C X +A Z +A X +A Y +C Y +A Y +A X +C Y +A Y +A X +C X +A X +C X +C Y +C Y +A Y +C X +A Y +A X +C Y +A Y +C Z +A Z +A Y +A Y +A Y +A Z +A Y +B X +B Z +C X +A Z +C X +A Y +A Z +A X +C Y +C Y +B Z +A Z +A Y +A Y +A Y +B X +C Y +A Y +A X +A Y +B Z +B Z +A Y +A Y +A Y +C X +C X +C X +C Y +A Y +C Y +C Y +A Y +A Y +A Y +A Y +C Y +A Y +C X +A Y +C X +C Y +C Y +C Z +B X +A Y +C Y +A Y +C Y +A Y +A Y +A Y +A Y +B Z +C Z +C Y +A X +C Y +A Y +C Y +C Y +A Y +B Z +C Y +B X +B X +A Y +A Y +C Y +C Y +B X +A X +C Y +C X +C Y +A Y +A Y +C X +A X +A Z +A Y +A Z +A Y +B X +A X +C X +A X +C X +C Z +A Y +C X +C Y +C X +C Y +A Y +C Y +A Y +A Y +C Y +C Z +C X +A Y +A Y +A X +C Y +B Z +A Y +C Y +B Z +C Y +A Y +C Y +A X +A X +A Y +B X +A Y +C X +C Y +A Y +A Y +A Y +C X +C Z +A Y +C Y +A Z +C Y +A Y +C Y +A Y +C Z +C Y +C X +A Y +C X +A Z +B Z +A Y +A X +A Y +A Y +A X +A Y +A Y +A Y +A Y +C Y +C X +A Y +A Y +A Y +A Y +A Y +C Y +C Y +C Y +A X +A Z +A Y +C X +A Y +A Y +C Y +B Y +C Y +A X +A Y +A Y +A Y +C X +A X +C Y +C Z +A Y +B Z +A Z +C Y +A Y +A Y +B Z +A X +A Y +C Y +A Y +A X +B X +C Z +B X +A Y +A Y +C Y +A Y +A Z +A Y +A Y +A Y +C X +A Y +A Z +A Z +A Y +C X +A Y +C Z +C Y +B X +C Y +A Y +C Z +B Z +A Y +C Y +A Z +A Y +C X +C Y +A X +A Y +C Z +A Y +A Y +A Y +A Y +B Z +A Z +C Z +A X +A Y +A Y +A Y +A Y +A Y +C Y +C Y +A Y +C X +A Y +A Y +A X +A X +A Y +C Y +C Z +A Z +A Y +A X +B X +B X +B Z +C X +C Y +A Y +A Y +A Y +C Z +A Y +A Y +A Y +C Y +C Y +B Y +C Z +B Z +C Y +B Z +A Y +A X +C X +A X +C X +B Y +A Y +A Z +A Y +A X +A Y +A Y +C X +A Y +A Y +C X +C X +A Y +C X +C Z +C X +B Z +B Z +B Z +C Y +B Z +C Y +C Z +B Y +A Y +C Z +A Y +C X +C X +B Z +B Y +A Y +A Z +C Y +C X +C Y +A Z +C X +C X +C X +A Y +A Y +C Y +A Y +C Y +C Y +A Y +C Y +C Z +A Y +B Y +C Y +C X +A Y +A Y +A X +A Y +C Y +B Z +A Y +A Y +A Y +A Y +C X +B X +A Y +A Y +A Y +A Y +B X +A Y +A Y +A X +C Y +A Y +A Y +C X +A Y +A Y +A Y +C X +B Y +A Z +C Y +C X +A Y +A Z +B X +A Y +A Y +A X +C Y +C Y +C Y +A Y +C Z +A Y +A Y +C Y +B Z +A Y +A Y +C X +A X +A Y +A Y +A Y +B Z +C Y +A Y +C Y +C Y +A Y +A Y +C Y +C Y +A Y +C Y +A Y +B X +C Y +A X +A Z +A Y +A Y +C Y +C Y +A Y +C Z +A Z +A Y +A Y +C Y +C Y +C X +C Y +A Y +C X +C Y +A Y +C X +C Y +C Y +A Y +A Y +A Y +C X +C Y +A Y +A Y +C Y +A Y +C Y +A Y +A Y +C Y +C Y +C Y +A Z +A Y +C Y +C Y +A Y +A X +C X +A Y +C Y +B X +C Y +A Y +A Y +C Y +C Y +A Y +A Y +A Y +B Z +A Y +C Y +A Y +A Y +C X +C Y +A Y +A Y +C Y +C Y +C Y +C Z +A Y +A Y +C X +A Y +C Z +A X +C X +B X +A Y +C Y +A Y +A Y +A X +A Y +A Z +B Y +A X +A Y +C Y +C Y +C X +A Y +C Y +A Y +C Y +A Y +C X +C X +A Y +C Y +C Z +C X +B X +A Y +B X +A Y +A Y +C Y +A Y +C Y +A Y +A Y +A Y +A Y +A X +A Z +A Y +B X +A Y +A Y +C X +A Y +C Z +A Y +A Y +C Y +C X +C X +A Y +A Y +B X +C X +A Y +C Y +A Y +C Y +A Y +B Z +A Y +C Y +A Y +A Y +A Y +C Z +A Y +A X +C X +A X +A Y +A Y +A Y +C X +C Y +C Y +C Y +A Y +A Y +A Z +C X +A Y +A Y +A Y +C Y +C Y +A X +A Y +C Y +B Y +A Y +A Z +C X +A Y +A Z +A X +A Y +A Y +A Y +C Y +A Y +A Y +A X +C Y +A X +B X +C X +C Y +A Y +A Y +A Y +C Y +A Y +A Y +A Y +A X +C X +A Y +A Y +A Y +C Y +A Y +B Y +C Y +C Y +C Y +C Y +A Y +A Y +C Y +C Y +A Y +C Y +C Y +A Y +C Y +C X +C X +C Y +A X +C X +C X +A Z +C Y +C Z +A Y +B Z +A Y +A Y +B X +C Y +A Y +C Z +A Y +C Z +A Y +A Y +A X +C Y +C X +C X +C Y +C X +A Y +A Y +C X +A Y +A Z +B X +C X +C Y +B X +B Z +A Y +A Y +A Y +C Y +A X +C Y +C Y +C X +A Y +C X +A Y +A X +C X +A Y +A Y +A X +C Y +B Y +A Y +A X +A Y +C Y +A X +C Y +A Z +A Y +A Y +C Z +A Z +C Y +A Y +C Y +A Y +A Z +C Y +C Y +B Z +B Y +C X +C X +B Z +A Y +A Y +A Y +A Y +A Y +A Y +C X +A Y +C Y +A Y +B Y +A Y +A Y +B X +A X +C X +C Y +A Y +C Y +A Y +A Y +A Y +A Y +C X +B Z +A Z +C Y +B Y +C X +A Y +A X +A Y +A Y +C Y +C Y +A Y +A Y +C Y +B Z +C Y +A X +C Y +A Z +A Y +A Y +A Y +B X +A Y +C Y +C X +B Y +C Y +A Y +B Y +A Y +A Y +C X +C Y +C Y +A Y +A Y +C X +C X +C Y +A Y +C X +C X +B X +C Y +A Y +C Y +B Z +A Y +B X +C Y +C X +A X +A Y +C Y +A Y +A Y +A Y +C X +A Y +C X +C X +A Y +C Y +A Y +B Z +C X +C Y +C Y +B X +A Y +C Y +A X +A X +B Z +C X +A Y +C Y +A Y +A X +C Y +A Y +A Y +A X +A X +A Z +C Z +B Y +C Y +C X +A Y +A Y +C Y +A Y +C Z +C X +C X +C Z +C Y +C X +C X +A Y +C Z +B X +C Z +A Y +A Y +C Y +C X +C Z +C X +C X +C Y +C X +C Y +A Y +A X +A Y +C X +A Y +A Y +A Y +A Y +A Z +C X +A X +B X +A Y +A Y +C Z +C Y +A Y +A Y +C Y +C Y +C Y +A Y +A Y +A Y +B X +A Y +B Z +A Z +A X +A X +C Y +A Y +C Z +A Y +A Y +C Y +A Y +A X +C Y +C Y +A X +A Y +C Y +A Y +C X +A Y +C X +A X +A Y +A Y +A Y +B X +C Z +A Z +B Y +A Y +B Z +B Z +A Y +C Z +B Z +A Y +A Y +A Y +C Y +B X +A Y +C X +A Y +C Z +C X +B Y +C X +C X +B X +C Y +B Z +A X +A Y +B Y +C Z +A Y +A Z +A Y +C X +A Y +A Y +C Y +C X +B Y +B X +C Y +B X +C Y +A X +A Z +A X +C X +B Z +C Y +C X +A Y +A Y +A X +B X +C X +A Y +B Y +C Z +A Y +C Y +A Y +A Y +A Y +B X +A Y +C X +A Y +A Y +A Y +A X +C X +A X +C Z +C Y +A Y +A Y +C Y +A X +C Z +A Y +A Y +A Y +B Y +C Y +C Y +C Z +C Z +C Z +A Y +C Y +A Y +A Y +A Y +A Y +A Y +B Y +C Y +C Y +A X +C Z +C Y +A Y +A Y +A Y +C X +A Z +A Y +A Y +A X +A Z +C X +B Y +A Y +A Y +C Y +B X +A Y +A Y +C Y +C Y +C Z +A X +C Y +C X +C X +C Z +A X +B Z +C X +C X +C Y +C X +C Z +C X +C X +B Z +B Z +A Y +B Z +A Y +A Y +A Y +B X +C X +A Y +C Z +A Z +A X +A Y +B Y +B X +B Z +A Y +A X +A X +A Y +C X +B X +A Y +C Y +A Y +A Y +C X +C Y +C X +C Z +B X +C X +C Z +A Z +A X +A Y +A Y +A Y +C Z +A Y +C Y +C X +A Y +A Y +C X +C X +A Y +C Y +C Z +C Y +C X +B Y +C Y +C X +A Y +B X +C X +A Y +A Y +C Y +C Z +A Y +A Z +B Y +A Y +B X +C Y +C Z +B X +B X +C X +A Y +B Z +A Y +A Y +A Y +A Y +C X +A Y +A Y +C Z +C X +B Y +C Y +C Y +A Y +C X +B Z +A Z +C Y +A Y +B Y +B X +B Y +A Z +C Y +C Z +A Y +C Z +C X +A Y +A Z +C Z +A Y +A Y +A Y +C X +A Y +C Y +B Z +A Y +C X +A X +A Y +C Y +C Z +C Y +A Y +C Z +A Z +A Y +C Y +A Y +C X +A Y +A Y +B Z +A Y +A Y +A Y +C Y +C Y +C Y +C X +C Y +C X +B Z +A Y +A Y +A Z +A Z +A Y +A Z +A Y +A Y +A X +C Z +A Y +A Y +A Y +C X +C Y +C X +A Y +A Y +A Y +C Y +C X +B Y +A Y +C Y +C Y +A Z +C Z +A Y +A X +A Y +A Y +B X +A Y +C Y +A X +C Y +A Y +A Y +A X +C Y +A X +B X +C Y +A Y +A Y +A Y +A Y +C Z +C Y +C X +A X +A Y +C X +C Y +A X +A X +B Y +B Z +A Y +C Z +A X +C Y +A X +A Y +C Y +C X +C Y +C X +A Y +A X +A Y +A X +C Z +A X +A Y +C Y +C X +C Y +C X +A Y +C Y +C X +A Y +A Y +C Y +C Y +A Y +A Z +C Y +A Z +A Y +C Y +A Y +A Y +C Y +A Y +B X +C X +C Y +C X +A Y +B Y +C Z +A Y +C X +A Y \ No newline at end of file diff --git a/advent_of_code_2022/day2/main.cc b/advent_of_code_2022/day2/main.cc new file mode 100644 index 0000000..102d07a --- /dev/null +++ b/advent_of_code_2022/day2/main.cc @@ -0,0 +1,47 @@ +#include + +#include +#include + +void run_game(const std::array, 3>& scoring) +{ + int score = 0; + std::fstream in{"input.txt"}; + + char elf{}; + char you{}; + + while (true) + { + in >> elf >> you; + + if (in.eof()) + break; + + score += scoring[elf - 'A'][you - 'X']; + } + + fmt::print("Result: {}\n", score); +} + +int main() +{ + std::array, 3> scoring_part1 + {{ + //X Y Z + {{4, 8, 3}}, // A (rock) + {{1, 5, 9}}, // B (paper) + {{7, 2, 6}} // C (scissors) + }}; + + std::array, 3> scoring_part2 + {{ + //X Y Z + {{3, 4, 8}}, // A (rock) + {{1, 5, 9}}, // B (paper) + {{2, 6, 7}} // C (scissors) + }}; + + run_game(scoring_part1); + run_game(scoring_part2); +} \ No newline at end of file diff --git a/advent_of_code_2022/day3/input.txt b/advent_of_code_2022/day3/input.txt new file mode 100644 index 0000000..076cc03 --- /dev/null +++ b/advent_of_code_2022/day3/input.txt @@ -0,0 +1,300 @@ +FqdWDFppHWhmwwzdjvjTRTznjdMv +ZBJrDVfQcfSRMLjZnjjM +cBffPfbrbQcgQJggfVQJBPbCwlPtWFDWHFHhpmmGlGmlqmDG +PNbMLgmPgRDgRtMPDdmdbmdmQrTBVCZnVnpCnNHHVZBNVZHc +ljvvqhlvshhnrcpBZqpTcr +zGhWzFTJvsFttddWbMRdmP +hhGdDhfdDhmdnHwtzzRtdzbzQQQg +WTTZJLsvLRJCcWJWScWWLtzjwBzBttbBzSwVQjQBtt +vLJcLLTRsvsTZPqHGhFHGhhPhfqD +dJszLvzvCZZsJmszCrrdFmpppMpDMQPMgmDcDgSS +nRjRbnnjlNhblnjtVtQlWttMFPfMfPgDMpBgSBPgBS +GWVQTVTnTNhjblQNRsdJLLdTCdzdZLrdrJ +RnLJBfmJfmNBHlQvvbdQ +grhgrtqgjJhhggNHqvwWqvbNlbHw +GVTTsFFjJjVVFVGCFTJDDjhFcZmRMZfnZcncSpMSGcRPZpLp +bwSNRNSRzSWnPnJRldMBMQmMlsCcPPCP +FGpDqTTVFFprpjLVQMMGtMclcmHGtBdc +TjhhgTLpVZhpLDZqrTqZVpBSwJwzNnWNWJvzzNSggwwN +PHTMsmwrJMwLJvJddvdHwvcWnnWfccqGnhhfGcDqsnGc +tZVlzQZblBgcSqqRhRmzqf +CmlgmZlQtFtZNlVZdHLMrMvvCrrvvTTC +PrDGBBddprmzddrSqccRgSTpqbsMRR +hvLtfFNvvZNfGGfRgbqsRNlTSSgsbM +QQQjZHHQjvththFffCHPPzmGrmDzDWrWBw +GrjGrpjjCsnwhsGGPwlPTPLPVttPqLVl +HzSHHhczRlLTHqqq +DbhvFSSzQcZbcFbcQjrJrMJmmZnGJmJnjn +mvTDsJLwzlWNDDnZngZNdd +BVtPqFMqtvQFqPqjFBMVtRZGNGhfNcfQdpfgnQgNcNgp +HBHtPbHCLCzsLJvT +nVHVFfggbQVmFFfhLpBpBTrfLBCB +cjjRwJdqtwwwNNjcwRMwnLNTpNsGCnLsLGhBhpNn +tJqStcRMMMjPwlnvzgQWzmHzlmQl +nNSRcDHRmHhhDZZZdBDfWJdfrJ +LGrGVtjCPCbbQQQQLvQpbVQZzsqsBMdBqMvZMMJZqJvdBW +GCPLlLPPPbTpbCbpLPpVlmrmmrHhHcHnHrHHgTFFnm +rQbnBrDTQcdpHttt +qNsNpfjLpNLRNqLMtdVsddcmVzdzVh +WJfLCfvpWpNLbwwwBwbZFvlZ +ZslGPhBWBJbNjmbTmSWN +qtDCZcfZtDjbjCQvmmSj +ttpRzqtqRLDzpRtDdtPlhhZZGBHGPsGZPhwd +WjtcNnMtztGFrsNjcgRHvdwHhhjRwlhwlg +pPSpPBPVqJqBCCPvZdHlVGddwdhvgH +qpDBpBqPTDLqGLmpTPqbDmWMNrFrrFQnFMNnMNQtMm +dNwfsjFLQLFNBhTCTPPTBJhhTP +VmVMgqgRVHtztmgqgzgqRzgMPWCRWTpPCCPWPThDdZPCRZJp +VMqtMgGHmgVMvmqMMtGMSmbslnQFcsndfjNNsnfscnbddF +qbWcqrFNCJGSChvLGv +MnslRSpSVsGgGhDDwLvl +RjMtfnpmmmjSWSbjrNPN +rsCsqTVgfCnQFdCznQ +ZRsBvMvmZMGQQmFnDmQzzQ +MlGLlBjRGjjWWGRGMlNrLLrssTPNfLcTgrVr +vpSBBcJnWnSmcqmcChdcgf +NRNPFDwwDbThqTJffZQHhd +DzPDNVNbLwPzMLRbNMDjBlvpWjrvrVJjjSsBjr +dndGpnWdVnBPFFHTBgGH +qCcCmjqNNJDtcJQjqJqMCQJcFTBRZRwBZBHDPRHBHZDbgBBR +szJcCtNQqjqCNjjNhdgWfLLdhVWsSVnr +NjJLgSLGGCLWvqNqNBvwFb +htmVmtHnlZmDVhtmhblmDMHddBRvwwZQQqWPFvFwdvRWdR +HnlnHfDsbSTbJzsz +JvZfsPsPhRfZZnCdtnmjHVRLCH +TzcczTtgqpgGSTlHHVHCGjCdHdnQQQ +wDBDSDlWzwwzDqqMtrMrfsfbNvJNJB +ThfQTdQzQbgdhdNbJFJSlbBLlmqqHBSHCRHsHm +rWBWWPcvpGGwjPPpvpPGplRSnLLnCrLRsRlLsLmLmR +cGWPPMtpZDwpMpJQBQQQDBBVNfdQ +WcWDRLSzFrRFFccPmnssMrGtmMnnGm +jvvgCCTvNqTtJqsnqwPBmspZMB +gbVgbvlChJVbCdbtTgjdLWSHWcHSDcQzFzRzDF +zTrHgrFWRrWvMpPNBVZZHVfN +hdnlltGLtGSQPVLSNBQN +CqGGtGwlhlGdtGmbtjtmmvDRFvVFTTRDRbRgFJRbDr +DTFpQFrZDFBDFrTNFjSWJsWlWjsRJcslsp +zzPqvdqNzvqzfzMfzqmCzzfJsclWjSSRWglgjclWSmcjlJ +hfPGwhhvMGCVCdddhQQZQnNrTDQnFrtn +DDMFjwVTgVmMWgVpdqtlJnpvHHnslw +fFfZzLSfzBfZBZtqJJHsnSsldlld +GLcNhRGLZBhmDWTjDTWF +FbVcQRVRBFfNFfccVfZcWddnGrrHncWtdHsZ +hwGwjgTSGrssZHHTdn +LvPvCJgJLwjlSJmSPLvvgGfFBpBVfLLMBQMRRbzMVb +rfMCJPBMMCrSCSBGZZqRlRLzqhqh +LDvdNmbgHjHgnmnvnHjgDjqlZhZzszhqzWsRWRRNcRNZ +dmbvHDdnjDjVmjTmHjJVrfprPCCVtLSMrSpJ +fdfTBfNVZffMmdfdhGhcJLJrvnlJvrBJ +FFWFWTzWSWtFgPHgRPWTzggpJcvvSCGSGJnrvhhrrJhlGlGn +pztFjzRTqWzgHqHWtPtPFgmsNfqbDdwDNVwbmfwbdNsb +zCHvDWwvCwgpNRCWWHttCwvNPVTqrRrVbbsnbqQPbVsbPrqG +jBBcmZBGmBSSJdmhBVbnnQrVbVqqVPbhbP +ZfJBmLjfJZMcdZmJffGMtHtwNCvWwwwztMzg +rgFgllfdpFlTHfTnfnNPNtPBBVtpzmVVPmmP +bLSSbGhGWSWmLzztcQPCQC +jvwhhwRwbwshjGhWwsRRTFflFJFzfddFrHzTrJ +GSwgSdwfvdfvwgGwBLdJbjjpmFjSTRpqHmRrjptrqt +NDMVMCsWQVCsQFjFTHjVLqjFrp +PzWDDCNNlCWfbhZZLfBGwl +clFLFpFJcVmmWWgWWcWTdwZqCZCZqDqDDSwvwrdHCZ +GGLfGtbfMNbbLGtzjBNnsMjjZCwDvQZHrHQvDHHHHHHrrNHq +BthbnfPGMstmJgRPpFRTLL +VRcdVRPTgVTLVMwmggJBwblJFlmb +CqDDQsjCCrnnnQQtDcrnGCssJZNvZbvNQmZwmZlbNbwFNwmF +pstjcqrprsHrfDpnrCnHCzRhSMhMMMRVPLMhddfhzT +QNDQThccDghdcLLgVsrVLVlMGM +BbbWpppFFpnfnFbBBPRMTJMRsGlJGlJVLf +wpnbmvbnSwSnmzHHzwwhQqTctNCcqdNqZvhQjj +lwCLwLjzLhLHCvwjGCZJbQSHdBQdDdbDtdSQ +pnzcTVsszpncgFdJpbtDBDttDSJS +zTPcRrfzgzCCvGRhLLqW +BgDbztvdDzLZZwMbDDcFHQQJPLWWPJQJHTHF +jfpNqSrpCqNfNSpjCqSqshNFRQJcJWRRFssgWRHWWFWHQJ +mrnNNgNfMZwmDtZw +ZrrFPQsQPRLcvPJvhg +HpmTjnBmDDDwqtVcHNvJhNVRhgvh +tTpTGfnttqwnqQJzFdzfSdzSzr +qVVZqfVNdnBZMNzNnPzfMqbzJvFSjSllvjBwrvrvFrlsrjJs +LhHtDTmWmWmGDhGLWHghHLCwrwRjjsPJrSjFjFrFClvrww +mDDgtcLcmtTWTTHhpWLDHhDNMqVnqfdqbZdQpqVbzZVPVb +WGpVMtGZplgHVWMtZpZFHJjndvFdjddJhnjLHF +DTrRcSSccfzcCPDCTnvJvjbrrhjNvqjqJL +zczwPDTmfZZtgLwWlp +sTtTpvMjpBdmTlhlBTdvsvdncmVcVVVVHzFqVnFfqzHzWV +GGwQRZNCRgDgsDDbSbSgfGFFrHfVHVVWrHWWcVFF +RZRPgbNSJDsTsplPLsvd +GrGNGhpnPFFBfCQCMwrVlwTC +PPWHmmSvSvdTfJvJVVfCfJ +RjWDmDdDbjcSHmRRLRRHjdDBsFFbBngBzhqbBhpqBPgFFg +TfdNjJjmShGcWvQNQqcNFN +gsRZRMqbDpsHHnZnngMZFPlzQRPWvRtPwtRWzlPv +brgMMgZCLsDpHGGjfGJVSCqddT +BdSRjHScGMVjGdcScwLgqQqphNqNDqBBQW +zzQClvtttrwqrwgCwp +PQJTzvJJTtJQlvQftmfdmdmGRcSdcMSGdS +PjPwvwlfGlGCGwppWBsWQVVQnpCQ +FRSHzMJdrfRnpmpWmp +TzJTMNNrHLJfTJccvjqwwgGLZLLc +dCpjsGvcsLvszTrRRlRrDJ +hPNqqpbhFlrDnPrRnz +SBbphFNtLvvSfLfc +zTFnnZzqrjFVnZTrtwMDptbpMwMMBDzb +JGPCjWGgJjPWGJjNchmbBRpNNDsRsNBbbRBppD +JWCggWSCmhCmvWHTQrTQfHjdVlQZll +WWbrmZjbmjpbWSmcWHSbLddwvDggLFDhFrRlFFDw +qPMVzTPQVfzvVzBQTMtRswwlDdhDghhsfLwdhs +MMMPQBPJPzCVzvzQVtBJJMzCbmSZNWbSccHHmmZpWSZGZS +BgmMgjlBMjHPssBnwphtFwhSVVmGGwFS +rfCqQQrfvCQNRqCnCthFVSGSGtVS +TrzLNvWfQvrWQZNWsnHsssBBcZBMsDdZ +CtJCddDHDDPGHCdNVLPBdLDbbGFbwZSsSSZrfFFrGbGlsb +gvjpnvhRphjmpmSfsTSnPZZrZfrZ +ghRRRhQgWvmPWtHHtLdMtH +qNgQgNgNQFVbqVQDMRZMDRBHHJHRFh +jnTTPzWZCzrWzGRHMrhmBvJBSBBM +jtCGWnCWPTsTzlctWPtqLbwqZggNwgLbwdVq +DJgJDgFqCGlhFDGDCWhqCwRfpbcpbsgsVscRpwbwws +SmLZQmMVvLbsbssNQsQN +tHZMLZZZMVtmnMHWDHjWlGhFDqCl +PZRmjlDBWRBWBQMdQQBDPRhfzSSTTnfFnfzFpVFjfSVFgS +wwHCHLtLwnzNHVTZZV +rJLtZtLZcCrvJwcbrGLvrcDQDhPldhGdmmPRQhhRBlPM +zShzVhbqlbpbRNRscBNwCc +DfmFWnfmnMFDdngdngvJFHgQQNwNsHHCQCwNTTzRcN +FFFZMWWZZJMmJJMFFpztlPtSllLVphttGZ +gWhGwmwQGhVwGzBMnDFmdmDDLbCnLn +tRRHNHHlPHPfPltllNNNRsVPFrTrTbrMMTTDMdLFCrFdPP +HvRvvHNpNvfqSshwqwVQZWhggwhw +jDDRDVqNsRMMVFjFbtzpBlpllCBlhSLHSStH +JJWZZTwWcmZCzQShHhzhhm +wTrgvTwccvdcfvJvWJrvJTNzNMfGNNGjFRsjNDbfVzDs +cVWPPThWctcFRdQpzLTzBL +NNCqwNSrsDqNSSgLgffDCNpBdRvvdpmHRQvBdBqvdzBB +CgbffsDJsSsNgbgJrlcGhGtjnWcJPncjWL +RwwTGRjGlwWNgjgfQVNmjj +HJPdLhLzhbtbdLPLbHHJLdcfBffBgrFQVZgzvgBfvrvvmr +cmchnhtPqLSJJbdPLntlsDGCTWWDsDRwWWWTwS +DDDBsPGPbwhDcDcj +rgfNgCmHMvrrttvtfmNLgrLcQQJTJhcnjTQHcZlwlQHnwj +wgfLmgFgWdBFzSVR +RwsbssJjnbJwwsGPPdDLfTDLLLWvWNDGDpWD +zVtHqzHHVcBQTdpSgvQDSpTS +HHhFCdrrHchmrhcmwsjZwRwMJlshJJJZ +BdQgtJMLBqshLfNhbccfFhffNc +DnVWvvpvWvzrpwRWDbTvbTjTFGlfFSfNSFHGmFGNFmnPlmFS +wDRDZzVWVjrRVjzrQgQdbgCZLCsCQtbd +jQSgWjQmFFvHmjHWVVpZbGlbGlfGpbfGGWpf +zBPtTqzPBcdwrzPJwqCztTNvCGpbGfDnfhZpNGGZGZbG +MTzPtcrcwzTttdBJwPvFVHjMLFHQMgsSLHvs +BHtjmmTtmDtHZjMMdNzCzCWcWZsZdsZs +JRRJVPLwQJrVMPJLVVwChpRRhcdzcNzhzChNdW +SrFwfGwGSnnGPlBMDtjbllggBn +rsMDTrgsBNBgMgDBhfhDghrtcRWJttcmGRWLGQQLJRrqRL +lnVVjvPbwpndvVwlVCjVwtLcsmLLqWWtttlsmGGcmm +SsjVSCZbgTBTfNZH +wlddvlldlBzqSmStdqmmngwgDCgrpMpgCngrMCfn +jVLTHGRHjjvPGcDrfNMbnpngVbpf +RJRTTRZJLRJQZcGGHLhHvTdmBFWFtWzqdWWQlFzqBFWt +HDgZHpZSDpBQdRpHHRsDBNNzTvfTQqcqNNTqTqPQvl +rnMFFMFJwmNgvmfTzcfq +CWMtjCWMCCLWrWVWJwBbpgtRZSHbddZHBDDb +hjLWPZJpZptwJghSfgHTMTgRMR +lCcrblcnlzqDsvbfffTRSMnffjHTgj +sqscDcblGDDpWPwFGwjLLp +plQtRqRlGpPPPLZtmtpttRtJjHJvddLTHrLHJJjbdHvrrN +gcMgTBWBCTczjnvNznnbgH +FBhSwsWFWDhQZQqTTZllsT +WsVttWDbvbtRjDVtDbDbJjrjFpCCcBrSCwrrjwww +nzHqGNMfHqMMwJLLsNBrNcBS +qgnHflgzHlqlZzhnzssfzbZtmVvmTQvQdTtbbDbTvv +RtQCBbJDFhJtQtZtCbMnVnPVfGPpJVJWWmwJPG +NsczRsrdrNrjlcSTGGnwmGmnmVPWwmVT +SHcljRHzNHHjSHcrgNslcczgZtDgMDBCvQQbhDBCbFBCFCCF +dRTFRJTRTgJzSSJmzJfN +jLbQllLvvvrQlLQBrvQmFBGzCFtPSMmSGCtPPF +QjsvDvqlvrQQvnsLjDWghTwZWcccFdRVpc +bWnDbMJMFbhZSfngpfpd +HjcrlvjRjrjlLqTqpwQgpfSQgghZgvgf +THNTjClLHDCCpWmbtC +NpBNsnFMLBcPMZccbQGblWRgGZmbRWdW +CqrJTHCvDfrfwwJHRBvRGvgQmvmlWtlR +rHzJJJDDwJCqjHTwBLccMpFhshnSSsMz +bqVqqrDMpLFbLpJJQDMjbpZndwsvwHHswvnvnnZslG +hgfRghhBWgfzBgZvncvcGvWrnZsG +fTSSSBtTzhPththRrrCBzVLqMMJQjVJJCLjFjjqjJq +pQlCJQjVvVGGnjNqFbFP +wTqtmSmTBhstmstTmWRSdLdfPdNGnhGhdPNnNnrN +mzTZBwWTcSTsTmZRRmzTsVMMVMQMDJgVqqMgcJlVDl +vVwCqdCDvMrlDJCqrDMrPdTFWwZNbRcbmZWQbRQZWZcQWm +fGSfhfjHGBlhSpRmpZFZNbQWjj +ntGlgSSGgStVqdMCDCJnqd +TlTRCrhCpmnCRtMRRWbvMBfwBB +DVdQcsccdczbtQBWvmQBBW +PgHPNcmcqqTphlHTCGrT +GVLCBmdLVtlrmqGCqrTCGnjGSfwzNfPzfNNGzSSw +rMDcWMJsDWRvRcsZPwpJpSzjwwfFjfjJ +hcsscQQsDcWbHbmLgTbVgTmlrbgq +VwJndPThQQjdvbrb +BHlzFFjlZGBBlZBDFSmllfGggLNbNvggtCgNrLQLbfvbfg +SHSHHlZSGZSDHGzHssGmnjhjphJPPpPwnsJRwPMM +QFFGpfGtwgtjwvpwpGGjjBHgqzNNllHRlRllNdBRJl +SWVDWVrDhnWhnqVnWPrhcSldBJPsRMMdPHsRdJHRMMBP +SWZZcmnnZnSCLZDZftFFCvbfTTqTCTQF +TvZBTFZpshPggBNN +bbctWQDjcnwtwDDDllQzLfgsPzqgrsTPLshWfP +bwRbQRnmDwtbTjmwRJQRQVZHpCpHVdvpMHZZMHZJvd +CfqzMCGvGqNrCFFNwcMBbnnbbtBbDStw +sJjsTjvVjLVlLLbtHSnSSwQsDBSH +dJlvLVgJTRVPWWjjggCzhNGzzGZdhqrdmqrq +zGSHWGjzpRsWVfsNwZ +BmPCLzPlJBBvQmLFQrwwrVtfqtqZtsvwfR +hLLzlmmBPFFLJMlmgDTMgdSGbDgGHbSp +ppngVjZwNZwwVJjjnnVVJJJpLrsgmsmrbctsLcLmscDggDsL +vHvRzRPvQPPRqPTlffRTrssbtqmmtbcMcNrDrrtD +CHWdWzWQzdChNVZjZZwB +LjVFhwjbFggMdVggTVMNRWRGWqQWtRNWGlQW +DCzCpJppzJJDScFBzvBGnRWGWrNRQNNWGtNGqB +vFJSzDSszzzccSZHzDDJmvSJhVwLjfVTPZLfwLgjThLZwhVh +FMSSNScRlSGzfqWbqqcpWBhpmW +TrPrnQNnJwtQpmmpmbbL +vwvCsJZZnnwVnVHsfNjDRgSjRzgRjZjN +CRhsghlqlvjhPslQdrMndMTWdPnTMJ +tcDNFDpDSDwDtHrSDwDtFmtpJzWTnzQJpzQGnGWQMWnnTGBd +ZfFSmSfwcwcScZHtVRhRCqLqCfrVrrfg +vHPsBzvRvhCzbwbnjHLVmVbW +ggdlpZNdZdflWTGpVMjgVbqjVmngnVbr +lNpfllFGpZTtclDZzSWQFCWWzChPzQhS +ddbJQGsgJcQccCjjTC +DDflHqNNNjCCPNbT +LFpLzfzqHzLbLvtndJhs +mHtbGdwzmtHZrtrHtHGwrmtcFgBFRsBFcdglRsfsdgJBNN +WvpSVjCCTCSPVDqTVjLqJwWRcWsNlgBcBlfWBRfl +qDwjvqjVTDDLSPpnjqVnzbhbZbrGMmHzbMHHhh +cMrrVsdtCdVtwqdHgLjPLFLfcfZZJB +zGSlGGvpDWWvbSSNTggZPPTTJLZPjPzJ +bNQDWbjlGSGNnWGblbQDQCmdqhsMtrsVnCrtnwdnCt +WZSnCCMMdMMMSJMSVZmmFqVjqjVwVjjc +zvzTlQQQQTNGbmQTjqBjcwwwGgBHGwqB +mthbtmlPhTrNzNhhPLzlPzWfWPJdRCWspPWSSRsWSnJp +nmqsjNFqNLcVlPNvRdvPPv +MrggHrMpbtTpgpDptlQRJJldVRPBsDQvvV +grgrTzfTGSFGsGSCLc +hjdjCfQCLdQcWMfDDQhLsLCjqvVqzzZZprBFbzVdvVnqnBbd +NTglmJGJRnRZVrVvFr +gPGgPJSTPJtHncnjWDhDMDhP +ZWWqBqqmgFFDMTTWDMwwcW +ddGPpJQPprRSCrQzJPJGjHDvssMTDZDwcHhMsHsMHS +zNRGrCRRCjPpdGQJNglqntnbtgNBZtFqtt +pslQSspQrqHfgMRl +tJBTjsTLGMBGMFMg +tDwnhZdnLdZDwczzcPvsVvVW +nZnMSDnGtnzmzWZZcMmgMcHwFFVHhHwbHsVrwQhVhF +dlTqNqfTjdJflCppCQQRHVwFRJrvJsFVQs +LNTqBLPprpLLzWtSnMZBMDGm +PBjlPvvcJlJzwqjnnjLnwm +dMfdpVfVhGVfVpVTtWWbzwngLMLwMRCmgmLMmsww +SWppdTrprThhrGVztcrllrQJZNlBZlrNZB +TTrNcjGNWDdDPDpPjDPNrbmFPfQSFmfSMCmCfSmSSR +sshhqshzBVnzHgwCMbCwcfmRFmRMbm +gHVVnBzJcBgVhtZZtgJhpGrGNpvDpddvprNGrlTJ \ No newline at end of file diff --git a/advent_of_code_2022/day3/main1.cc b/advent_of_code_2022/day3/main1.cc new file mode 100644 index 0000000..74b0fc3 --- /dev/null +++ b/advent_of_code_2022/day3/main1.cc @@ -0,0 +1,26 @@ +#include +#include +#include + +int main() +{ + int result = 0; + + while (true) + { + std::string packing; + std::getline(std::cin, packing); + + char double_packed{}; + std::set c1{packing.begin(), packing.begin() + packing.size() / 2}; + std::set c2{packing.begin() + packing.size() / 2, packing.end()}; + std::set_intersection(c1.begin(), c1.end(), c2.begin(), c2.end(), &double_packed); + + result += std::islower(double_packed) ? (double_packed - 'a' + 1) : (double_packed - 'A' + 27); + + if (std::cin.eof()) + break; + } + + fmt::print("Result: {}\n", result); +} diff --git a/advent_of_code_2022/day3/main2.cc b/advent_of_code_2022/day3/main2.cc new file mode 100644 index 0000000..9d51da6 --- /dev/null +++ b/advent_of_code_2022/day3/main2.cc @@ -0,0 +1,44 @@ +#include +#include +#include + +template +struct push_back_set : public std::set +{ + void push_back(const T& t) + { + this->insert(t); + } +}; + +std::set read_backpack() +{ + std::string packing; + std::getline(std::cin, packing); + return {packing.begin(), packing.end()}; +} + +int main() +{ + int result = 0; + + while (true) + { + char badge{}; + push_back_set b12; + + auto b1 = read_backpack(); + auto b2 = read_backpack(); + auto b3 = read_backpack(); + + std::set_intersection(b1.begin(), b1.end(), b2.begin(), b2.end(), std::back_inserter(b12)); + std::set_intersection(b12.begin(), b12.end(), b3.begin(), b3.end(), &badge); + + result += std::islower(badge) ? (badge - 'a' + 1) : (badge - 'A' + 27); + + if (std::cin.eof()) + break; + } + + fmt::print("Result: {}\n", result); +} diff --git a/advent_of_code_2022/day3/test.txt b/advent_of_code_2022/day3/test.txt new file mode 100644 index 0000000..9919ffa --- /dev/null +++ b/advent_of_code_2022/day3/test.txt @@ -0,0 +1,6 @@ +vJrwpWtwJgWrhcsFMMfFFhFp +jqHRNqRjqzjGDLGLrsFMfFZSrLrFZsSL +PmmdzqPrVvPwwTWBwg +wMqvLMZHhHMvwLHjbvcjnnSBnvTQFn +ttgJtRGJQctTZtZT +CrZsJsPPZsGzwwsLwLmpwMDw \ No newline at end of file