mirror of
https://github.com/SebastianStork/advent-of-code.git
synced 2026-01-21 18:01:34 +01:00
Streamline 2024 day 1
This commit is contained in:
parent
174fb9a1d6
commit
4f97d0680c
1 changed files with 32 additions and 30 deletions
|
|
@ -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;
|
}
|
||||||
|
return totalDistance;
|
||||||
}
|
}
|
||||||
cout << "Total distance between the lists: " << totalDistance << endl;
|
|
||||||
|
|
||||||
// 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;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue