Files
AdventOfCode/src/2024/Day03.cpp
T
2025-11-26 23:02:30 +01:00

51 lines
1.1 KiB
C++

#include "common/aoc.h"
namespace y2024::day03
{
REGISTER_DAY(2024, Day03, std::string, int32_t);
REGISTER_TEST_EXAMPLE(2024, Day03, ExampleInput, 1, 161);
REGISTER_TEST(2024, Day03, Input, 1, 178794710);
REGISTER_TEST_EXAMPLE(2024, Day03, ExampleInput, 2, 48);
REGISTER_TEST(2024, Day03, Input, 2, 76729637);
READ_INPUT(input)
{
return Input::Read(input);
}
int32_t Mult(const std::string& str)
{
int i, j;
std::stringstream ss{str};
ss >> "mul(" >> i >> "," >> j >> ")";
return i * j;
}
OUTPUT1(input)
{
int32_t sum = 0;
std::vector<std::string> matches = Helper::GetAllRegexMatches(input, "mul\\([0-9]*,[0-9]*\\)");
for (auto& str : matches) sum += Mult(str);
return sum;
}
OUTPUT2(input)
{
int32_t sum = 0;
bool mul = true;
std::vector<std::string> matches =
Helper::GetAllRegexMatches(input, "(mul\\([0-9]*,[0-9]*\\)|do\\(\\)|don\'t\\(\\))");
for (auto& str : matches)
{
if (str == "do()")
mul = true;
else if (str == "don\'t()")
mul = false;
else if (mul)
sum += Mult(str);
}
return sum;
}
}