From 27cedade38453e818c5cb8fa537a8713b106e495 Mon Sep 17 00:00:00 2001 From: Marcus Penate Date: Fri, 10 Dec 2021 00:31:06 -0500 Subject: [PATCH] Day 10 submission --- Day 10/Marcus/cpp/part1.cpp | 43 +++++++++++++++++++++++++ Day 10/Marcus/cpp/part2.cpp | 62 +++++++++++++++++++++++++++++++++++++ 2 files changed, 105 insertions(+) create mode 100644 Day 10/Marcus/cpp/part1.cpp create mode 100644 Day 10/Marcus/cpp/part2.cpp diff --git a/Day 10/Marcus/cpp/part1.cpp b/Day 10/Marcus/cpp/part1.cpp new file mode 100644 index 0000000..aca9ab6 --- /dev/null +++ b/Day 10/Marcus/cpp/part1.cpp @@ -0,0 +1,43 @@ +#include +#include + +using namespace std; + +int main(int argc, char* argv[]) +{ + string str_in; + string openers = "([{<"; + string closers = ")]}>"; + int result = 0; + int scores[4] = {3,57,1197,25137}; + + while(cin >> str_in) + { + stack parser; + + for(unsigned int i = 0; i < str_in.size(); i++) + { + size_t found_pos; + if (openers.find(str_in[i])!=string::npos) + { + parser.push(str_in[i]); + } + else if ((found_pos=closers.find(str_in[i]))!=string::npos) + { + if (parser.top() != openers[found_pos]) + { + result += scores[found_pos]; + break; + } + else + { + parser.pop(); + } + } + } + } + + cout << result << endl; + + return 0; +} \ No newline at end of file diff --git a/Day 10/Marcus/cpp/part2.cpp b/Day 10/Marcus/cpp/part2.cpp new file mode 100644 index 0000000..12bf971 --- /dev/null +++ b/Day 10/Marcus/cpp/part2.cpp @@ -0,0 +1,62 @@ +#include +#include +#include +#include + +using namespace std; + +int main(int argc, char* argv[]) +{ + string str_in; + string openers = "([{<"; + string closers = ")]}>"; + vector all_results; + + while(cin >> str_in) + { + stack parser; + unsigned long long result = 0; + + bool bl_is_corrupted = false; + for(unsigned int i = 0; i < str_in.size(); i++) + { + size_t found_pos; + if (openers.find(str_in[i])!=string::npos) + { + parser.push(str_in[i]); + } + else if ((found_pos=closers.find(str_in[i]))!=string::npos) + { + if (parser.top() != openers[found_pos]) + { + bl_is_corrupted = true; + break; + } + else + { + parser.pop(); + } + } + } + + if (bl_is_corrupted) + { + continue; + } + + while(!parser.empty()) + { + result*=5; + result+=1+openers.find(parser.top()); + parser.pop(); + } + + all_results.push_back(result); + } + + sort(all_results.begin(),all_results.end()); + + cout << all_results[all_results.size()/2] << endl; + + return 0; +} \ No newline at end of file