Use a common main

This commit is contained in:
Eric Mertens
2023-01-31 08:58:42 -08:00
parent 542ccc7884
commit c6264a2a1b
63 changed files with 222 additions and 174 deletions

View File

@@ -19,12 +19,12 @@ auto Parse(std::istream & in) -> std::vector<std::int64_t>
while (in >> x) {
result.push_back(x);
}
std::sort(result.begin(), result.end());
return result;
}
auto Part1(std::vector<std::int64_t> entries) {
auto Part1(std::vector<std::int64_t> const& entries) {
std::bitset<2020> numbers;
std::sort(entries.begin(), entries.end());
for (auto const i : entries) {
if (i >= 2020) {
break;
@@ -39,9 +39,8 @@ auto Part1(std::vector<std::int64_t> entries) {
throw std::runtime_error{"no part 1 solution"};
}
auto Part2(std::vector<std::int64_t> entries) {
auto Part2(std::vector<std::int64_t> const& entries) {
std::bitset<2020> numbers;
std::sort(entries.begin(), entries.end());
for (auto const i : entries) {
if (i >= 2020) { break; }
if (i < 2020) { numbers.set(i); }
@@ -79,8 +78,9 @@ TEST_CASE("part 2") {
}
auto main(int argc, char** argv) -> int {
auto entries = Parse(aocpp::Startup(argc, argv));
auto Main(std::istream & in) -> void
{
auto const entries {Parse(in)};
std::cout << "Part 1: " << Part1(entries) << std::endl;
std::cout << "Part 2: " << Part2(entries) << std::endl;
}

View File

@@ -56,10 +56,8 @@ TEST_CASE("part 2") {
}
auto main(int argc, char** argv) -> int {
auto const in_ptr = aocpp::Startup(argc, argv);
auto & in = *in_ptr;
auto Main(std::istream & in) -> void
{
std::uint64_t part1{}, part2{};
std::string line;

View File

@@ -76,8 +76,9 @@ TEST_CASE("part 2") {
}
auto main(int argc, char** argv) -> int {
auto grid = Grid::Parse(*Startup(argc, argv));
auto Main(std::istream & in) -> void
{
auto const grid {Grid::Parse(in)};
std::cout << "Part 1: " << Part1(grid) << std::endl;
std::cout << "Part 2: " << Part2(grid) << std::endl;
}

View File

@@ -75,8 +75,9 @@ TEST_CASE("part 2") {
}
auto main(int argc, char** argv) -> int {
auto adapters = Parse(*aocpp::Startup(argc, argv));
auto Main(std::istream & in) -> void
{
auto const adapters {Parse(in)};
std::cout << "Part 1: " << Part1(adapters) << std::endl;
std::cout << "Part 2: " << Part2(adapters) << std::endl;
}

View File

@@ -180,12 +180,13 @@ TEST_SUITE("documented examples") {
};
auto input = Parse(in);
REQUIRE(Part1(input) == 71);
CHECK(Part1(input) == 71);
}
}
auto main(int argc, char** argv) -> int {
auto input = Parse(*aocpp::Startup(argc, argv));
auto Main(std::istream & in) -> void
{
auto input {Parse(in)};
std::cout << "Part 1: " << Part1(input) << std::endl;
std::cout << "Part 2: " << Part2(input) << std::endl;
}

View File

@@ -140,10 +140,8 @@ TEST_CASE("errors") {
}
auto main(int argc, char** argv) -> int {
auto const in_ptr = aocpp::Startup(argc, argv);
auto & in = *in_ptr;
auto Main(std::istream & in) -> void
{
std::int64_t part1 = 0;
std::int64_t part2 = 0;

View File

@@ -178,8 +178,9 @@ TEST_CASE("part 2") {
}
auto main(int argc, char** argv) -> int {
auto const input = Parse(*Startup(argc, argv));
auto Main(std::istream & in) -> void
{
auto const input {Parse(in)};
std::cout << "Part 1: " << Part1(input) << std::endl;
std::cout << "Part 2: " << Part2(input) << std::endl;
}

View File

@@ -1,3 +1,6 @@
add_executable(2020_01 01.cpp)
target_link_libraries(2020_01 aocpp)
add_executable(2020_02 02.cpp)
target_link_libraries(2020_02 aocpp)
@@ -14,4 +17,4 @@ add_executable(2020_18 18.cpp)
target_link_libraries(2020_18 aocpp)
add_executable(2020_21 21.cpp)
target_link_libraries(2020_21 aocpp dlx)
target_link_libraries(2020_21 aocpp dlx)