diff --git a/res/2017/day02/test_input.txt b/res/2017/day02/test_input.txt index e69de29..69a690e 100644 --- a/res/2017/day02/test_input.txt +++ b/res/2017/day02/test_input.txt @@ -0,0 +1,3 @@ +5 9 2 8 +9 4 7 3 +3 8 6 5 diff --git a/src/2017/Day02.cpp b/src/2017/Day02.cpp index d452c25..1e3907c 100644 --- a/src/2017/Day02.cpp +++ b/src/2017/Day02.cpp @@ -2,30 +2,66 @@ namespace y2017::day02 { - REGISTER_DAY(2017, Day02, std::vector, int); + REGISTER_DAY(2017, Day02, std::vector>, int); - REGISTER_TEST_EXAMPLE(2017, Day02, ExampleInput, 1, 0); - REGISTER_TEST(2017, Day02, Input, 1, 0); - REGISTER_TEST_EXAMPLE(2017, Day02, ExampleInput, 2, 0); - REGISTER_TEST(2017, Day02, Input, 2, 0); + REGISTER_TEST_EXAMPLE(2017, Day02, ExampleInput, 1, 18); + REGISTER_TEST(2017, Day02, Input, 1, 48357); + REGISTER_TEST_EXAMPLE(2017, Day02, ExampleInput, 2, 9); + REGISTER_TEST(2017, Day02, Input, 2, 351); READ_INPUT(input) { - std::vector vec; + std::vector> vec; std::string str; while (getline(input, str)) { + std::vector vec2; + std::stringstream ss{str}; + int i; + while (ss >> i) + { + vec2.emplace_back(i); + } + vec.emplace_back(vec2); } return vec; } OUTPUT1(input) { - return 0; + int checksum = 0; + for (const auto& vec : input) + { + int min = std::numeric_limits::max(); + int max = 0; + for (const auto& i : vec) + { + min = std::min(min, i); + max = std::max(max, i); + } + checksum += max - min; + } + return checksum; } OUTPUT2(input) { - return 0; + int checksum = 0; + for (int i = 0; i < input.size(); i++) + { + std::vector divisible; + for (int j = 0; j < input[i].size(); j++) + { + for (int k = 0; k < input[i].size(); k++) + { + if (j == k) + continue; + + if (input[i][j] % input[i][k] == 0) + checksum += input[i][j] / input[i][k]; + } + } + } + return checksum; } }