Add solution for 2025 Day 12

This commit is contained in:
Thraix
2025-12-15 20:54:45 +01:00
parent fdb8e0c5a9
commit 1a0715149d
2 changed files with 82 additions and 10 deletions
+33
View File
@@ -0,0 +1,33 @@
0:
###
##.
##.
1:
###
##.
.##
2:
.##
###
##.
3:
##.
###
##.
4:
###
#..
###
5:
###
.#.
###
4x4: 0 0 0 0 2 0
12x5: 1 0 1 0 2 2
12x5: 1 0 1 0 3 2
+49 -10
View File
@@ -2,31 +2,70 @@
namespace y2025::day12 namespace y2025::day12
{ {
using InputType = std::vector<int>; struct Area
{
int width;
int height;
std::vector<int> presents;
};
struct Input2
{
std::vector<Array2D<char>> boxes;
std::vector<Area> areas;
};
using InputType = Input2;
REGISTER_DAY(2025, Day12, InputType, int); REGISTER_DAY(2025, Day12, InputType, int);
REGISTER_TEST_EXAMPLE(2025, Day12, ExampleInput, 1, 0); // REGISTER_TEST_EXAMPLE(2025, Day12, ExampleInput, 1, 2);
REGISTER_TEST(2025, Day12, Input, 1, 0); REGISTER_TEST(2025, Day12, Input, 1, 422);
REGISTER_TEST_EXAMPLE(2025, Day12, ExampleInput, 2, 0); REGISTER_TEST_EXAMPLE(2025, Day12, ExampleInput, 2, 0);
REGISTER_TEST(2025, Day12, Input, 2, 0); REGISTER_TEST(2025, Day12, Input, 2, 0);
READ_INPUT(input) READ_INPUT(input)
{ {
std::vector<int> vec; Input2 i;
std::string str; std::string str;
while (std::getline(input, str)) while (std::getline(input, str))
{ {
std::stringstream ss{str}; if (str.empty())
int n; continue;
ss >> n; if (str[1] == ':')
vec.emplace_back(n); {
i.boxes.emplace_back(Input::ReadArray2D(input));
} }
return vec; else
{
Area area;
std::stringstream ss{str};
ss >> area.width >> "x" >> area.height >> ":";
int n;
while (ss >> n)
{
area.presents.emplace_back(n);
}
i.areas.emplace_back(area);
}
}
return i;
} }
OUTPUT1(input) OUTPUT1(input)
{ {
return 0; int total = 0;
for (auto& area : input.areas)
{
int a = area.width * area.height;
int sum = 0;
for (int i = 0; i < input.boxes.size(); i++)
{
sum += input.boxes[i].Count('#') * area.presents[i];
}
if (sum <= a)
total++;
}
return total;
} }
OUTPUT2(input) OUTPUT2(input)