2022 Day 5 Complete
This commit is contained in:
parent
9a3a29d7df
commit
67300ad82f
511
2022/day05/input
Normal file
511
2022/day05/input
Normal file
@ -0,0 +1,511 @@
|
|||||||
|
[N] [R] [C]
|
||||||
|
[T] [J] [S] [J] [N]
|
||||||
|
[B] [Z] [H] [M] [Z] [D]
|
||||||
|
[S] [P] [G] [L] [H] [Z] [T]
|
||||||
|
[Q] [D] [F] [D] [V] [L] [S] [M]
|
||||||
|
[H] [F] [V] [J] [C] [W] [P] [W] [L]
|
||||||
|
[G] [S] [H] [Z] [Z] [T] [F] [V] [H]
|
||||||
|
[R] [H] [Z] [M] [T] [M] [T] [Q] [W]
|
||||||
|
1 2 3 4 5 6 7 8 9
|
||||||
|
|
||||||
|
move 3 from 9 to 7
|
||||||
|
move 4 from 4 to 5
|
||||||
|
move 2 from 4 to 6
|
||||||
|
move 4 from 7 to 5
|
||||||
|
move 3 from 7 to 3
|
||||||
|
move 2 from 5 to 9
|
||||||
|
move 5 from 6 to 3
|
||||||
|
move 5 from 9 to 1
|
||||||
|
move 3 from 8 to 4
|
||||||
|
move 3 from 4 to 6
|
||||||
|
move 8 from 1 to 8
|
||||||
|
move 1 from 8 to 6
|
||||||
|
move 2 from 8 to 2
|
||||||
|
move 5 from 8 to 4
|
||||||
|
move 1 from 8 to 1
|
||||||
|
move 6 from 6 to 4
|
||||||
|
move 1 from 7 to 9
|
||||||
|
move 5 from 1 to 7
|
||||||
|
move 1 from 1 to 2
|
||||||
|
move 2 from 9 to 8
|
||||||
|
move 6 from 4 to 9
|
||||||
|
move 1 from 6 to 8
|
||||||
|
move 3 from 2 to 7
|
||||||
|
move 4 from 2 to 8
|
||||||
|
move 4 from 9 to 3
|
||||||
|
move 6 from 5 to 4
|
||||||
|
move 7 from 8 to 1
|
||||||
|
move 10 from 4 to 1
|
||||||
|
move 12 from 1 to 5
|
||||||
|
move 1 from 4 to 9
|
||||||
|
move 1 from 2 to 3
|
||||||
|
move 2 from 9 to 1
|
||||||
|
move 1 from 9 to 3
|
||||||
|
move 1 from 6 to 7
|
||||||
|
move 1 from 9 to 1
|
||||||
|
move 3 from 1 to 3
|
||||||
|
move 9 from 5 to 9
|
||||||
|
move 2 from 2 to 7
|
||||||
|
move 2 from 7 to 4
|
||||||
|
move 3 from 9 to 4
|
||||||
|
move 7 from 5 to 7
|
||||||
|
move 5 from 1 to 3
|
||||||
|
move 2 from 4 to 5
|
||||||
|
move 1 from 4 to 6
|
||||||
|
move 1 from 6 to 9
|
||||||
|
move 4 from 9 to 2
|
||||||
|
move 12 from 7 to 9
|
||||||
|
move 2 from 4 to 9
|
||||||
|
move 6 from 5 to 9
|
||||||
|
move 3 from 7 to 6
|
||||||
|
move 12 from 9 to 6
|
||||||
|
move 5 from 9 to 1
|
||||||
|
move 1 from 7 to 6
|
||||||
|
move 14 from 6 to 1
|
||||||
|
move 20 from 3 to 5
|
||||||
|
move 5 from 9 to 5
|
||||||
|
move 3 from 2 to 8
|
||||||
|
move 1 from 6 to 4
|
||||||
|
move 1 from 9 to 2
|
||||||
|
move 1 from 4 to 6
|
||||||
|
move 1 from 2 to 6
|
||||||
|
move 16 from 1 to 5
|
||||||
|
move 1 from 2 to 1
|
||||||
|
move 12 from 5 to 6
|
||||||
|
move 1 from 8 to 4
|
||||||
|
move 29 from 5 to 1
|
||||||
|
move 5 from 6 to 9
|
||||||
|
move 20 from 1 to 3
|
||||||
|
move 4 from 1 to 3
|
||||||
|
move 11 from 3 to 8
|
||||||
|
move 1 from 4 to 3
|
||||||
|
move 4 from 9 to 8
|
||||||
|
move 7 from 1 to 8
|
||||||
|
move 2 from 3 to 2
|
||||||
|
move 2 from 6 to 7
|
||||||
|
move 1 from 9 to 8
|
||||||
|
move 10 from 3 to 5
|
||||||
|
move 1 from 6 to 1
|
||||||
|
move 1 from 7 to 2
|
||||||
|
move 3 from 1 to 2
|
||||||
|
move 6 from 2 to 4
|
||||||
|
move 2 from 6 to 3
|
||||||
|
move 4 from 6 to 5
|
||||||
|
move 1 from 6 to 2
|
||||||
|
move 1 from 2 to 9
|
||||||
|
move 6 from 5 to 2
|
||||||
|
move 1 from 9 to 3
|
||||||
|
move 24 from 8 to 7
|
||||||
|
move 1 from 4 to 8
|
||||||
|
move 5 from 5 to 4
|
||||||
|
move 1 from 4 to 8
|
||||||
|
move 1 from 8 to 7
|
||||||
|
move 2 from 8 to 9
|
||||||
|
move 1 from 9 to 7
|
||||||
|
move 6 from 2 to 4
|
||||||
|
move 10 from 3 to 7
|
||||||
|
move 3 from 5 to 3
|
||||||
|
move 1 from 9 to 8
|
||||||
|
move 3 from 3 to 8
|
||||||
|
move 4 from 8 to 7
|
||||||
|
move 1 from 4 to 6
|
||||||
|
move 1 from 6 to 4
|
||||||
|
move 13 from 4 to 3
|
||||||
|
move 17 from 7 to 6
|
||||||
|
move 1 from 6 to 3
|
||||||
|
move 2 from 4 to 8
|
||||||
|
move 3 from 7 to 5
|
||||||
|
move 14 from 6 to 7
|
||||||
|
move 1 from 5 to 9
|
||||||
|
move 1 from 5 to 9
|
||||||
|
move 2 from 6 to 7
|
||||||
|
move 1 from 5 to 1
|
||||||
|
move 1 from 1 to 6
|
||||||
|
move 1 from 9 to 3
|
||||||
|
move 29 from 7 to 4
|
||||||
|
move 10 from 4 to 3
|
||||||
|
move 6 from 7 to 5
|
||||||
|
move 1 from 6 to 5
|
||||||
|
move 1 from 9 to 7
|
||||||
|
move 1 from 7 to 2
|
||||||
|
move 4 from 3 to 2
|
||||||
|
move 1 from 2 to 9
|
||||||
|
move 1 from 8 to 5
|
||||||
|
move 11 from 3 to 4
|
||||||
|
move 24 from 4 to 7
|
||||||
|
move 2 from 2 to 5
|
||||||
|
move 10 from 3 to 2
|
||||||
|
move 6 from 2 to 1
|
||||||
|
move 5 from 4 to 7
|
||||||
|
move 1 from 9 to 2
|
||||||
|
move 3 from 5 to 1
|
||||||
|
move 1 from 4 to 6
|
||||||
|
move 4 from 2 to 3
|
||||||
|
move 5 from 5 to 7
|
||||||
|
move 2 from 5 to 3
|
||||||
|
move 32 from 7 to 5
|
||||||
|
move 16 from 5 to 1
|
||||||
|
move 1 from 1 to 2
|
||||||
|
move 3 from 2 to 9
|
||||||
|
move 1 from 8 to 6
|
||||||
|
move 3 from 7 to 6
|
||||||
|
move 1 from 2 to 4
|
||||||
|
move 5 from 6 to 8
|
||||||
|
move 5 from 8 to 6
|
||||||
|
move 2 from 9 to 3
|
||||||
|
move 1 from 7 to 5
|
||||||
|
move 9 from 5 to 4
|
||||||
|
move 1 from 9 to 1
|
||||||
|
move 2 from 3 to 1
|
||||||
|
move 4 from 3 to 6
|
||||||
|
move 1 from 3 to 8
|
||||||
|
move 6 from 4 to 6
|
||||||
|
move 6 from 5 to 9
|
||||||
|
move 1 from 9 to 6
|
||||||
|
move 1 from 5 to 1
|
||||||
|
move 1 from 5 to 4
|
||||||
|
move 1 from 3 to 6
|
||||||
|
move 1 from 8 to 3
|
||||||
|
move 1 from 4 to 2
|
||||||
|
move 1 from 2 to 3
|
||||||
|
move 17 from 6 to 4
|
||||||
|
move 4 from 1 to 8
|
||||||
|
move 3 from 9 to 6
|
||||||
|
move 1 from 8 to 4
|
||||||
|
move 1 from 9 to 7
|
||||||
|
move 2 from 6 to 2
|
||||||
|
move 1 from 7 to 8
|
||||||
|
move 12 from 1 to 9
|
||||||
|
move 8 from 9 to 2
|
||||||
|
move 1 from 6 to 9
|
||||||
|
move 6 from 2 to 8
|
||||||
|
move 2 from 8 to 3
|
||||||
|
move 18 from 4 to 9
|
||||||
|
move 2 from 1 to 6
|
||||||
|
move 1 from 6 to 5
|
||||||
|
move 3 from 4 to 3
|
||||||
|
move 7 from 3 to 8
|
||||||
|
move 4 from 2 to 7
|
||||||
|
move 1 from 4 to 6
|
||||||
|
move 2 from 6 to 4
|
||||||
|
move 13 from 9 to 6
|
||||||
|
move 1 from 5 to 2
|
||||||
|
move 5 from 9 to 3
|
||||||
|
move 9 from 1 to 2
|
||||||
|
move 1 from 1 to 8
|
||||||
|
move 1 from 2 to 6
|
||||||
|
move 3 from 7 to 6
|
||||||
|
move 2 from 2 to 6
|
||||||
|
move 9 from 8 to 6
|
||||||
|
move 1 from 7 to 8
|
||||||
|
move 1 from 8 to 7
|
||||||
|
move 2 from 4 to 6
|
||||||
|
move 5 from 3 to 6
|
||||||
|
move 17 from 6 to 9
|
||||||
|
move 7 from 8 to 4
|
||||||
|
move 4 from 2 to 3
|
||||||
|
move 17 from 6 to 2
|
||||||
|
move 1 from 6 to 4
|
||||||
|
move 1 from 7 to 8
|
||||||
|
move 1 from 8 to 9
|
||||||
|
move 24 from 9 to 6
|
||||||
|
move 4 from 3 to 1
|
||||||
|
move 1 from 1 to 5
|
||||||
|
move 20 from 6 to 4
|
||||||
|
move 4 from 6 to 9
|
||||||
|
move 1 from 5 to 7
|
||||||
|
move 2 from 4 to 2
|
||||||
|
move 1 from 9 to 7
|
||||||
|
move 25 from 4 to 3
|
||||||
|
move 1 from 4 to 2
|
||||||
|
move 2 from 1 to 6
|
||||||
|
move 3 from 9 to 4
|
||||||
|
move 2 from 4 to 7
|
||||||
|
move 2 from 7 to 5
|
||||||
|
move 1 from 4 to 2
|
||||||
|
move 1 from 6 to 3
|
||||||
|
move 1 from 1 to 5
|
||||||
|
move 5 from 3 to 9
|
||||||
|
move 1 from 5 to 6
|
||||||
|
move 10 from 2 to 8
|
||||||
|
move 9 from 2 to 5
|
||||||
|
move 21 from 3 to 6
|
||||||
|
move 1 from 7 to 6
|
||||||
|
move 2 from 6 to 5
|
||||||
|
move 5 from 9 to 7
|
||||||
|
move 6 from 7 to 8
|
||||||
|
move 19 from 6 to 9
|
||||||
|
move 1 from 6 to 1
|
||||||
|
move 8 from 8 to 1
|
||||||
|
move 1 from 6 to 1
|
||||||
|
move 2 from 8 to 5
|
||||||
|
move 5 from 9 to 2
|
||||||
|
move 6 from 8 to 2
|
||||||
|
move 2 from 9 to 7
|
||||||
|
move 9 from 9 to 4
|
||||||
|
move 7 from 2 to 4
|
||||||
|
move 1 from 6 to 4
|
||||||
|
move 14 from 5 to 9
|
||||||
|
move 1 from 1 to 8
|
||||||
|
move 1 from 7 to 9
|
||||||
|
move 4 from 2 to 9
|
||||||
|
move 16 from 4 to 6
|
||||||
|
move 3 from 2 to 8
|
||||||
|
move 1 from 6 to 2
|
||||||
|
move 2 from 8 to 9
|
||||||
|
move 1 from 8 to 7
|
||||||
|
move 1 from 8 to 3
|
||||||
|
move 3 from 2 to 7
|
||||||
|
move 1 from 3 to 9
|
||||||
|
move 8 from 9 to 3
|
||||||
|
move 4 from 7 to 8
|
||||||
|
move 1 from 5 to 4
|
||||||
|
move 4 from 6 to 3
|
||||||
|
move 1 from 4 to 2
|
||||||
|
move 9 from 3 to 8
|
||||||
|
move 10 from 9 to 5
|
||||||
|
move 8 from 6 to 7
|
||||||
|
move 13 from 8 to 4
|
||||||
|
move 8 from 5 to 2
|
||||||
|
move 3 from 6 to 3
|
||||||
|
move 7 from 9 to 6
|
||||||
|
move 7 from 7 to 2
|
||||||
|
move 2 from 4 to 6
|
||||||
|
move 5 from 6 to 2
|
||||||
|
move 3 from 1 to 5
|
||||||
|
move 5 from 5 to 8
|
||||||
|
move 4 from 6 to 2
|
||||||
|
move 4 from 1 to 8
|
||||||
|
move 15 from 2 to 6
|
||||||
|
move 11 from 4 to 9
|
||||||
|
move 12 from 6 to 8
|
||||||
|
move 1 from 6 to 9
|
||||||
|
move 5 from 3 to 7
|
||||||
|
move 2 from 2 to 6
|
||||||
|
move 6 from 7 to 1
|
||||||
|
move 3 from 1 to 3
|
||||||
|
move 1 from 4 to 1
|
||||||
|
move 1 from 3 to 9
|
||||||
|
move 1 from 3 to 9
|
||||||
|
move 1 from 7 to 6
|
||||||
|
move 1 from 3 to 2
|
||||||
|
move 4 from 2 to 6
|
||||||
|
move 4 from 2 to 7
|
||||||
|
move 1 from 2 to 6
|
||||||
|
move 4 from 1 to 6
|
||||||
|
move 12 from 6 to 7
|
||||||
|
move 2 from 6 to 1
|
||||||
|
move 8 from 9 to 6
|
||||||
|
move 1 from 7 to 4
|
||||||
|
move 14 from 8 to 1
|
||||||
|
move 8 from 1 to 5
|
||||||
|
move 1 from 3 to 9
|
||||||
|
move 5 from 9 to 5
|
||||||
|
move 1 from 8 to 9
|
||||||
|
move 1 from 9 to 2
|
||||||
|
move 1 from 9 to 3
|
||||||
|
move 5 from 8 to 3
|
||||||
|
move 12 from 5 to 4
|
||||||
|
move 1 from 9 to 2
|
||||||
|
move 6 from 7 to 3
|
||||||
|
move 7 from 3 to 2
|
||||||
|
move 1 from 5 to 1
|
||||||
|
move 1 from 8 to 3
|
||||||
|
move 2 from 1 to 3
|
||||||
|
move 2 from 6 to 9
|
||||||
|
move 5 from 6 to 5
|
||||||
|
move 5 from 1 to 7
|
||||||
|
move 4 from 4 to 1
|
||||||
|
move 7 from 2 to 8
|
||||||
|
move 4 from 3 to 8
|
||||||
|
move 1 from 9 to 3
|
||||||
|
move 1 from 9 to 5
|
||||||
|
move 4 from 1 to 8
|
||||||
|
move 10 from 7 to 9
|
||||||
|
move 1 from 6 to 7
|
||||||
|
move 2 from 8 to 6
|
||||||
|
move 6 from 4 to 2
|
||||||
|
move 5 from 3 to 1
|
||||||
|
move 2 from 6 to 3
|
||||||
|
move 2 from 7 to 1
|
||||||
|
move 5 from 2 to 5
|
||||||
|
move 2 from 7 to 1
|
||||||
|
move 7 from 5 to 7
|
||||||
|
move 2 from 5 to 6
|
||||||
|
move 2 from 5 to 3
|
||||||
|
move 3 from 2 to 9
|
||||||
|
move 9 from 9 to 3
|
||||||
|
move 1 from 6 to 4
|
||||||
|
move 3 from 3 to 1
|
||||||
|
move 9 from 8 to 2
|
||||||
|
move 6 from 3 to 6
|
||||||
|
move 8 from 7 to 9
|
||||||
|
move 4 from 9 to 8
|
||||||
|
move 14 from 1 to 5
|
||||||
|
move 1 from 9 to 2
|
||||||
|
move 1 from 1 to 5
|
||||||
|
move 2 from 3 to 6
|
||||||
|
move 12 from 5 to 3
|
||||||
|
move 2 from 2 to 8
|
||||||
|
move 7 from 6 to 2
|
||||||
|
move 12 from 2 to 8
|
||||||
|
move 2 from 6 to 2
|
||||||
|
move 6 from 9 to 6
|
||||||
|
move 1 from 1 to 2
|
||||||
|
move 1 from 9 to 3
|
||||||
|
move 2 from 5 to 9
|
||||||
|
move 1 from 9 to 2
|
||||||
|
move 1 from 9 to 4
|
||||||
|
move 1 from 3 to 2
|
||||||
|
move 2 from 6 to 7
|
||||||
|
move 2 from 6 to 9
|
||||||
|
move 5 from 4 to 2
|
||||||
|
move 14 from 3 to 9
|
||||||
|
move 15 from 9 to 4
|
||||||
|
move 1 from 7 to 4
|
||||||
|
move 10 from 8 to 6
|
||||||
|
move 1 from 5 to 9
|
||||||
|
move 2 from 9 to 5
|
||||||
|
move 10 from 8 to 1
|
||||||
|
move 1 from 7 to 4
|
||||||
|
move 5 from 1 to 2
|
||||||
|
move 2 from 1 to 5
|
||||||
|
move 3 from 4 to 6
|
||||||
|
move 4 from 5 to 8
|
||||||
|
move 5 from 8 to 6
|
||||||
|
move 14 from 2 to 9
|
||||||
|
move 2 from 6 to 7
|
||||||
|
move 3 from 2 to 9
|
||||||
|
move 3 from 1 to 7
|
||||||
|
move 1 from 7 to 3
|
||||||
|
move 3 from 7 to 1
|
||||||
|
move 1 from 3 to 6
|
||||||
|
move 1 from 7 to 6
|
||||||
|
move 1 from 8 to 9
|
||||||
|
move 2 from 1 to 4
|
||||||
|
move 1 from 1 to 2
|
||||||
|
move 16 from 9 to 4
|
||||||
|
move 7 from 4 to 8
|
||||||
|
move 5 from 8 to 1
|
||||||
|
move 2 from 8 to 3
|
||||||
|
move 2 from 1 to 7
|
||||||
|
move 13 from 6 to 7
|
||||||
|
move 2 from 2 to 3
|
||||||
|
move 4 from 7 to 4
|
||||||
|
move 6 from 4 to 5
|
||||||
|
move 4 from 7 to 6
|
||||||
|
move 3 from 1 to 2
|
||||||
|
move 2 from 2 to 6
|
||||||
|
move 3 from 3 to 8
|
||||||
|
move 5 from 5 to 3
|
||||||
|
move 2 from 9 to 6
|
||||||
|
move 3 from 3 to 7
|
||||||
|
move 1 from 8 to 1
|
||||||
|
move 22 from 4 to 8
|
||||||
|
move 1 from 4 to 3
|
||||||
|
move 9 from 6 to 3
|
||||||
|
move 1 from 2 to 1
|
||||||
|
move 4 from 3 to 4
|
||||||
|
move 2 from 4 to 5
|
||||||
|
move 1 from 1 to 7
|
||||||
|
move 4 from 3 to 7
|
||||||
|
move 2 from 6 to 1
|
||||||
|
move 1 from 6 to 7
|
||||||
|
move 18 from 8 to 7
|
||||||
|
move 2 from 6 to 5
|
||||||
|
move 2 from 3 to 4
|
||||||
|
move 1 from 5 to 4
|
||||||
|
move 30 from 7 to 6
|
||||||
|
move 2 from 1 to 3
|
||||||
|
move 18 from 6 to 8
|
||||||
|
move 12 from 6 to 4
|
||||||
|
move 13 from 4 to 9
|
||||||
|
move 2 from 3 to 8
|
||||||
|
move 1 from 6 to 2
|
||||||
|
move 3 from 7 to 2
|
||||||
|
move 1 from 1 to 2
|
||||||
|
move 2 from 5 to 9
|
||||||
|
move 8 from 8 to 1
|
||||||
|
move 1 from 7 to 8
|
||||||
|
move 7 from 1 to 3
|
||||||
|
move 2 from 4 to 9
|
||||||
|
move 1 from 1 to 6
|
||||||
|
move 4 from 2 to 1
|
||||||
|
move 16 from 8 to 1
|
||||||
|
move 1 from 2 to 6
|
||||||
|
move 2 from 4 to 8
|
||||||
|
move 2 from 5 to 1
|
||||||
|
move 4 from 3 to 7
|
||||||
|
move 3 from 7 to 1
|
||||||
|
move 1 from 6 to 8
|
||||||
|
move 1 from 8 to 9
|
||||||
|
move 1 from 7 to 3
|
||||||
|
move 6 from 3 to 5
|
||||||
|
move 1 from 3 to 8
|
||||||
|
move 1 from 6 to 9
|
||||||
|
move 16 from 9 to 5
|
||||||
|
move 4 from 5 to 3
|
||||||
|
move 15 from 5 to 1
|
||||||
|
move 1 from 5 to 8
|
||||||
|
move 3 from 9 to 8
|
||||||
|
move 9 from 8 to 5
|
||||||
|
move 6 from 5 to 1
|
||||||
|
move 4 from 5 to 6
|
||||||
|
move 2 from 6 to 4
|
||||||
|
move 1 from 6 to 4
|
||||||
|
move 1 from 8 to 4
|
||||||
|
move 3 from 3 to 6
|
||||||
|
move 3 from 6 to 8
|
||||||
|
move 1 from 6 to 8
|
||||||
|
move 21 from 1 to 9
|
||||||
|
move 4 from 8 to 5
|
||||||
|
move 3 from 5 to 7
|
||||||
|
move 2 from 5 to 1
|
||||||
|
move 2 from 4 to 8
|
||||||
|
move 2 from 8 to 2
|
||||||
|
move 2 from 7 to 8
|
||||||
|
move 1 from 7 to 9
|
||||||
|
move 1 from 8 to 7
|
||||||
|
move 5 from 1 to 8
|
||||||
|
move 1 from 7 to 8
|
||||||
|
move 4 from 8 to 4
|
||||||
|
move 2 from 4 to 5
|
||||||
|
move 1 from 2 to 7
|
||||||
|
move 1 from 2 to 7
|
||||||
|
move 2 from 7 to 6
|
||||||
|
move 2 from 6 to 9
|
||||||
|
move 1 from 4 to 9
|
||||||
|
move 1 from 3 to 4
|
||||||
|
move 16 from 1 to 5
|
||||||
|
move 16 from 5 to 7
|
||||||
|
move 2 from 5 to 4
|
||||||
|
move 14 from 9 to 6
|
||||||
|
move 5 from 4 to 3
|
||||||
|
move 3 from 3 to 6
|
||||||
|
move 5 from 1 to 4
|
||||||
|
move 2 from 4 to 7
|
||||||
|
move 7 from 9 to 4
|
||||||
|
move 2 from 9 to 7
|
||||||
|
move 10 from 6 to 9
|
||||||
|
move 8 from 4 to 6
|
||||||
|
move 1 from 8 to 4
|
||||||
|
move 1 from 1 to 9
|
||||||
|
move 14 from 6 to 3
|
||||||
|
move 10 from 3 to 2
|
||||||
|
move 3 from 7 to 8
|
||||||
|
move 6 from 3 to 1
|
||||||
|
move 2 from 7 to 9
|
||||||
|
move 5 from 7 to 9
|
||||||
|
move 10 from 9 to 1
|
||||||
|
move 2 from 4 to 3
|
||||||
|
move 1 from 2 to 1
|
||||||
|
move 16 from 1 to 4
|
||||||
|
move 1 from 6 to 1
|
||||||
|
move 2 from 3 to 9
|
||||||
|
move 3 from 8 to 5
|
||||||
|
move 8 from 7 to 1
|
||||||
|
move 3 from 5 to 9
|
||||||
|
move 7 from 4 to 6
|
||||||
|
move 7 from 1 to 5
|
||||||
|
move 2 from 8 to 3
|
||||||
|
move 1 from 7 to 8
|
121
2022/day05/main.go
Normal file
121
2022/day05/main.go
Normal file
@ -0,0 +1,121 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"sort"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
h "git.bullercodeworks.com/brian/adventofcode/helpers"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
inp := h.StdinToStringSlice()
|
||||||
|
part1(inp)
|
||||||
|
fmt.Println("")
|
||||||
|
part2(inp)
|
||||||
|
}
|
||||||
|
|
||||||
|
func part1(inp []string) {
|
||||||
|
fmt.Println("# Part 1")
|
||||||
|
stacks, bottom := buildStacks(inp)
|
||||||
|
|
||||||
|
// Run instructions
|
||||||
|
// Instructions start at bottom+2
|
||||||
|
for i := bottom + 2; i < len(inp); i++ {
|
||||||
|
inst := strings.Fields(inp[i])
|
||||||
|
count := h.Atoi(inst[1])
|
||||||
|
from := h.Atoi(inst[3])
|
||||||
|
to := h.Atoi(inst[5])
|
||||||
|
for c := 0; c < count; c++ {
|
||||||
|
moveCrates(stacks, from, to, 1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for i := range stacks {
|
||||||
|
fmt.Print(string(stacks[i][0]))
|
||||||
|
}
|
||||||
|
fmt.Println("")
|
||||||
|
}
|
||||||
|
|
||||||
|
func part2(inp []string) {
|
||||||
|
fmt.Println("# Part 2")
|
||||||
|
stacks, bottom := buildStacks(inp)
|
||||||
|
|
||||||
|
// Run instructions
|
||||||
|
// Instructions start at bottom+2
|
||||||
|
for i := bottom + 2; i < len(inp); i++ {
|
||||||
|
inst := strings.Fields(inp[i])
|
||||||
|
count := h.Atoi(inst[1])
|
||||||
|
from := h.Atoi(inst[3])
|
||||||
|
to := h.Atoi(inst[5])
|
||||||
|
|
||||||
|
moveCrates(stacks, from, to, count)
|
||||||
|
}
|
||||||
|
|
||||||
|
for i := range stacks {
|
||||||
|
fmt.Print(string(stacks[i][0]))
|
||||||
|
}
|
||||||
|
fmt.Println("")
|
||||||
|
}
|
||||||
|
|
||||||
|
func getCrateHash(stacks [][]byte) string {
|
||||||
|
var ret []byte
|
||||||
|
for i := range stacks {
|
||||||
|
for j := range stacks[i] {
|
||||||
|
ret = append(ret, stacks[i][j])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sort.Slice(ret, func(p, q int) bool {
|
||||||
|
return ret[p] > ret[q]
|
||||||
|
})
|
||||||
|
return string(ret)
|
||||||
|
}
|
||||||
|
func validateCrates(valid string, stacks [][]byte) bool {
|
||||||
|
return valid == getCrateHash(stacks)
|
||||||
|
}
|
||||||
|
|
||||||
|
func buildStacks(inp []string) ([][]byte, int) {
|
||||||
|
var stacks [][]byte
|
||||||
|
// Find the bottom
|
||||||
|
var bottom int
|
||||||
|
for i, row := range inp {
|
||||||
|
if len(row) > 1 && row[1] == '1' {
|
||||||
|
bottom = i
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Allocate stacks
|
||||||
|
stCnt := strings.Fields(inp[bottom])
|
||||||
|
for i := 0; i < len(stCnt); i++ {
|
||||||
|
stacks = append(stacks, []byte{})
|
||||||
|
}
|
||||||
|
|
||||||
|
// Build stacks
|
||||||
|
for i := bottom - 1; i >= 0; i-- {
|
||||||
|
for stI := 0; stI < len(stCnt); stI++ {
|
||||||
|
pos := stI*4 + 1
|
||||||
|
if len(inp[i]) >= pos && (inp[i][pos] >= 'A' && inp[i][pos] <= 'Z') {
|
||||||
|
stacks[stI] = append([]byte{inp[i][pos]}, stacks[stI]...)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return stacks, bottom
|
||||||
|
}
|
||||||
|
|
||||||
|
func moveCrates(stacks [][]byte, from, to, count int) {
|
||||||
|
var x []byte
|
||||||
|
if count > 1 {
|
||||||
|
x, stacks[from-1] = stacks[from-1][0:count], stacks[from-1][count:]
|
||||||
|
} else {
|
||||||
|
x, stacks[from-1] = []byte{stacks[from-1][0]}, stacks[from-1][count:]
|
||||||
|
}
|
||||||
|
for i := len(x) - 1; i >= 0; i-- {
|
||||||
|
stacks[to-1] = append([]byte{x[i]}, stacks[to-1]...)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func printStacks(stacks [][]byte) {
|
||||||
|
for i := range stacks {
|
||||||
|
fmt.Println(i+1, string(stacks[i]))
|
||||||
|
}
|
||||||
|
}
|
161
2022/day05/problem
Normal file
161
2022/day05/problem
Normal file
@ -0,0 +1,161 @@
|
|||||||
|
Advent of Code
|
||||||
|
br0xen (AoC++) 10*
|
||||||
|
|
||||||
|
--- 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?
|
||||||
|
|
||||||
|
Your puzzle answer was PTWLTDSJV.
|
||||||
|
|
||||||
|
--- Part Two ---
|
||||||
|
|
||||||
|
As you watch the crane operator expertly rearrange the crates, you notice the process
|
||||||
|
isn't following your prediction.
|
||||||
|
|
||||||
|
Some mud was covering the writing on the side of the crane, and you quickly wipe it away.
|
||||||
|
The crane isn't a CrateMover 9000 - it's a CrateMover 9001.
|
||||||
|
|
||||||
|
The CrateMover 9001 is notable for many new and exciting features: air conditioning,
|
||||||
|
leather seats, an extra cup holder, and the ability to pick up and move multiple crates
|
||||||
|
at once.
|
||||||
|
|
||||||
|
Again considering the example above, the crates begin in the same configuration:
|
||||||
|
|
||||||
|
[D]
|
||||||
|
[N] [C]
|
||||||
|
[Z] [M] [P]
|
||||||
|
1 2 3
|
||||||
|
|
||||||
|
Moving a single crate from stack 2 to stack 1 behaves the same as before:
|
||||||
|
|
||||||
|
[D]
|
||||||
|
[N] [C]
|
||||||
|
[Z] [M] [P]
|
||||||
|
1 2 3
|
||||||
|
|
||||||
|
However, the action of moving three crates from stack 1 to stack 3 means that those three
|
||||||
|
moved crates stay in the same order, resulting in this new configuration:
|
||||||
|
|
||||||
|
[D]
|
||||||
|
[N]
|
||||||
|
[C] [Z]
|
||||||
|
[M] [P]
|
||||||
|
1 2 3
|
||||||
|
|
||||||
|
Next, as both crates are moved from stack 2 to stack 1, they retain their order as well:
|
||||||
|
|
||||||
|
[D]
|
||||||
|
[N]
|
||||||
|
[C] [Z]
|
||||||
|
[M] [P]
|
||||||
|
1 2 3
|
||||||
|
|
||||||
|
Finally, a single crate is still moved from stack 1 to stack 2, but now it's crate C that
|
||||||
|
gets moved:
|
||||||
|
|
||||||
|
[D]
|
||||||
|
[N]
|
||||||
|
[Z]
|
||||||
|
[M] [C] [P]
|
||||||
|
1 2 3
|
||||||
|
|
||||||
|
In this example, the CrateMover 9001 has put the crates in a totally different order:
|
||||||
|
MCD.
|
||||||
|
|
||||||
|
Before the rearrangement process finishes, update your simulation so that the Elves know
|
||||||
|
where they should stand to be ready to unload the final supplies. After the rearrangement
|
||||||
|
procedure completes, what crate ends up on top of each stack?
|
||||||
|
|
||||||
|
Your puzzle answer was WZMFVGGZP.
|
||||||
|
|
||||||
|
Both parts of this puzzle are complete! They provide two gold stars: **
|
||||||
|
|
||||||
|
References
|
||||||
|
|
||||||
|
Visible links
|
||||||
|
. https://adventofcode.com/
|
||||||
|
. https://adventofcode.com/2022/about
|
||||||
|
. https://adventofcode.com/2022/events
|
||||||
|
. https://adventofcode.com/2022/settings
|
||||||
|
. https://adventofcode.com/2022/auth/logout
|
||||||
|
. Advent of Code Supporter
|
||||||
|
https://adventofcode.com/2022/support
|
||||||
|
. https://adventofcode.com/2022
|
||||||
|
. https://adventofcode.com/2022
|
||||||
|
. https://adventofcode.com/2022/support
|
||||||
|
. https://adventofcode.com/2022/sponsors
|
||||||
|
. https://adventofcode.com/2022/leaderboard
|
||||||
|
. https://adventofcode.com/2022/stats
|
||||||
|
. https://adventofcode.com/2022/sponsors
|
||||||
|
. https://adventofcode.com/2022
|
||||||
|
. https://adventofcode.com/2022/day/5/input
|
9
2022/day05/testinput
Normal file
9
2022/day05/testinput
Normal file
@ -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
|
@ -148,7 +148,7 @@ func Atoi(i string) int {
|
|||||||
var ret int
|
var ret int
|
||||||
var err error
|
var err error
|
||||||
if ret, err = strconv.Atoi(i); err != nil {
|
if ret, err = strconv.Atoi(i); err != nil {
|
||||||
log.Fatal("Invalid Atoi:", i)
|
log.Fatalf("Invalid Atoi: %s\n%v", i, err)
|
||||||
}
|
}
|
||||||
return ret
|
return ret
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user