Streamline 2024 day 1

This commit is contained in:
SebastianStork 2024-12-05 20:34:59 +01:00
parent 174fb9a1d6
commit 4f97d0680c

View file

@ -1,47 +1,35 @@
#include <fstream> #include <algorithm>
#include <iostream> #include <iostream>
#include <vector> #include <vector>
using namespace std; using namespace std;
void sort(vector<int> &list) void readInput(vector<int> &list1, vector<int> &list2)
{ {
for (size_t i = 0; i < list.size() - 1; i++) { int value1, value2;
for (size_t j = i + 1; j < list.size(); j++) { while (cin >> value1 >> value2) {
if (list[i] > list[j]) { list1.push_back(value1);
int temp = list[i]; list2.push_back(value2);
list[i] = list[j];
list[j] = temp;
}
}
} }
} }
int main() void sortLists(vector<int> &list1, vector<int> &list2)
{ {
vector<int> list1, list2; sort(list1.begin(), list1.end());
sort(list2.begin(), list2.end());
}
{ int calculateTotalDistance(const vector<int> &list1, const vector<int> &list2)
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 totalDistance = 0; int totalDistance = 0;
for (size_t i = 0; i < list1.size(); i++) { for (size_t i = 0; i < list1.size(); i++) {
int distance = list1[i] - list2[i]; totalDistance += abs(list1[i] - list2[i]);
totalDistance += (distance >= 0) ? distance : -distance;
} }
cout << "Total distance between the lists: " << totalDistance << endl; return totalDistance;
}
// Part two int calculateSimilarityScore(const vector<int> &list1, const vector<int> &list2)
{
int similarityScore = 0; int similarityScore = 0;
size_t index2 = 0; size_t index2 = 0;
for (size_t index1 = 0; index1 < list1.size(); index1++) { for (size_t index1 = 0; index1 < list1.size(); index1++) {
@ -53,5 +41,19 @@ int main()
index2++; index2++;
} }
} }
cout << "Similarity Score: " << similarityScore << endl; return similarityScore;
}
int main()
{
vector<int> 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;
} }