day-02.cc (1180B)
1 #include <fstream> 2 #include <iostream> 3 #include <vector> 4 5 auto computer(std::vector<int> input, int noun, int verb) { 6 input[1] = noun; 7 input[2] = verb; 8 9 auto pc = 0; 10 while (true) { 11 if (input[pc] == 1) { 12 input[input[pc + 3]] = input[input[pc + 1]] + input[input[pc + 2]]; 13 pc += 4; 14 } else if (input[pc] == 2) { 15 input[input[pc + 3]] = input[input[pc + 1]] * input[input[pc + 2]]; 16 pc += 4; 17 } else if (input[pc] == 99) { 18 break; 19 } 20 } 21 22 return input[0]; 23 } 24 25 auto part_1(std::vector<int>& input) -> int { 26 return computer(input, 12, 2); 27 } 28 29 auto part_2(std::vector<int>& input) -> int { 30 for (auto noun = 0; noun <= 99; ++noun) { 31 for (auto verb = 0; verb <= 99; ++verb) { 32 if (computer(input, noun, verb) == 19690720) { 33 return noun * 100 + verb; 34 } 35 } 36 } 37 return 0; 38 } 39 40 auto main() -> int { 41 auto input_file = std::ifstream("input.txt"); 42 auto input = std::vector<int>{}; 43 for (std::string op; std::getline(input_file, op, ',');) { 44 input.push_back(std::stoi(op)); 45 } 46 47 std::cout << "C++17:\n" 48 << "Part 1: " << part_1(input) << "\nPart 2: " << part_2(input) 49 << std::endl; 50 }