day-01.cc (949B)
1 #include <fstream> 2 #include <iostream> 3 #include <numeric> 4 #include <vector> 5 6 auto part_1(std::vector<int>& masses) -> int { 7 return std::accumulate( 8 masses.begin(), masses.end(), 0, 9 [](auto acc, auto mass) { return acc + mass / 3 - 2; }); 10 } 11 12 auto part_2(std::vector<int>& masses) -> int { 13 return std::accumulate(masses.begin(), masses.end(), 0, 14 [](auto acc, auto mass) { 15 while (mass > 0) { 16 mass = mass / 3 - 2; 17 acc += mass; 18 } 19 return acc; 20 }); 21 } 22 23 auto main() -> int { 24 auto input_file = std::ifstream("input.txt"); 25 auto input = std::vector<int>{}; 26 int x; 27 while (input_file >> x) { 28 input.push_back(x); 29 } 30 31 std::cout << "C++17:\n" 32 << "Part 1: " << part_1(input) << "\nPart 2: " << part_2(input) 33 << std::endl; 34 }