From 4f97d0680c38f72242018a2354601e1154c719ce Mon Sep 17 00:00:00 2001 From: SebastianStork Date: Thu, 5 Dec 2024 20:34:59 +0100 Subject: [PATCH] Streamline 2024 day 1 --- 2024/day-01/main.cpp | 62 +++++++++++++++++++++++--------------------- 1 file changed, 32 insertions(+), 30 deletions(-) diff --git a/2024/day-01/main.cpp b/2024/day-01/main.cpp index c201014..63ea7d2 100644 --- a/2024/day-01/main.cpp +++ b/2024/day-01/main.cpp @@ -1,47 +1,35 @@ -#include +#include #include #include using namespace std; -void sort(vector &list) +void readInput(vector &list1, vector &list2) { - for (size_t i = 0; i < list.size() - 1; i++) { - for (size_t j = i + 1; j < list.size(); j++) { - if (list[i] > list[j]) { - int temp = list[i]; - list[i] = list[j]; - list[j] = temp; - } - } + int value1, value2; + while (cin >> value1 >> value2) { + list1.push_back(value1); + list2.push_back(value2); } } -int main() +void sortLists(vector &list1, vector &list2) { - vector list1, list2; + sort(list1.begin(), list1.end()); + sort(list2.begin(), list2.end()); +} - { - ifstream inputFile("input"); - string line; - while (getline(inputFile, line)) { - list1.push_back(stoi(line.substr(0, 5))); - list2.push_back(stoi(line.substr(8, 5))); - } - } - - sort(list1); - sort(list2); - - // Part one +int calculateTotalDistance(const vector &list1, const vector &list2) +{ int totalDistance = 0; for (size_t i = 0; i < list1.size(); i++) { - int distance = list1[i] - list2[i]; - totalDistance += (distance >= 0) ? distance : -distance; + totalDistance += abs(list1[i] - list2[i]); } - cout << "Total distance between the lists: " << totalDistance << endl; + return totalDistance; +} - // Part two +int calculateSimilarityScore(const vector &list1, const vector &list2) +{ int similarityScore = 0; size_t index2 = 0; for (size_t index1 = 0; index1 < list1.size(); index1++) { @@ -53,5 +41,19 @@ int main() index2++; } } - cout << "Similarity Score: " << similarityScore << endl; + return similarityScore; +} + +int main() +{ + vector list1, list2; + readInput(list1, list2); + + sortLists(list1, list2); + + // Part one + cout << "Total distance between the lists: " << calculateTotalDistance(list1, list2) << endl; + + // Part two + cout << "Similarity Score: " << calculateSimilarityScore(list1, list2) << endl; }