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

66 lines
1.2 KiB
C++

#include "common/aoc.h"
namespace y$1::day04
{
struct Range
{
int left = 0;
int right = 0;
};
struct Pair
{
Range r1;
Range r2;
};
REGISTER_DAY(2022, Day04, std::vector<Pair>, int);
REGISTER_TEST_EXAMPLE(2022, Day04, ExampleInput, 1, 2);
REGISTER_TEST(2022, Day04, Input, 1, 477);
REGISTER_TEST_EXAMPLE(2022, Day04, ExampleInput, 2, 4);
REGISTER_TEST(2022, Day04, Input, 2, 830);
READ_INPUT(input)
{
std::string str;
std::vector<Pair> pairs;
while (std::getline(input, str))
{
std::stringstream ss{str};
Pair pair;
ss >> pair.r1.left >> "-" >> pair.r1.right >> ",";
ss >> pair.r2.left >> "-" >> pair.r2.right;
pairs.emplace_back(pair);
}
return pairs;
}
OUTPUT1(input)
{
int sum = 0;
for (auto& pair : input)
{
if ((pair.r1.left >= pair.r2.left && pair.r1.right <= pair.r2.right) ||
(pair.r2.left >= pair.r1.left && pair.r2.right <= pair.r1.right))
{
sum++;
}
}
return sum;
}
OUTPUT2(input)
{
int sum = 0;
for (auto& pair : input)
{
if (pair.r1.left <= pair.r2.right && pair.r1.right >= pair.r2.left)
{
sum++;
}
}
return sum;
}
}