summaryrefslogtreecommitdiff
path: root/2022/Cpp/Day5
diff options
context:
space:
mode:
Diffstat (limited to '2022/Cpp/Day5')
-rwxr-xr-x2022/Cpp/Day5/Makefile5
-rwxr-xr-x2022/Cpp/Day5/input511
-rwxr-xr-x2022/Cpp/Day5/input.txt0
-rwxr-xr-x2022/Cpp/Day5/main.cpp89
-rwxr-xr-x2022/Cpp/Day5/puzzle.md78
5 files changed, 683 insertions, 0 deletions
diff --git a/2022/Cpp/Day5/Makefile b/2022/Cpp/Day5/Makefile
new file mode 100755
index 0000000..08000ae
--- /dev/null
+++ b/2022/Cpp/Day5/Makefile
@@ -0,0 +1,5 @@
+all:
+ @g++ main.cpp -o ans.o
+
+run:
+ ./ans.o < input.txt
diff --git a/2022/Cpp/Day5/input b/2022/Cpp/Day5/input
new file mode 100755
index 0000000..87fde8f
--- /dev/null
+++ b/2022/Cpp/Day5/input
@@ -0,0 +1,511 @@
+ [C] [N] [R]
+[J] [T] [H] [P] [L]
+[F] [S] [T] [B] [M] [D]
+[C] [L] [J] [Z] [S] [L] [B]
+[N] [Q] [G] [J] [J] [F] [F] [R]
+[D] [V] [B] [L] [B] [Q] [D] [M] [T]
+[B] [Z] [Z] [T] [V] [S] [V] [S] [D]
+[W] [P] [P] [D] [G] [P] [B] [P] [V]
+ 1 2 3 4 5 6 7 8 9
+
+move 4 from 9 to 6
+move 7 from 2 to 5
+move 3 from 5 to 2
+move 2 from 2 to 1
+move 2 from 8 to 4
+move 1 from 6 to 9
+move 1 from 9 to 4
+move 7 from 1 to 2
+move 5 from 2 to 3
+move 5 from 7 to 4
+move 5 from 6 to 3
+move 1 from 7 to 6
+move 2 from 6 to 9
+move 3 from 2 to 4
+move 4 from 5 to 6
+move 2 from 7 to 3
+move 2 from 9 to 3
+move 1 from 5 to 2
+move 11 from 4 to 3
+move 1 from 2 to 9
+move 1 from 9 to 3
+move 2 from 1 to 6
+move 5 from 8 to 5
+move 7 from 5 to 4
+move 2 from 5 to 6
+move 6 from 6 to 4
+move 17 from 3 to 4
+move 1 from 8 to 3
+move 11 from 4 to 7
+move 1 from 6 to 4
+move 3 from 4 to 2
+move 2 from 2 to 6
+move 8 from 3 to 1
+move 8 from 3 to 9
+move 3 from 9 to 6
+move 3 from 1 to 3
+move 11 from 7 to 5
+move 1 from 6 to 4
+move 4 from 9 to 6
+move 3 from 1 to 4
+move 1 from 2 to 3
+move 1 from 6 to 9
+move 24 from 4 to 9
+move 2 from 6 to 5
+move 1 from 1 to 2
+move 1 from 1 to 3
+move 12 from 9 to 6
+move 5 from 4 to 2
+move 4 from 2 to 3
+move 5 from 6 to 3
+move 13 from 6 to 7
+move 1 from 5 to 6
+move 9 from 5 to 3
+move 4 from 7 to 5
+move 1 from 6 to 1
+move 3 from 5 to 1
+move 14 from 9 to 4
+move 2 from 7 to 9
+move 13 from 4 to 9
+move 1 from 4 to 7
+move 4 from 7 to 9
+move 3 from 5 to 1
+move 8 from 3 to 9
+move 4 from 1 to 4
+move 8 from 3 to 7
+move 3 from 7 to 6
+move 4 from 4 to 2
+move 3 from 1 to 9
+move 6 from 2 to 6
+move 3 from 3 to 1
+move 7 from 9 to 7
+move 2 from 6 to 5
+move 1 from 5 to 3
+move 3 from 7 to 5
+move 5 from 7 to 4
+move 2 from 1 to 4
+move 5 from 5 to 9
+move 6 from 4 to 1
+move 6 from 7 to 8
+move 22 from 9 to 3
+move 7 from 1 to 8
+move 4 from 9 to 6
+move 1 from 4 to 5
+move 8 from 6 to 4
+move 7 from 8 to 1
+move 1 from 6 to 4
+move 1 from 9 to 4
+move 1 from 1 to 2
+move 1 from 2 to 5
+move 1 from 9 to 8
+move 11 from 3 to 7
+move 1 from 6 to 2
+move 2 from 1 to 5
+move 1 from 8 to 2
+move 1 from 7 to 8
+move 4 from 5 to 7
+move 1 from 6 to 9
+move 6 from 3 to 1
+move 6 from 3 to 1
+move 15 from 7 to 5
+move 1 from 3 to 1
+move 1 from 3 to 6
+move 1 from 6 to 8
+move 14 from 5 to 1
+move 16 from 1 to 3
+move 2 from 8 to 9
+move 1 from 7 to 4
+move 3 from 9 to 8
+move 3 from 8 to 7
+move 2 from 3 to 5
+move 1 from 7 to 1
+move 6 from 8 to 5
+move 2 from 2 to 9
+move 1 from 7 to 2
+move 2 from 9 to 2
+move 5 from 4 to 7
+move 3 from 2 to 7
+move 14 from 1 to 5
+move 2 from 4 to 7
+move 8 from 7 to 6
+move 1 from 1 to 5
+move 1 from 7 to 4
+move 1 from 7 to 5
+move 1 from 1 to 8
+move 12 from 3 to 4
+move 1 from 8 to 7
+move 3 from 4 to 1
+move 1 from 6 to 2
+move 8 from 5 to 2
+move 1 from 7 to 6
+move 1 from 1 to 7
+move 6 from 6 to 2
+move 1 from 1 to 2
+move 14 from 5 to 7
+move 1 from 6 to 4
+move 4 from 4 to 7
+move 1 from 1 to 6
+move 1 from 5 to 6
+move 2 from 3 to 1
+move 14 from 7 to 5
+move 10 from 4 to 7
+move 1 from 1 to 9
+move 1 from 5 to 9
+move 11 from 5 to 1
+move 6 from 7 to 6
+move 1 from 4 to 6
+move 1 from 3 to 7
+move 2 from 1 to 5
+move 13 from 2 to 1
+move 10 from 6 to 7
+move 4 from 5 to 2
+move 1 from 9 to 1
+move 1 from 3 to 6
+move 2 from 5 to 2
+move 1 from 9 to 3
+move 1 from 3 to 1
+move 21 from 7 to 5
+move 1 from 6 to 4
+move 4 from 5 to 1
+move 1 from 4 to 1
+move 6 from 2 to 3
+move 1 from 3 to 6
+move 1 from 3 to 8
+move 1 from 8 to 7
+move 1 from 7 to 3
+move 9 from 5 to 3
+move 24 from 1 to 4
+move 1 from 3 to 7
+move 11 from 3 to 8
+move 1 from 7 to 3
+move 1 from 2 to 4
+move 2 from 2 to 1
+move 2 from 3 to 5
+move 1 from 6 to 5
+move 10 from 4 to 6
+move 2 from 6 to 4
+move 5 from 1 to 2
+move 1 from 6 to 7
+move 8 from 8 to 6
+move 4 from 2 to 7
+move 8 from 6 to 7
+move 1 from 2 to 8
+move 1 from 8 to 3
+move 1 from 7 to 4
+move 3 from 4 to 1
+move 2 from 6 to 7
+move 4 from 1 to 9
+move 3 from 6 to 7
+move 10 from 7 to 4
+move 2 from 3 to 9
+move 2 from 6 to 9
+move 2 from 1 to 8
+move 2 from 9 to 5
+move 4 from 5 to 6
+move 3 from 8 to 1
+move 4 from 4 to 8
+move 5 from 8 to 4
+move 1 from 8 to 2
+move 5 from 5 to 9
+move 1 from 6 to 1
+move 2 from 1 to 7
+move 22 from 4 to 8
+move 4 from 8 to 7
+move 2 from 6 to 7
+move 1 from 2 to 6
+move 16 from 8 to 9
+move 3 from 7 to 4
+move 1 from 5 to 9
+move 2 from 6 to 7
+move 1 from 8 to 2
+move 1 from 2 to 3
+move 24 from 9 to 3
+move 1 from 1 to 7
+move 3 from 5 to 1
+move 4 from 4 to 6
+move 15 from 3 to 6
+move 18 from 6 to 2
+move 3 from 3 to 2
+move 4 from 1 to 6
+move 4 from 7 to 3
+move 1 from 3 to 9
+move 4 from 2 to 1
+move 1 from 8 to 7
+move 3 from 9 to 6
+move 1 from 9 to 3
+move 4 from 7 to 3
+move 2 from 4 to 2
+move 1 from 1 to 2
+move 7 from 3 to 5
+move 8 from 6 to 1
+move 1 from 9 to 2
+move 3 from 7 to 5
+move 1 from 4 to 8
+move 3 from 1 to 7
+move 5 from 7 to 6
+move 3 from 5 to 2
+move 3 from 7 to 3
+move 5 from 5 to 9
+move 5 from 3 to 6
+move 1 from 8 to 3
+move 5 from 9 to 7
+move 7 from 2 to 4
+move 11 from 2 to 7
+move 7 from 1 to 6
+move 1 from 1 to 9
+move 5 from 3 to 6
+move 5 from 2 to 1
+move 1 from 3 to 9
+move 1 from 3 to 7
+move 6 from 6 to 2
+move 10 from 6 to 7
+move 5 from 6 to 7
+move 28 from 7 to 8
+move 2 from 9 to 1
+move 1 from 6 to 3
+move 4 from 7 to 5
+move 1 from 3 to 6
+move 7 from 2 to 7
+move 6 from 7 to 3
+move 1 from 5 to 9
+move 1 from 6 to 2
+move 1 from 7 to 3
+move 1 from 9 to 1
+move 4 from 5 to 2
+move 5 from 3 to 5
+move 2 from 2 to 8
+move 4 from 4 to 7
+move 1 from 4 to 7
+move 2 from 3 to 6
+move 5 from 7 to 1
+move 2 from 5 to 8
+move 2 from 5 to 8
+move 2 from 5 to 3
+move 2 from 3 to 1
+move 2 from 6 to 7
+move 31 from 8 to 3
+move 2 from 8 to 5
+move 2 from 7 to 4
+move 7 from 1 to 4
+move 2 from 5 to 1
+move 3 from 2 to 8
+move 2 from 4 to 6
+move 3 from 1 to 2
+move 6 from 4 to 8
+move 1 from 1 to 8
+move 1 from 6 to 5
+move 11 from 8 to 9
+move 1 from 6 to 8
+move 1 from 4 to 1
+move 1 from 8 to 7
+move 1 from 5 to 8
+move 3 from 2 to 1
+move 2 from 4 to 3
+move 1 from 8 to 1
+move 7 from 3 to 6
+move 12 from 3 to 2
+move 1 from 7 to 9
+move 4 from 6 to 1
+move 1 from 6 to 3
+move 12 from 9 to 3
+move 1 from 6 to 4
+move 1 from 1 to 7
+move 1 from 4 to 1
+move 1 from 7 to 2
+move 1 from 6 to 5
+move 1 from 5 to 6
+move 5 from 3 to 1
+move 1 from 6 to 4
+move 7 from 2 to 1
+move 3 from 2 to 6
+move 1 from 4 to 5
+move 3 from 3 to 2
+move 4 from 2 to 8
+move 1 from 6 to 4
+move 1 from 4 to 9
+move 1 from 5 to 1
+move 11 from 1 to 5
+move 10 from 1 to 8
+move 2 from 6 to 4
+move 1 from 2 to 9
+move 1 from 2 to 4
+move 18 from 3 to 5
+move 4 from 1 to 4
+move 3 from 1 to 2
+move 14 from 8 to 5
+move 2 from 2 to 6
+move 1 from 3 to 2
+move 2 from 2 to 7
+move 3 from 4 to 1
+move 2 from 4 to 3
+move 2 from 3 to 4
+move 2 from 6 to 9
+move 1 from 7 to 1
+move 3 from 1 to 4
+move 4 from 9 to 7
+move 31 from 5 to 2
+move 25 from 2 to 4
+move 13 from 4 to 2
+move 10 from 2 to 3
+move 2 from 5 to 7
+move 5 from 2 to 9
+move 7 from 5 to 7
+move 5 from 7 to 4
+move 1 from 5 to 8
+move 2 from 7 to 3
+move 11 from 4 to 8
+move 1 from 7 to 3
+move 1 from 1 to 4
+move 2 from 5 to 3
+move 3 from 2 to 9
+move 8 from 9 to 6
+move 10 from 8 to 2
+move 5 from 3 to 2
+move 1 from 7 to 3
+move 3 from 7 to 3
+move 15 from 2 to 1
+move 11 from 1 to 3
+move 1 from 8 to 2
+move 8 from 6 to 5
+move 1 from 2 to 6
+move 1 from 6 to 1
+move 12 from 3 to 7
+move 1 from 2 to 9
+move 2 from 4 to 1
+move 3 from 1 to 8
+move 1 from 8 to 7
+move 3 from 3 to 4
+move 1 from 4 to 7
+move 15 from 7 to 9
+move 1 from 7 to 5
+move 4 from 1 to 8
+move 6 from 8 to 6
+move 1 from 6 to 2
+move 5 from 5 to 1
+move 2 from 6 to 8
+move 1 from 2 to 7
+move 1 from 8 to 2
+move 1 from 7 to 1
+move 1 from 5 to 8
+move 6 from 3 to 1
+move 4 from 3 to 8
+move 7 from 8 to 5
+move 1 from 2 to 4
+move 2 from 4 to 2
+move 3 from 6 to 4
+move 5 from 9 to 3
+move 4 from 1 to 4
+move 10 from 5 to 9
+move 8 from 1 to 7
+move 1 from 2 to 1
+move 1 from 1 to 9
+move 20 from 9 to 2
+move 12 from 2 to 3
+move 17 from 4 to 3
+move 6 from 7 to 2
+move 5 from 3 to 8
+move 20 from 3 to 5
+move 2 from 9 to 4
+move 3 from 3 to 1
+move 1 from 7 to 1
+move 6 from 3 to 6
+move 4 from 2 to 3
+move 4 from 5 to 3
+move 1 from 1 to 9
+move 6 from 6 to 1
+move 3 from 8 to 4
+move 1 from 9 to 8
+move 2 from 2 to 1
+move 3 from 3 to 2
+move 1 from 3 to 6
+move 1 from 7 to 4
+move 3 from 3 to 6
+move 6 from 1 to 5
+move 9 from 2 to 4
+move 3 from 2 to 5
+move 2 from 6 to 5
+move 16 from 4 to 8
+move 18 from 8 to 6
+move 1 from 4 to 5
+move 2 from 6 to 7
+move 4 from 1 to 7
+move 22 from 5 to 6
+move 1 from 4 to 9
+move 4 from 7 to 6
+move 11 from 6 to 5
+move 9 from 5 to 2
+move 2 from 2 to 3
+move 2 from 7 to 2
+move 1 from 1 to 7
+move 9 from 6 to 2
+move 1 from 5 to 1
+move 1 from 8 to 9
+move 18 from 6 to 8
+move 1 from 7 to 4
+move 4 from 5 to 1
+move 2 from 5 to 2
+move 2 from 2 to 5
+move 1 from 9 to 5
+move 1 from 5 to 9
+move 1 from 9 to 1
+move 1 from 9 to 2
+move 1 from 4 to 8
+move 4 from 1 to 4
+move 2 from 6 to 5
+move 1 from 1 to 9
+move 3 from 6 to 7
+move 1 from 6 to 9
+move 1 from 9 to 8
+move 2 from 5 to 9
+move 3 from 3 to 5
+move 7 from 2 to 3
+move 1 from 1 to 3
+move 2 from 5 to 9
+move 1 from 5 to 7
+move 10 from 8 to 3
+move 10 from 8 to 9
+move 3 from 4 to 3
+move 9 from 2 to 1
+move 4 from 9 to 6
+move 5 from 1 to 9
+move 2 from 5 to 9
+move 1 from 6 to 4
+move 4 from 7 to 2
+move 7 from 2 to 9
+move 3 from 6 to 8
+move 1 from 1 to 3
+move 2 from 8 to 5
+move 1 from 8 to 1
+move 18 from 3 to 6
+move 15 from 9 to 2
+move 8 from 9 to 1
+move 2 from 9 to 2
+move 2 from 4 to 9
+move 2 from 9 to 7
+move 12 from 6 to 3
+move 7 from 1 to 7
+move 12 from 2 to 5
+move 7 from 3 to 2
+move 4 from 3 to 4
+move 2 from 7 to 6
+move 7 from 7 to 8
+move 1 from 4 to 2
+move 4 from 1 to 8
+move 5 from 3 to 1
+move 9 from 8 to 3
+move 1 from 8 to 7
+move 2 from 1 to 2
+move 4 from 6 to 7
+move 11 from 2 to 5
+move 2 from 4 to 6
+move 1 from 8 to 2
+move 7 from 3 to 2
+move 1 from 2 to 4
+move 4 from 6 to 1
+move 7 from 5 to 8
+move 2 from 3 to 1
+move 7 from 2 to 3
+move 6 from 5 to 1
+move 1 from 4 to 2
+move 8 from 1 to 6
+move 3 from 2 to 9
diff --git a/2022/Cpp/Day5/input.txt b/2022/Cpp/Day5/input.txt
new file mode 100755
index 0000000..e69de29
--- /dev/null
+++ b/2022/Cpp/Day5/input.txt
diff --git a/2022/Cpp/Day5/main.cpp b/2022/Cpp/Day5/main.cpp
new file mode 100755
index 0000000..b5b1ab4
--- /dev/null
+++ b/2022/Cpp/Day5/main.cpp
@@ -0,0 +1,89 @@
+#include<bits/stdc++.h>
+using namespace std;
+
+using ll = long long;
+using pi = pair<int, int>;
+using vpi = vector<pi>;
+using vi = vector<int>;
+using vll = vector<long long>;
+using mpii = map<int, int>;
+using mpll = map<ll, ll>;
+using db = long double;
+
+#define pb push_back
+#define all(x) (x).begin(), (x).end()
+#define rall(x) (x).rbegin(), (x).rend()
+#define lb lower_bound
+#define ub upper_bound
+
+const int MOD = (int)1e9 + 7;
+const db PI = acos((db)-1);
+const int dx[4]{1, 0, -1, 0};
+const int dy[4]{0, 1, 0, -1};
+
+//pretty printing
+template<typename K, typename V>
+void printm(const map<K, V> &mp) {
+ cerr << "{" << endl;
+ for (auto p : mp) {
+ cerr << " { " << p.first << " : " << p.second << " }\n";
+ }
+ cerr << "}" << endl;
+}
+template<typename T>
+void printv(const vector<T> &v) {
+ cerr << "[";
+ for (int i = 0; i < v.size(); i++) {
+ if (i == v.size() - 1) {
+ cerr << v[i];
+ } else {
+ cerr << v[i] << ", ";
+ }
+ }
+ cerr << "]\n";
+}
+
+template<typename T>
+void printvv(const vector<vector<T>> &v) {
+ cerr << "[\n";
+ for (auto &vec : v) {
+ cout << " ";
+ printv(vec);
+ }
+ cerr << "]\n";
+}
+void print() {
+ cerr << "\n";
+}
+
+template<typename T, typename... TS>
+void print(T val, TS... vals) {
+ cerr << val << " ";
+ print(vals...);
+}
+
+
+/* stuff you should look for:
+ ---------------------------
+ * special cases (n=1?)
+ * int overflow, array bounds
+ * do smth instead of nothing and stay organized
+ * WRITE STUFF DOWN
+ * DON'T GET STUCK ON ONE APPROACH
+ */
+
+void solve() {
+
+}
+
+int main () {
+ ios_base::sync_with_stdio(false);
+ cin.tie(NULL);
+ int tt;
+ cin >> tt;
+ while(tt--) {
+ solve();
+ }
+}
+
+
diff --git a/2022/Cpp/Day5/puzzle.md b/2022/Cpp/Day5/puzzle.md
new file mode 100755
index 0000000..d56dfe0
--- /dev/null
+++ b/2022/Cpp/Day5/puzzle.md
@@ -0,0 +1,78 @@
+\--- Day 5: Supply Stacks ---
+----------
+
+The expedition can depart as soon as the final supplies have been unloaded from the ships. Supplies are stored in stacks of marked *crates*, but because the needed supplies are buried under many other crates, the crates need to be rearranged.
+
+The ship has a *giant cargo crane* capable of moving crates between stacks. To ensure none of the crates get crushed or fall over, the crane operator will rearrange them in a series of carefully-planned steps. After the crates are rearranged, the desired crates will be at the top of each stack.
+
+The Elves don't want to interrupt the crane operator during this delicate procedure, but they forgot to ask her *which* crate will end up where, and they want to be ready to unload them as soon as possible so they can embark.
+
+They do, however, have a drawing of the starting stacks of crates *and* the rearrangement procedure (your puzzle input). For example:
+
+```
+ [D]
+[N] [C]
+[Z] [M] [P]
+ 1 2 3
+
+move 1 from 2 to 1
+move 3 from 1 to 3
+move 2 from 2 to 1
+move 1 from 1 to 2
+
+```
+
+In this example, there are three stacks of crates. Stack 1 contains two crates: crate `Z` is on the bottom, and crate `N` is on top. Stack 2 contains three crates; from bottom to top, they are crates `M`, `C`, and `D`. Finally, stack 3 contains a single crate, `P`.
+
+Then, the rearrangement procedure is given. In each step of the procedure, a quantity of crates is moved from one stack to a different stack. In the first step of the above rearrangement procedure, one crate is moved from stack 2 to stack 1, resulting in this configuration:
+
+```
+[D]
+[N] [C]
+[Z] [M] [P]
+ 1 2 3
+
+```
+
+In the second step, three crates are moved from stack 1 to stack 3. Crates are moved *one at a time*, so the first crate to be moved (`D`) ends up below the second and third crates:
+
+```
+ [Z]
+ [N]
+ [C] [D]
+ [M] [P]
+ 1 2 3
+
+```
+
+Then, both crates are moved from stack 2 to stack 1. Again, because crates are moved *one at a time*, crate `C` ends up below crate `M`:
+
+```
+ [Z]
+ [N]
+[M] [D]
+[C] [P]
+ 1 2 3
+
+```
+
+Finally, one crate is moved from stack 1 to stack 2:
+
+```
+ [Z]
+ [N]
+ [D]
+[C] [M] [P]
+ 1 2 3
+
+```
+
+The Elves just need to know *which crate will end up on top of each stack*; in this example, the top crates are `C` in stack 1, `M` in stack 2, and `Z` in stack 3, so you should combine these together and give the Elves the message `*CMZ*`.
+
+*After the rearrangement procedure completes, what crate ends up on top of each stack?*
+
+To begin, [get your puzzle input](5/input).
+
+Answer:
+
+You can also [Shareon [Twitter](https://twitter.com/intent/tweet?text=%22Supply+Stacks%22+%2D+Day+5+%2D+Advent+of+Code+2022&url=https%3A%2F%2Fadventofcode%2Ecom%2F2022%2Fday%2F5&related=ericwastl&hashtags=AdventOfCode) [Mastodon](javascript:void(0);)] this puzzle. \ No newline at end of file