Finished aoc day 6, refactored code a lot so it is way prettier now

This commit is contained in:
2022-12-10 21:45:08 +01:00
parent 2ec18c9e96
commit 2cbfc0ac0b

View File

@@ -2,35 +2,41 @@
using namespace std;
template <typename T>
bool check_map_count(const map<T, int>& m, int size){
int result = 0;
for(auto p : m){
if(p.second > 1){
return false;
}
result += p.second;
}
return result == size;
}
int main(){
ifstream input_file("input.txt");
string text;
input_file >> text;
deque<char> frame;
map<char, int> frame;
// Set up
for(int i = 0; i < 4; ++i){
frame.push_back(text[i]);
for(unsigned int i = 0; i < text.length(); ++i){
if(i >= 14){
frame[text[i - 14]]--;
}
frame[text[i]]++;
if(frame[0] != frame[1] && frame[0] != frame[2] && frame[0] != frame[3] &&
frame[1] != frame[2] && frame[1] != frame[3] && frame[2] != frame[3]){
cout << "Marker: " << frame[0] << frame[1] << frame[2] << frame[3] << endl;
return 0;
if(check_map_count(frame, 14)){
for(auto p : frame){
if(p.second > 0){
cout << p.first;
}
for(unsigned int i = 4; i < text.length(); ++i){
frame.pop_front();
frame.push_back(text[i]);
if(frame[0] != frame[1] && frame[0] != frame[2] && frame[0] != frame[3] &&
frame[1] != frame[2] && frame[1] != frame[3] && frame[2] != frame[3]){
// cout << "Marker: " << frame[0] << frame[1] << frame[2] << frame[3] << endl;
cout << i + 1 << endl;
} cout << endl;
cout << "Answer: " << i + 1 << endl;
return 0;
}
}