You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
AOC2022/03/solution.cpp

86 lines
1.8 KiB

#include <iostream>
#include <fstream>
#include <vector>
#include <set>
using namespace std;
int intoPriority(char ch)
{
int initalP = ch;
if (initalP < 97)
{
initalP -= 38;
} else {initalP -= 96;}
return initalP;
}
class RuckSack
{
public:
vector<char> aCompartment;
vector<char> bCompartment;
int priority;
RuckSack(string fullSack)
{
set<char> seen;
int half = fullSack.size()/2;
for (int i {0}; i<fullSack.size(); i++)
{
char currentChar = fullSack[i];
if (i < half)
{
aCompartment.push_back(currentChar);
seen.insert(currentChar);
cout << currentChar;
}
else
{
bCompartment.push_back(currentChar);
if (seen.find(currentChar) != seen.end())
priority = intoPriority(currentChar);
}
}
}
string aString()
{
string s(this->aCompartment.begin(), this->aCompartment.end());
return s;
}
string bString()
{
string s(this->bCompartment.begin(), this->bCompartment.end());
return s;
}
};
int main()
{
string inputStr;
ifstream inputFile("input.txt");
vector<RuckSack> bags;
int totalPrioritySum {0};
int groupPrioritySum {0};
while (getline(inputFile, inputStr))
{
RuckSack curRuckSack {RuckSack(inputStr)};
cout << curRuckSack.aString() << "\t\t\t" << curRuckSack.bString() << endl;
totalPrioritySum += curRuckSack.priority;
bags.push_back(curRuckSack);
}
for (RuckSack rs: bags)
{
cout << rs.priority << endl;
}
cout << totalPrioritySum << endl;
}