6 changed files with 688 additions and 0 deletions
@ -0,0 +1,512 @@
@@ -0,0 +1,512 @@
|
||||
[C] [Q] [V] |
||||
[D] [D] [S] [M] [Z] |
||||
[G] [P] [W] [M] [C] [G] |
||||
[F] [Z] [C] [D] [P] [S] [W] |
||||
[P] [L] [C] [V] [W] [W] [H] [L] |
||||
[G] [B] [V] [R] [L] [N] [G] [P] [F] |
||||
[R] [T] [S] [S] [S] [T] [D] [L] [P] |
||||
[N] [J] [M] [L] [P] [C] [H] [Z] [R] |
||||
1 2 3 4 5 6 7 8 9 |
||||
|
||||
move 2 from 4 to 6 |
||||
move 4 from 5 to 3 |
||||
move 6 from 6 to 1 |
||||
move 4 from 1 to 4 |
||||
move 4 from 9 to 4 |
||||
move 7 from 2 to 4 |
||||
move 1 from 9 to 3 |
||||
move 1 from 2 to 6 |
||||
move 2 from 9 to 5 |
||||
move 2 from 6 to 8 |
||||
move 5 from 8 to 1 |
||||
move 2 from 6 to 9 |
||||
move 5 from 8 to 3 |
||||
move 1 from 5 to 4 |
||||
move 3 from 7 to 2 |
||||
move 10 from 4 to 7 |
||||
move 7 from 4 to 3 |
||||
move 1 from 4 to 7 |
||||
move 1 from 7 to 9 |
||||
move 1 from 2 to 3 |
||||
move 11 from 1 to 7 |
||||
move 12 from 3 to 7 |
||||
move 8 from 3 to 8 |
||||
move 29 from 7 to 2 |
||||
move 3 from 7 to 3 |
||||
move 3 from 9 to 2 |
||||
move 4 from 5 to 3 |
||||
move 7 from 3 to 5 |
||||
move 28 from 2 to 3 |
||||
move 1 from 7 to 5 |
||||
move 2 from 8 to 5 |
||||
move 2 from 4 to 1 |
||||
move 2 from 1 to 4 |
||||
move 1 from 7 to 6 |
||||
move 1 from 7 to 1 |
||||
move 3 from 2 to 8 |
||||
move 1 from 1 to 7 |
||||
move 9 from 5 to 3 |
||||
move 12 from 3 to 1 |
||||
move 1 from 4 to 3 |
||||
move 1 from 6 to 4 |
||||
move 3 from 2 to 9 |
||||
move 16 from 3 to 7 |
||||
move 2 from 9 to 6 |
||||
move 5 from 7 to 2 |
||||
move 1 from 9 to 7 |
||||
move 1 from 4 to 2 |
||||
move 13 from 7 to 2 |
||||
move 13 from 2 to 7 |
||||
move 12 from 7 to 8 |
||||
move 2 from 6 to 4 |
||||
move 16 from 8 to 1 |
||||
move 4 from 3 to 1 |
||||
move 3 from 3 to 2 |
||||
move 1 from 5 to 7 |
||||
move 1 from 5 to 3 |
||||
move 3 from 4 to 6 |
||||
move 19 from 1 to 3 |
||||
move 5 from 8 to 4 |
||||
move 6 from 3 to 2 |
||||
move 5 from 4 to 2 |
||||
move 1 from 7 to 4 |
||||
move 1 from 4 to 9 |
||||
move 3 from 6 to 7 |
||||
move 1 from 9 to 2 |
||||
move 16 from 2 to 4 |
||||
move 9 from 1 to 8 |
||||
move 10 from 4 to 2 |
||||
move 2 from 7 to 5 |
||||
move 5 from 8 to 4 |
||||
move 12 from 2 to 9 |
||||
move 2 from 7 to 4 |
||||
move 12 from 9 to 5 |
||||
move 11 from 5 to 6 |
||||
move 3 from 1 to 9 |
||||
move 1 from 5 to 7 |
||||
move 2 from 9 to 2 |
||||
move 10 from 3 to 2 |
||||
move 1 from 9 to 2 |
||||
move 2 from 8 to 9 |
||||
move 1 from 7 to 8 |
||||
move 1 from 8 to 4 |
||||
move 7 from 2 to 6 |
||||
move 1 from 1 to 5 |
||||
move 5 from 3 to 1 |
||||
move 1 from 5 to 1 |
||||
move 2 from 3 to 9 |
||||
move 2 from 1 to 6 |
||||
move 3 from 9 to 8 |
||||
move 14 from 6 to 1 |
||||
move 1 from 3 to 5 |
||||
move 5 from 4 to 6 |
||||
move 1 from 9 to 6 |
||||
move 7 from 6 to 9 |
||||
move 1 from 6 to 2 |
||||
move 8 from 1 to 4 |
||||
move 7 from 1 to 7 |
||||
move 10 from 2 to 1 |
||||
move 4 from 7 to 6 |
||||
move 10 from 4 to 6 |
||||
move 5 from 8 to 2 |
||||
move 1 from 5 to 9 |
||||
move 2 from 2 to 6 |
||||
move 2 from 4 to 7 |
||||
move 1 from 2 to 7 |
||||
move 5 from 9 to 2 |
||||
move 1 from 2 to 9 |
||||
move 14 from 6 to 8 |
||||
move 2 from 8 to 4 |
||||
move 1 from 2 to 6 |
||||
move 4 from 9 to 3 |
||||
move 2 from 6 to 8 |
||||
move 5 from 4 to 5 |
||||
move 5 from 8 to 3 |
||||
move 1 from 2 to 4 |
||||
move 3 from 7 to 1 |
||||
move 2 from 2 to 7 |
||||
move 1 from 4 to 7 |
||||
move 1 from 4 to 5 |
||||
move 1 from 2 to 8 |
||||
move 1 from 4 to 9 |
||||
move 8 from 8 to 2 |
||||
move 3 from 1 to 5 |
||||
move 7 from 2 to 9 |
||||
move 8 from 1 to 6 |
||||
move 6 from 7 to 2 |
||||
move 2 from 2 to 8 |
||||
move 5 from 1 to 8 |
||||
move 3 from 6 to 8 |
||||
move 4 from 3 to 6 |
||||
move 3 from 6 to 2 |
||||
move 8 from 9 to 2 |
||||
move 11 from 5 to 7 |
||||
move 12 from 2 to 6 |
||||
move 2 from 3 to 7 |
||||
move 12 from 7 to 2 |
||||
move 10 from 6 to 9 |
||||
move 1 from 7 to 1 |
||||
move 12 from 8 to 7 |
||||
move 2 from 3 to 2 |
||||
move 8 from 9 to 7 |
||||
move 6 from 2 to 5 |
||||
move 1 from 1 to 6 |
||||
move 3 from 2 to 6 |
||||
move 1 from 3 to 7 |
||||
move 5 from 5 to 3 |
||||
move 10 from 7 to 2 |
||||
move 2 from 3 to 7 |
||||
move 8 from 7 to 6 |
||||
move 20 from 2 to 8 |
||||
move 5 from 8 to 1 |
||||
move 5 from 8 to 6 |
||||
move 1 from 5 to 7 |
||||
move 1 from 1 to 4 |
||||
move 4 from 1 to 2 |
||||
move 1 from 9 to 6 |
||||
move 3 from 3 to 1 |
||||
move 4 from 7 to 5 |
||||
move 1 from 9 to 8 |
||||
move 11 from 8 to 7 |
||||
move 1 from 4 to 9 |
||||
move 2 from 7 to 5 |
||||
move 31 from 6 to 9 |
||||
move 4 from 2 to 3 |
||||
move 6 from 5 to 1 |
||||
move 4 from 1 to 2 |
||||
move 7 from 7 to 8 |
||||
move 1 from 7 to 6 |
||||
move 1 from 1 to 7 |
||||
move 24 from 9 to 4 |
||||
move 2 from 7 to 8 |
||||
move 2 from 9 to 2 |
||||
move 2 from 7 to 5 |
||||
move 2 from 5 to 9 |
||||
move 3 from 4 to 1 |
||||
move 20 from 4 to 2 |
||||
move 1 from 6 to 1 |
||||
move 16 from 2 to 1 |
||||
move 4 from 3 to 1 |
||||
move 1 from 4 to 8 |
||||
move 5 from 8 to 5 |
||||
move 5 from 8 to 1 |
||||
move 1 from 5 to 2 |
||||
move 3 from 5 to 6 |
||||
move 33 from 1 to 6 |
||||
move 6 from 9 to 4 |
||||
move 15 from 6 to 7 |
||||
move 6 from 4 to 3 |
||||
move 1 from 5 to 3 |
||||
move 7 from 3 to 9 |
||||
move 11 from 7 to 5 |
||||
move 10 from 5 to 8 |
||||
move 2 from 7 to 3 |
||||
move 5 from 8 to 9 |
||||
move 1 from 7 to 5 |
||||
move 1 from 5 to 8 |
||||
move 1 from 5 to 7 |
||||
move 2 from 3 to 8 |
||||
move 2 from 7 to 5 |
||||
move 2 from 8 to 7 |
||||
move 1 from 5 to 9 |
||||
move 1 from 7 to 6 |
||||
move 3 from 8 to 6 |
||||
move 22 from 6 to 9 |
||||
move 1 from 7 to 6 |
||||
move 27 from 9 to 4 |
||||
move 18 from 4 to 8 |
||||
move 5 from 4 to 1 |
||||
move 1 from 5 to 1 |
||||
move 3 from 6 to 3 |
||||
move 2 from 3 to 5 |
||||
move 2 from 5 to 2 |
||||
move 1 from 2 to 6 |
||||
move 1 from 6 to 3 |
||||
move 9 from 8 to 6 |
||||
move 3 from 9 to 8 |
||||
move 9 from 6 to 5 |
||||
move 1 from 6 to 9 |
||||
move 15 from 8 to 5 |
||||
move 1 from 3 to 4 |
||||
move 6 from 1 to 8 |
||||
move 1 from 3 to 7 |
||||
move 8 from 5 to 8 |
||||
move 2 from 5 to 6 |
||||
move 3 from 4 to 6 |
||||
move 1 from 7 to 6 |
||||
move 2 from 5 to 3 |
||||
move 5 from 5 to 1 |
||||
move 2 from 3 to 7 |
||||
move 1 from 8 to 1 |
||||
move 10 from 2 to 9 |
||||
move 5 from 6 to 3 |
||||
move 7 from 8 to 5 |
||||
move 4 from 3 to 5 |
||||
move 1 from 2 to 1 |
||||
move 2 from 7 to 6 |
||||
move 5 from 1 to 5 |
||||
move 1 from 3 to 7 |
||||
move 1 from 7 to 6 |
||||
move 3 from 8 to 5 |
||||
move 4 from 6 to 4 |
||||
move 1 from 2 to 9 |
||||
move 5 from 4 to 6 |
||||
move 21 from 5 to 3 |
||||
move 2 from 8 to 4 |
||||
move 3 from 4 to 1 |
||||
move 1 from 8 to 4 |
||||
move 18 from 3 to 5 |
||||
move 2 from 3 to 6 |
||||
move 2 from 6 to 9 |
||||
move 2 from 6 to 2 |
||||
move 1 from 2 to 9 |
||||
move 19 from 9 to 4 |
||||
move 3 from 6 to 3 |
||||
move 2 from 9 to 4 |
||||
move 1 from 1 to 2 |
||||
move 1 from 3 to 7 |
||||
move 16 from 5 to 2 |
||||
move 4 from 1 to 9 |
||||
move 3 from 3 to 4 |
||||
move 4 from 9 to 8 |
||||
move 3 from 5 to 1 |
||||
move 22 from 4 to 5 |
||||
move 1 from 7 to 2 |
||||
move 22 from 5 to 9 |
||||
move 2 from 5 to 2 |
||||
move 2 from 4 to 6 |
||||
move 10 from 9 to 5 |
||||
move 1 from 8 to 3 |
||||
move 13 from 9 to 2 |
||||
move 1 from 6 to 3 |
||||
move 19 from 2 to 7 |
||||
move 2 from 7 to 4 |
||||
move 1 from 8 to 4 |
||||
move 1 from 8 to 2 |
||||
move 11 from 5 to 7 |
||||
move 3 from 1 to 7 |
||||
move 8 from 7 to 8 |
||||
move 1 from 3 to 5 |
||||
move 1 from 8 to 3 |
||||
move 1 from 5 to 3 |
||||
move 6 from 2 to 3 |
||||
move 1 from 8 to 7 |
||||
move 1 from 6 to 1 |
||||
move 1 from 1 to 8 |
||||
move 4 from 8 to 1 |
||||
move 1 from 4 to 6 |
||||
move 8 from 3 to 9 |
||||
move 2 from 2 to 3 |
||||
move 3 from 8 to 5 |
||||
move 1 from 8 to 2 |
||||
move 4 from 2 to 7 |
||||
move 5 from 9 to 7 |
||||
move 1 from 6 to 3 |
||||
move 4 from 2 to 4 |
||||
move 23 from 7 to 5 |
||||
move 4 from 1 to 2 |
||||
move 3 from 9 to 6 |
||||
move 2 from 4 to 8 |
||||
move 2 from 8 to 3 |
||||
move 2 from 6 to 1 |
||||
move 1 from 6 to 8 |
||||
move 8 from 5 to 3 |
||||
move 5 from 2 to 6 |
||||
move 5 from 6 to 3 |
||||
move 1 from 8 to 3 |
||||
move 4 from 4 to 7 |
||||
move 15 from 5 to 2 |
||||
move 1 from 1 to 9 |
||||
move 2 from 5 to 1 |
||||
move 4 from 3 to 7 |
||||
move 1 from 4 to 9 |
||||
move 4 from 7 to 1 |
||||
move 2 from 5 to 6 |
||||
move 7 from 1 to 2 |
||||
move 6 from 2 to 3 |
||||
move 16 from 2 to 5 |
||||
move 1 from 6 to 3 |
||||
move 1 from 6 to 3 |
||||
move 9 from 7 to 4 |
||||
move 6 from 4 to 6 |
||||
move 1 from 9 to 8 |
||||
move 23 from 3 to 9 |
||||
move 1 from 3 to 4 |
||||
move 3 from 4 to 5 |
||||
move 9 from 5 to 2 |
||||
move 6 from 9 to 7 |
||||
move 7 from 7 to 5 |
||||
move 5 from 5 to 3 |
||||
move 1 from 4 to 6 |
||||
move 3 from 3 to 8 |
||||
move 6 from 2 to 1 |
||||
move 3 from 5 to 6 |
||||
move 4 from 7 to 1 |
||||
move 2 from 3 to 9 |
||||
move 5 from 6 to 8 |
||||
move 19 from 9 to 6 |
||||
move 1 from 9 to 2 |
||||
move 9 from 5 to 9 |
||||
move 4 from 8 to 3 |
||||
move 5 from 6 to 1 |
||||
move 4 from 6 to 1 |
||||
move 2 from 3 to 8 |
||||
move 17 from 1 to 7 |
||||
move 2 from 1 to 2 |
||||
move 6 from 6 to 9 |
||||
move 4 from 8 to 5 |
||||
move 3 from 8 to 2 |
||||
move 3 from 5 to 6 |
||||
move 4 from 6 to 8 |
||||
move 2 from 6 to 9 |
||||
move 4 from 8 to 7 |
||||
move 9 from 9 to 5 |
||||
move 5 from 9 to 4 |
||||
move 7 from 2 to 8 |
||||
move 1 from 2 to 1 |
||||
move 3 from 6 to 5 |
||||
move 6 from 8 to 5 |
||||
move 1 from 3 to 4 |
||||
move 1 from 3 to 1 |
||||
move 12 from 7 to 2 |
||||
move 5 from 2 to 7 |
||||
move 8 from 7 to 5 |
||||
move 1 from 9 to 3 |
||||
move 5 from 2 to 8 |
||||
move 3 from 6 to 3 |
||||
move 2 from 2 to 3 |
||||
move 1 from 2 to 4 |
||||
move 2 from 3 to 4 |
||||
move 1 from 1 to 6 |
||||
move 14 from 5 to 6 |
||||
move 1 from 8 to 6 |
||||
move 3 from 3 to 7 |
||||
move 4 from 7 to 1 |
||||
move 9 from 4 to 3 |
||||
move 3 from 1 to 4 |
||||
move 1 from 1 to 2 |
||||
move 1 from 8 to 4 |
||||
move 8 from 3 to 1 |
||||
move 1 from 3 to 2 |
||||
move 5 from 7 to 6 |
||||
move 3 from 1 to 6 |
||||
move 2 from 2 to 8 |
||||
move 13 from 5 to 3 |
||||
move 5 from 1 to 3 |
||||
move 3 from 4 to 5 |
||||
move 1 from 9 to 2 |
||||
move 4 from 3 to 9 |
||||
move 1 from 1 to 7 |
||||
move 2 from 5 to 8 |
||||
move 1 from 7 to 5 |
||||
move 2 from 5 to 4 |
||||
move 1 from 2 to 6 |
||||
move 1 from 4 to 5 |
||||
move 7 from 3 to 6 |
||||
move 31 from 6 to 1 |
||||
move 25 from 1 to 7 |
||||
move 2 from 3 to 2 |
||||
move 13 from 7 to 9 |
||||
move 1 from 1 to 6 |
||||
move 1 from 4 to 1 |
||||
move 2 from 2 to 9 |
||||
move 1 from 4 to 6 |
||||
move 3 from 7 to 1 |
||||
move 7 from 8 to 3 |
||||
move 1 from 8 to 2 |
||||
move 1 from 2 to 8 |
||||
move 4 from 3 to 4 |
||||
move 1 from 8 to 7 |
||||
move 3 from 6 to 9 |
||||
move 5 from 7 to 6 |
||||
move 1 from 4 to 7 |
||||
move 5 from 7 to 9 |
||||
move 5 from 3 to 6 |
||||
move 3 from 4 to 7 |
||||
move 1 from 5 to 4 |
||||
move 4 from 7 to 9 |
||||
move 32 from 9 to 1 |
||||
move 1 from 6 to 5 |
||||
move 1 from 5 to 9 |
||||
move 4 from 3 to 8 |
||||
move 5 from 1 to 4 |
||||
move 4 from 4 to 9 |
||||
move 6 from 1 to 7 |
||||
move 4 from 9 to 8 |
||||
move 4 from 7 to 8 |
||||
move 1 from 7 to 1 |
||||
move 1 from 7 to 6 |
||||
move 7 from 6 to 3 |
||||
move 1 from 9 to 5 |
||||
move 2 from 4 to 7 |
||||
move 25 from 1 to 6 |
||||
move 1 from 7 to 1 |
||||
move 1 from 3 to 4 |
||||
move 18 from 6 to 8 |
||||
move 1 from 5 to 1 |
||||
move 3 from 1 to 6 |
||||
move 21 from 8 to 3 |
||||
move 1 from 8 to 4 |
||||
move 2 from 4 to 2 |
||||
move 1 from 8 to 1 |
||||
move 1 from 7 to 6 |
||||
move 5 from 6 to 3 |
||||
move 30 from 3 to 1 |
||||
move 4 from 8 to 6 |
||||
move 1 from 2 to 9 |
||||
move 1 from 8 to 5 |
||||
move 9 from 6 to 5 |
||||
move 2 from 8 to 7 |
||||
move 3 from 5 to 9 |
||||
move 2 from 3 to 4 |
||||
move 1 from 2 to 1 |
||||
move 1 from 5 to 8 |
||||
move 1 from 8 to 3 |
||||
move 2 from 4 to 6 |
||||
move 1 from 3 to 1 |
||||
move 1 from 5 to 6 |
||||
move 5 from 5 to 7 |
||||
move 4 from 6 to 8 |
||||
move 3 from 8 to 2 |
||||
move 1 from 1 to 5 |
||||
move 1 from 8 to 7 |
||||
move 4 from 9 to 6 |
||||
move 1 from 5 to 1 |
||||
move 4 from 6 to 8 |
||||
move 6 from 7 to 3 |
||||
move 4 from 3 to 9 |
||||
move 2 from 2 to 7 |
||||
move 1 from 3 to 5 |
||||
move 3 from 7 to 6 |
||||
move 2 from 9 to 8 |
||||
move 1 from 2 to 4 |
||||
move 1 from 3 to 4 |
||||
move 5 from 8 to 4 |
||||
move 1 from 9 to 2 |
||||
move 1 from 7 to 5 |
||||
move 3 from 4 to 5 |
||||
move 1 from 9 to 1 |
||||
move 1 from 2 to 7 |
||||
move 1 from 7 to 1 |
||||
move 5 from 5 to 4 |
||||
move 4 from 1 to 4 |
||||
move 19 from 1 to 9 |
||||
move 6 from 6 to 2 |
||||
move 12 from 9 to 1 |
||||
move 1 from 8 to 6 |
||||
move 1 from 9 to 4 |
||||
move 4 from 4 to 8 |
||||
move 1 from 6 to 5 |
||||
move 1 from 5 to 3 |
||||
move 2 from 8 to 9 |
||||
move 5 from 4 to 6 |
||||
move 5 from 9 to 4 |
||||
move 1 from 4 to 3 |
||||
move 2 from 2 to 9 |
||||
move 1 from 6 to 5 |
||||
move 1 from 6 to 9 |
||||
move 7 from 1 to 5 |
||||
move 1 from 3 to 1 |
||||
move 2 from 8 to 3 |
||||
move 1 from 5 to 7 |
||||
move 2 from 9 to 8 |
@ -0,0 +1,69 @@
@@ -0,0 +1,69 @@
|
||||
import * as R from "remeda"; |
||||
|
||||
import { readFile } from "../03/part1.js"; |
||||
|
||||
export const sample = readFile("2022", "05", "sample"); |
||||
export const puzzleInput = readFile("2022", "05", "input"); |
||||
|
||||
function parseHeaps(text) { |
||||
const lines = text.split("\n").filter(R.identity); |
||||
lines.reverse(); |
||||
|
||||
let [header, ...crates] = lines; |
||||
|
||||
const stacks = []; |
||||
|
||||
while (header.trimEnd()) { |
||||
header = header.replace(/^(\s+)\d/, (...args) => { |
||||
crates = crates.map((c) => c.slice(args[1].length)); |
||||
|
||||
const stack = []; |
||||
|
||||
crates = crates.map((l) => |
||||
l.replace(/./, (c) => { |
||||
if (c !== " ") stack.push(c); |
||||
return ""; |
||||
}) |
||||
); |
||||
|
||||
stacks.push(stack); |
||||
|
||||
return ""; |
||||
}); |
||||
} |
||||
|
||||
return stacks; |
||||
} |
||||
|
||||
function parseCommands(text) { |
||||
return text |
||||
.split("\n") |
||||
.filter(R.identity) |
||||
.map((line) => line.match(/\d+/g).map((x) => parseInt(x))); |
||||
} |
||||
|
||||
function moveStacks([stacks, commands]) { |
||||
for (let [move, from, to] of commands) { |
||||
console.log({ move, from, to }); |
||||
|
||||
while (move-- > 0) { |
||||
stacks[to - 1].push(stacks[from - 1].pop()); |
||||
} |
||||
} |
||||
|
||||
return stacks; |
||||
} |
||||
|
||||
const spy = (x) => { |
||||
console.log(x); |
||||
return x; |
||||
}; |
||||
|
||||
export const solutionPart1 = R.createPipe( |
||||
(text) => text.split("\n\n"), |
||||
([heaps, commands]) => [parseHeaps(heaps), parseCommands(commands)], |
||||
moveStacks, |
||||
spy, |
||||
R.map((x) => x.pop()), |
||||
(x) => x.join("") |
||||
); |
@ -0,0 +1,77 @@
@@ -0,0 +1,77 @@
|
||||
## \--- 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. |
@ -0,0 +1,9 @@
@@ -0,0 +1,9 @@
|
||||
[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 |
@ -0,0 +1,20 @@
@@ -0,0 +1,20 @@
|
||||
import { test, expect, describe } from "vitest"; |
||||
|
||||
import { expectSolution } from "../01/main.js"; |
||||
import { solutionPart1, puzzleInput, sample } from "./part1.js"; |
||||
import { solutionPart2 } from "./part2.js"; |
||||
|
||||
describe("part 1", () => { |
||||
test("sample", () => { |
||||
expect(solutionPart1(sample)).toEqual("CMZ"); |
||||
}); |
||||
test.only("solution", () => { |
||||
expectSolution(solutionPart1(puzzleInput)).toEqual("VPCDMSLWJ"); |
||||
}); |
||||
}); |
||||
|
||||
describe("part 2", () => { |
||||
test.todo("solution", () => { |
||||
expectSolution(solutionPart2(puzzleInput)).toEqual("TODO"); |
||||
}); |
||||
}); |
Loading…
Reference in new issue