This commit is contained in:
Hugo Mårdbrink 2024-12-01 14:01:27 +01:00
parent 832cd997b3
commit a04b71939c
3 changed files with 50 additions and 9 deletions

2
.gitignore vendored
View file

@ -1,3 +1,3 @@
.DS_Store .DS_Store
/build /build
d*/.txt *.txt

View file

@ -11,7 +11,7 @@ set(CMAKE_CXX_COMPILER clang++)
set(CMAKE_BUILD_TYPE Release) set(CMAKE_BUILD_TYPE Release)
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang") if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3") set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3 -Wno-c23-extensions")
endif() endif()
set(executables d1 d2 d3 d4 d5 d6 d7 d8 d9 d10 d11 d12 d13 d14 d15 d16 d17 d18 d19 d20 d21 d22 d23 d24 d25) set(executables d1 d2 d3 d4 d5 d6 d7 d8 d9 d10 d11 d12 d13 d14 d15 d16 d17 d18 d19 d20 d21 d22 d23 d24 d25)

View file

@ -1,15 +1,56 @@
#include <iostream> #include <iostream>
#include <fstream> #include <sstream>
#include <vector>
#include <unordered_map>
#include <algorithm>
using std::cout, std::endl; using std::cout, std::endl;
int main() { constexpr const char content[] = {
std::ifstream file{"../d1/input.txt"}; #embed "input.txt"
std::string line; };
while (std::getline(file, line)) { void part_1() {
std::vector<int> left_vec, right_vec;
std::istringstream iss{content};
int l_id, r_id;
while (iss >> l_id >> r_id) {
left_vec.emplace_back(l_id);
right_vec.emplace_back(r_id);
}
std::sort(left_vec.begin(), left_vec.end());
std::sort(right_vec.begin(), right_vec.end());
auto diff_acc{0};
for (auto i{0}; i < left_vec.size(); i++) {
diff_acc += std::abs(left_vec[i] - right_vec[i]);
} }
cout << diff_acc << endl;
}
void part_2() {
std::vector<int> left_vec;
std::unordered_map<int, int> right_map;
std::istringstream iss{content};
int l_id, r_id;
while (iss >> l_id >> r_id) {
left_vec.emplace_back(l_id);
right_map[r_id]++;
}
auto sim_acc{0};
for (auto left_num : left_vec) {
sim_acc += right_map[left_num] * left_num;
}
cout << sim_acc << endl;
}
int main() {
part_1();
part_2();
return 0; return 0;
} }