diff options
Diffstat (limited to '2022/Cpp/Day5')
| -rwxr-xr-x | 2022/Cpp/Day5/Makefile | 5 | ||||
| -rwxr-xr-x | 2022/Cpp/Day5/input | 511 | ||||
| -rwxr-xr-x | 2022/Cpp/Day5/input.txt | 0 | ||||
| -rwxr-xr-x | 2022/Cpp/Day5/main.cpp | 89 | ||||
| -rwxr-xr-x | 2022/Cpp/Day5/puzzle.md | 78 |
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 |
