Finished aoc day 6, refactored code a lot so it is way prettier now
This commit is contained in:
@@ -2,35 +2,41 @@
|
|||||||
|
|
||||||
using namespace std;
|
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(){
|
int main(){
|
||||||
ifstream input_file("input.txt");
|
ifstream input_file("input.txt");
|
||||||
string text;
|
string text;
|
||||||
|
|
||||||
input_file >> text;
|
input_file >> text;
|
||||||
|
|
||||||
deque<char> frame;
|
map<char, int> frame;
|
||||||
|
|
||||||
// Set up
|
for(unsigned int i = 0; i < text.length(); ++i){
|
||||||
for(int i = 0; i < 4; ++i){
|
if(i >= 14){
|
||||||
frame.push_back(text[i]);
|
frame[text[i - 14]]--;
|
||||||
}
|
}
|
||||||
|
frame[text[i]]++;
|
||||||
|
|
||||||
if(frame[0] != frame[1] && frame[0] != frame[2] && frame[0] != frame[3] &&
|
if(check_map_count(frame, 14)){
|
||||||
frame[1] != frame[2] && frame[1] != frame[3] && frame[2] != frame[3]){
|
for(auto p : frame){
|
||||||
|
if(p.second > 0){
|
||||||
cout << "Marker: " << frame[0] << frame[1] << frame[2] << frame[3] << endl;
|
cout << p.first;
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
} cout << endl;
|
||||||
for(unsigned int i = 4; i < text.length(); ++i){
|
cout << "Answer: " << i + 1 << endl;
|
||||||
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;
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user