tests for 24
This commit is contained in:
parent
e6f19d8ee3
commit
b6e3631916
21
2019/24.cpp
21
2019/24.cpp
|
@ -5,11 +5,14 @@
|
||||||
#include <iterator>
|
#include <iterator>
|
||||||
#include <map>
|
#include <map>
|
||||||
#include <set>
|
#include <set>
|
||||||
|
#include <sstream>
|
||||||
#include <stdexcept>
|
#include <stdexcept>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <tuple>
|
#include <tuple>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
|
#include <doctest.h>
|
||||||
|
|
||||||
#include <aocpp/Startup.hpp>
|
#include <aocpp/Startup.hpp>
|
||||||
#include <aocpp/Coord.hpp>
|
#include <aocpp/Coord.hpp>
|
||||||
#include <aocpp/Grid.hpp>
|
#include <aocpp/Grid.hpp>
|
||||||
|
@ -107,12 +110,12 @@ auto Part1(std::vector<Coord> const& bugs) -> std::uint32_t {
|
||||||
return bio;
|
return bio;
|
||||||
}
|
}
|
||||||
|
|
||||||
auto Part2(std::vector<Coord> const& bugs) {
|
auto Part2(std::vector<Coord> const& bugs, int minutes) {
|
||||||
std::vector<Neighbor2::C3> bugs2;
|
std::vector<Neighbor2::C3> bugs2;
|
||||||
for (auto const& [x,y] : bugs) {
|
for (auto const& [x,y] : bugs) {
|
||||||
bugs2.push_back({{x-2,y-2},0});
|
bugs2.push_back({{x-2,y-2},0});
|
||||||
}
|
}
|
||||||
for (int i = 0; i < 200; i++) {
|
for (int i = 0; i < minutes; i++) {
|
||||||
bugs2 = Step<Neighbor2::C3, Neighbor2>(bugs2);
|
bugs2 = Step<Neighbor2::C3, Neighbor2>(bugs2);
|
||||||
}
|
}
|
||||||
return bugs2.size();
|
return bugs2.size();
|
||||||
|
@ -120,8 +123,20 @@ auto Part2(std::vector<Coord> const& bugs) {
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
|
TEST_SUITE("documented examples") {
|
||||||
|
TEST_CASE("part 1") {
|
||||||
|
std::istringstream in {"....#\n#..#.\n#..##\n..#..\n#....\n"};
|
||||||
|
REQUIRE(Part1(FindBugs(Grid::Parse(in))) == 2129920);
|
||||||
|
}
|
||||||
|
TEST_CASE("part 2") {
|
||||||
|
std::istringstream in {"....#\n#..#.\n#.?##\n..#..\n#....\n"};
|
||||||
|
REQUIRE(Part2(FindBugs(Grid::Parse(in)), 10) == 99);
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
auto main(int argc, char** argv) -> int {
|
auto main(int argc, char** argv) -> int {
|
||||||
auto const bugs = FindBugs(Grid::Parse(Startup(argc, argv)));
|
auto const bugs = FindBugs(Grid::Parse(Startup(argc, argv)));
|
||||||
std::cout << "Part 1: " << Part1(bugs) << std::endl;
|
std::cout << "Part 1: " << Part1(bugs) << std::endl;
|
||||||
std::cout << "Part 2: " << Part2(std::move(bugs)) << std::endl;
|
std::cout << "Part 2: " << Part2(std::move(bugs), 200) << std::endl;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user