Solve day05
This commit is contained in:
parent
3b4a20bce0
commit
35da387b49
513
day05/input
Normal file
513
day05/input
Normal file
|
@ -0,0 +1,513 @@
|
||||||
|
[C] [S] [H]
|
||||||
|
[F] [B] [C] [S] [W]
|
||||||
|
[B] [W] [W] [M] [S] [B]
|
||||||
|
[L] [H] [G] [L] [P] [F] [Q]
|
||||||
|
[D] [P] [J] [F] [T] [G] [M] [T]
|
||||||
|
[P] [G] [B] [N] [L] [W] [P] [W] [R]
|
||||||
|
[Z] [V] [W] [J] [J] [C] [T] [S] [C]
|
||||||
|
[S] [N] [F] [G] [W] [B] [H] [F] [N]
|
||||||
|
1 2 3 4 5 6 7 8 9
|
||||||
|
|
||||||
|
move 2 from 5 to 9
|
||||||
|
move 3 from 1 to 7
|
||||||
|
move 2 from 3 to 9
|
||||||
|
move 6 from 9 to 5
|
||||||
|
move 2 from 3 to 8
|
||||||
|
move 9 from 7 to 8
|
||||||
|
move 15 from 8 to 9
|
||||||
|
move 3 from 1 to 6
|
||||||
|
move 6 from 4 to 2
|
||||||
|
move 6 from 5 to 6
|
||||||
|
move 1 from 4 to 2
|
||||||
|
move 14 from 6 to 2
|
||||||
|
move 2 from 1 to 5
|
||||||
|
move 1 from 7 to 3
|
||||||
|
move 1 from 4 to 8
|
||||||
|
move 2 from 5 to 6
|
||||||
|
move 25 from 2 to 4
|
||||||
|
move 2 from 6 to 4
|
||||||
|
move 1 from 8 to 1
|
||||||
|
move 2 from 9 to 1
|
||||||
|
move 1 from 6 to 1
|
||||||
|
move 2 from 1 to 7
|
||||||
|
move 1 from 7 to 3
|
||||||
|
move 2 from 1 to 8
|
||||||
|
move 1 from 2 to 6
|
||||||
|
move 1 from 3 to 8
|
||||||
|
move 4 from 5 to 6
|
||||||
|
move 1 from 5 to 3
|
||||||
|
move 1 from 9 to 6
|
||||||
|
move 2 from 3 to 4
|
||||||
|
move 1 from 2 to 6
|
||||||
|
move 12 from 9 to 7
|
||||||
|
move 1 from 9 to 1
|
||||||
|
move 1 from 5 to 8
|
||||||
|
move 1 from 3 to 8
|
||||||
|
move 28 from 4 to 5
|
||||||
|
move 1 from 4 to 3
|
||||||
|
move 1 from 2 to 6
|
||||||
|
move 1 from 3 to 9
|
||||||
|
move 12 from 7 to 2
|
||||||
|
move 1 from 9 to 6
|
||||||
|
move 6 from 6 to 4
|
||||||
|
move 1 from 7 to 4
|
||||||
|
move 1 from 1 to 2
|
||||||
|
move 28 from 5 to 1
|
||||||
|
move 2 from 2 to 8
|
||||||
|
move 3 from 8 to 2
|
||||||
|
move 7 from 4 to 1
|
||||||
|
move 4 from 8 to 6
|
||||||
|
move 9 from 2 to 8
|
||||||
|
move 7 from 6 to 5
|
||||||
|
move 3 from 5 to 9
|
||||||
|
move 1 from 9 to 7
|
||||||
|
move 1 from 7 to 1
|
||||||
|
move 5 from 8 to 4
|
||||||
|
move 4 from 1 to 9
|
||||||
|
move 6 from 9 to 4
|
||||||
|
move 5 from 1 to 5
|
||||||
|
move 5 from 2 to 3
|
||||||
|
move 4 from 8 to 2
|
||||||
|
move 5 from 1 to 4
|
||||||
|
move 4 from 5 to 9
|
||||||
|
move 9 from 4 to 9
|
||||||
|
move 10 from 9 to 8
|
||||||
|
move 1 from 9 to 1
|
||||||
|
move 2 from 2 to 8
|
||||||
|
move 4 from 3 to 8
|
||||||
|
move 1 from 2 to 3
|
||||||
|
move 2 from 9 to 2
|
||||||
|
move 1 from 2 to 6
|
||||||
|
move 4 from 4 to 3
|
||||||
|
move 3 from 5 to 1
|
||||||
|
move 12 from 1 to 4
|
||||||
|
move 1 from 5 to 3
|
||||||
|
move 1 from 5 to 3
|
||||||
|
move 5 from 8 to 5
|
||||||
|
move 7 from 8 to 5
|
||||||
|
move 8 from 3 to 4
|
||||||
|
move 1 from 5 to 1
|
||||||
|
move 1 from 6 to 7
|
||||||
|
move 2 from 1 to 6
|
||||||
|
move 8 from 5 to 9
|
||||||
|
move 2 from 5 to 1
|
||||||
|
move 9 from 1 to 4
|
||||||
|
move 20 from 4 to 2
|
||||||
|
move 1 from 5 to 2
|
||||||
|
move 4 from 4 to 2
|
||||||
|
move 5 from 9 to 2
|
||||||
|
move 2 from 8 to 9
|
||||||
|
move 23 from 2 to 4
|
||||||
|
move 2 from 2 to 5
|
||||||
|
move 5 from 1 to 2
|
||||||
|
move 28 from 4 to 3
|
||||||
|
move 2 from 8 to 1
|
||||||
|
move 2 from 5 to 7
|
||||||
|
move 1 from 6 to 9
|
||||||
|
move 1 from 4 to 8
|
||||||
|
move 1 from 8 to 9
|
||||||
|
move 1 from 4 to 6
|
||||||
|
move 2 from 7 to 2
|
||||||
|
move 13 from 3 to 4
|
||||||
|
move 5 from 9 to 7
|
||||||
|
move 1 from 9 to 6
|
||||||
|
move 14 from 2 to 6
|
||||||
|
move 1 from 4 to 1
|
||||||
|
move 10 from 3 to 2
|
||||||
|
move 1 from 6 to 9
|
||||||
|
move 2 from 3 to 2
|
||||||
|
move 3 from 1 to 9
|
||||||
|
move 1 from 3 to 5
|
||||||
|
move 3 from 9 to 3
|
||||||
|
move 6 from 7 to 4
|
||||||
|
move 1 from 9 to 4
|
||||||
|
move 1 from 9 to 2
|
||||||
|
move 1 from 5 to 3
|
||||||
|
move 5 from 3 to 1
|
||||||
|
move 17 from 4 to 7
|
||||||
|
move 2 from 2 to 8
|
||||||
|
move 1 from 3 to 9
|
||||||
|
move 1 from 8 to 2
|
||||||
|
move 1 from 9 to 6
|
||||||
|
move 4 from 6 to 2
|
||||||
|
move 10 from 6 to 5
|
||||||
|
move 4 from 1 to 5
|
||||||
|
move 15 from 2 to 9
|
||||||
|
move 1 from 8 to 6
|
||||||
|
move 1 from 2 to 8
|
||||||
|
move 6 from 9 to 2
|
||||||
|
move 3 from 4 to 8
|
||||||
|
move 11 from 7 to 1
|
||||||
|
move 6 from 9 to 6
|
||||||
|
move 1 from 6 to 2
|
||||||
|
move 3 from 9 to 3
|
||||||
|
move 6 from 2 to 7
|
||||||
|
move 6 from 7 to 8
|
||||||
|
move 7 from 1 to 9
|
||||||
|
move 4 from 1 to 6
|
||||||
|
move 2 from 1 to 2
|
||||||
|
move 4 from 6 to 7
|
||||||
|
move 1 from 2 to 9
|
||||||
|
move 1 from 2 to 3
|
||||||
|
move 1 from 2 to 1
|
||||||
|
move 6 from 8 to 4
|
||||||
|
move 2 from 6 to 7
|
||||||
|
move 13 from 5 to 9
|
||||||
|
move 1 from 5 to 4
|
||||||
|
move 3 from 4 to 7
|
||||||
|
move 1 from 1 to 7
|
||||||
|
move 14 from 9 to 2
|
||||||
|
move 2 from 9 to 3
|
||||||
|
move 3 from 8 to 5
|
||||||
|
move 4 from 3 to 4
|
||||||
|
move 8 from 4 to 1
|
||||||
|
move 7 from 1 to 9
|
||||||
|
move 5 from 6 to 9
|
||||||
|
move 4 from 9 to 2
|
||||||
|
move 1 from 1 to 9
|
||||||
|
move 17 from 2 to 4
|
||||||
|
move 1 from 6 to 3
|
||||||
|
move 4 from 7 to 5
|
||||||
|
move 5 from 7 to 5
|
||||||
|
move 1 from 6 to 4
|
||||||
|
move 1 from 8 to 3
|
||||||
|
move 5 from 7 to 1
|
||||||
|
move 2 from 7 to 6
|
||||||
|
move 2 from 3 to 6
|
||||||
|
move 1 from 2 to 9
|
||||||
|
move 7 from 9 to 6
|
||||||
|
move 2 from 3 to 7
|
||||||
|
move 8 from 6 to 4
|
||||||
|
move 3 from 9 to 2
|
||||||
|
move 1 from 6 to 4
|
||||||
|
move 26 from 4 to 8
|
||||||
|
move 2 from 7 to 8
|
||||||
|
move 5 from 5 to 9
|
||||||
|
move 2 from 6 to 7
|
||||||
|
move 4 from 9 to 1
|
||||||
|
move 2 from 7 to 5
|
||||||
|
move 14 from 8 to 6
|
||||||
|
move 3 from 2 to 8
|
||||||
|
move 3 from 6 to 8
|
||||||
|
move 3 from 6 to 1
|
||||||
|
move 10 from 8 to 4
|
||||||
|
move 5 from 9 to 4
|
||||||
|
move 3 from 8 to 5
|
||||||
|
move 1 from 8 to 2
|
||||||
|
move 12 from 4 to 8
|
||||||
|
move 1 from 9 to 3
|
||||||
|
move 6 from 6 to 4
|
||||||
|
move 6 from 8 to 2
|
||||||
|
move 1 from 3 to 8
|
||||||
|
move 1 from 8 to 4
|
||||||
|
move 10 from 1 to 9
|
||||||
|
move 2 from 1 to 3
|
||||||
|
move 7 from 4 to 9
|
||||||
|
move 1 from 2 to 1
|
||||||
|
move 11 from 8 to 9
|
||||||
|
move 1 from 3 to 9
|
||||||
|
move 2 from 2 to 7
|
||||||
|
move 1 from 3 to 6
|
||||||
|
move 2 from 7 to 9
|
||||||
|
move 2 from 4 to 6
|
||||||
|
move 4 from 6 to 4
|
||||||
|
move 2 from 2 to 8
|
||||||
|
move 2 from 8 to 4
|
||||||
|
move 1 from 1 to 7
|
||||||
|
move 2 from 2 to 8
|
||||||
|
move 9 from 5 to 2
|
||||||
|
move 3 from 5 to 9
|
||||||
|
move 1 from 8 to 3
|
||||||
|
move 30 from 9 to 7
|
||||||
|
move 1 from 6 to 2
|
||||||
|
move 7 from 4 to 8
|
||||||
|
move 13 from 7 to 2
|
||||||
|
move 8 from 7 to 4
|
||||||
|
move 2 from 4 to 8
|
||||||
|
move 8 from 8 to 1
|
||||||
|
move 1 from 8 to 3
|
||||||
|
move 2 from 8 to 9
|
||||||
|
move 1 from 3 to 7
|
||||||
|
move 5 from 7 to 6
|
||||||
|
move 1 from 3 to 1
|
||||||
|
move 7 from 4 to 8
|
||||||
|
move 20 from 2 to 6
|
||||||
|
move 2 from 2 to 7
|
||||||
|
move 1 from 9 to 5
|
||||||
|
move 4 from 7 to 6
|
||||||
|
move 3 from 7 to 8
|
||||||
|
move 1 from 7 to 2
|
||||||
|
move 7 from 8 to 6
|
||||||
|
move 3 from 6 to 7
|
||||||
|
move 4 from 9 to 1
|
||||||
|
move 1 from 2 to 6
|
||||||
|
move 1 from 9 to 7
|
||||||
|
move 1 from 2 to 8
|
||||||
|
move 1 from 7 to 6
|
||||||
|
move 3 from 6 to 3
|
||||||
|
move 4 from 8 to 1
|
||||||
|
move 8 from 6 to 4
|
||||||
|
move 3 from 7 to 2
|
||||||
|
move 1 from 3 to 2
|
||||||
|
move 1 from 4 to 5
|
||||||
|
move 2 from 3 to 5
|
||||||
|
move 1 from 4 to 6
|
||||||
|
move 4 from 1 to 5
|
||||||
|
move 4 from 2 to 9
|
||||||
|
move 2 from 1 to 6
|
||||||
|
move 4 from 9 to 2
|
||||||
|
move 3 from 2 to 8
|
||||||
|
move 2 from 8 to 4
|
||||||
|
move 13 from 6 to 1
|
||||||
|
move 4 from 5 to 2
|
||||||
|
move 14 from 6 to 3
|
||||||
|
move 1 from 2 to 7
|
||||||
|
move 2 from 2 to 4
|
||||||
|
move 1 from 8 to 6
|
||||||
|
move 1 from 6 to 3
|
||||||
|
move 1 from 7 to 4
|
||||||
|
move 1 from 2 to 3
|
||||||
|
move 1 from 2 to 6
|
||||||
|
move 11 from 4 to 6
|
||||||
|
move 2 from 5 to 4
|
||||||
|
move 1 from 5 to 6
|
||||||
|
move 12 from 3 to 6
|
||||||
|
move 1 from 3 to 7
|
||||||
|
move 1 from 5 to 7
|
||||||
|
move 3 from 3 to 6
|
||||||
|
move 2 from 7 to 5
|
||||||
|
move 2 from 5 to 2
|
||||||
|
move 8 from 6 to 7
|
||||||
|
move 24 from 1 to 3
|
||||||
|
move 1 from 4 to 6
|
||||||
|
move 10 from 3 to 1
|
||||||
|
move 6 from 1 to 8
|
||||||
|
move 1 from 6 to 3
|
||||||
|
move 1 from 4 to 2
|
||||||
|
move 1 from 3 to 1
|
||||||
|
move 2 from 2 to 1
|
||||||
|
move 1 from 7 to 6
|
||||||
|
move 2 from 7 to 5
|
||||||
|
move 4 from 3 to 7
|
||||||
|
move 1 from 2 to 3
|
||||||
|
move 6 from 1 to 6
|
||||||
|
move 3 from 7 to 5
|
||||||
|
move 4 from 7 to 8
|
||||||
|
move 1 from 1 to 2
|
||||||
|
move 1 from 2 to 7
|
||||||
|
move 8 from 3 to 4
|
||||||
|
move 3 from 4 to 7
|
||||||
|
move 6 from 8 to 6
|
||||||
|
move 2 from 3 to 2
|
||||||
|
move 1 from 3 to 9
|
||||||
|
move 5 from 5 to 1
|
||||||
|
move 2 from 8 to 2
|
||||||
|
move 1 from 9 to 2
|
||||||
|
move 4 from 1 to 3
|
||||||
|
move 3 from 2 to 9
|
||||||
|
move 1 from 1 to 2
|
||||||
|
move 2 from 9 to 7
|
||||||
|
move 2 from 2 to 9
|
||||||
|
move 8 from 7 to 5
|
||||||
|
move 33 from 6 to 5
|
||||||
|
move 20 from 5 to 9
|
||||||
|
move 21 from 5 to 7
|
||||||
|
move 17 from 7 to 6
|
||||||
|
move 10 from 6 to 9
|
||||||
|
move 5 from 4 to 7
|
||||||
|
move 2 from 3 to 9
|
||||||
|
move 1 from 2 to 3
|
||||||
|
move 2 from 7 to 3
|
||||||
|
move 3 from 9 to 5
|
||||||
|
move 23 from 9 to 7
|
||||||
|
move 8 from 9 to 6
|
||||||
|
move 1 from 9 to 1
|
||||||
|
move 1 from 5 to 3
|
||||||
|
move 1 from 8 to 9
|
||||||
|
move 5 from 6 to 8
|
||||||
|
move 1 from 9 to 6
|
||||||
|
move 18 from 7 to 2
|
||||||
|
move 6 from 7 to 4
|
||||||
|
move 6 from 4 to 8
|
||||||
|
move 5 from 7 to 4
|
||||||
|
move 6 from 6 to 3
|
||||||
|
move 1 from 4 to 2
|
||||||
|
move 10 from 2 to 1
|
||||||
|
move 1 from 2 to 4
|
||||||
|
move 7 from 1 to 6
|
||||||
|
move 1 from 7 to 1
|
||||||
|
move 11 from 6 to 2
|
||||||
|
move 1 from 6 to 8
|
||||||
|
move 12 from 3 to 1
|
||||||
|
move 8 from 1 to 8
|
||||||
|
move 2 from 5 to 2
|
||||||
|
move 12 from 8 to 6
|
||||||
|
move 15 from 2 to 4
|
||||||
|
move 7 from 4 to 5
|
||||||
|
move 4 from 5 to 9
|
||||||
|
move 4 from 9 to 4
|
||||||
|
move 5 from 4 to 6
|
||||||
|
move 2 from 5 to 2
|
||||||
|
move 1 from 2 to 5
|
||||||
|
move 2 from 5 to 4
|
||||||
|
move 2 from 1 to 3
|
||||||
|
move 4 from 1 to 5
|
||||||
|
move 2 from 8 to 4
|
||||||
|
move 5 from 2 to 9
|
||||||
|
move 17 from 6 to 8
|
||||||
|
move 1 from 3 to 2
|
||||||
|
move 2 from 5 to 4
|
||||||
|
move 1 from 3 to 8
|
||||||
|
move 1 from 1 to 6
|
||||||
|
move 2 from 5 to 6
|
||||||
|
move 3 from 9 to 5
|
||||||
|
move 1 from 5 to 1
|
||||||
|
move 3 from 1 to 8
|
||||||
|
move 26 from 8 to 4
|
||||||
|
move 1 from 5 to 3
|
||||||
|
move 3 from 2 to 7
|
||||||
|
move 1 from 5 to 7
|
||||||
|
move 21 from 4 to 9
|
||||||
|
move 19 from 4 to 5
|
||||||
|
move 3 from 4 to 3
|
||||||
|
move 2 from 7 to 5
|
||||||
|
move 1 from 8 to 2
|
||||||
|
move 1 from 6 to 2
|
||||||
|
move 1 from 8 to 9
|
||||||
|
move 1 from 6 to 7
|
||||||
|
move 1 from 2 to 4
|
||||||
|
move 1 from 4 to 7
|
||||||
|
move 1 from 2 to 7
|
||||||
|
move 1 from 7 to 1
|
||||||
|
move 1 from 1 to 6
|
||||||
|
move 1 from 3 to 5
|
||||||
|
move 2 from 6 to 3
|
||||||
|
move 13 from 5 to 8
|
||||||
|
move 1 from 4 to 2
|
||||||
|
move 3 from 5 to 4
|
||||||
|
move 5 from 5 to 4
|
||||||
|
move 5 from 8 to 9
|
||||||
|
move 9 from 9 to 3
|
||||||
|
move 2 from 7 to 1
|
||||||
|
move 6 from 4 to 2
|
||||||
|
move 8 from 9 to 4
|
||||||
|
move 1 from 2 to 7
|
||||||
|
move 12 from 9 to 8
|
||||||
|
move 1 from 4 to 2
|
||||||
|
move 3 from 7 to 3
|
||||||
|
move 11 from 8 to 5
|
||||||
|
move 5 from 8 to 6
|
||||||
|
move 3 from 6 to 5
|
||||||
|
move 2 from 4 to 1
|
||||||
|
move 13 from 5 to 3
|
||||||
|
move 1 from 1 to 7
|
||||||
|
move 2 from 1 to 8
|
||||||
|
move 3 from 4 to 9
|
||||||
|
move 1 from 1 to 7
|
||||||
|
move 1 from 2 to 4
|
||||||
|
move 2 from 7 to 3
|
||||||
|
move 1 from 5 to 3
|
||||||
|
move 4 from 4 to 2
|
||||||
|
move 1 from 4 to 9
|
||||||
|
move 30 from 3 to 2
|
||||||
|
move 1 from 9 to 7
|
||||||
|
move 6 from 8 to 6
|
||||||
|
move 1 from 7 to 6
|
||||||
|
move 1 from 5 to 1
|
||||||
|
move 1 from 3 to 5
|
||||||
|
move 30 from 2 to 3
|
||||||
|
move 1 from 1 to 9
|
||||||
|
move 2 from 9 to 2
|
||||||
|
move 9 from 6 to 9
|
||||||
|
move 2 from 2 to 9
|
||||||
|
move 1 from 5 to 1
|
||||||
|
move 5 from 9 to 7
|
||||||
|
move 8 from 2 to 5
|
||||||
|
move 1 from 1 to 9
|
||||||
|
move 3 from 9 to 1
|
||||||
|
move 5 from 3 to 6
|
||||||
|
move 8 from 5 to 9
|
||||||
|
move 13 from 3 to 9
|
||||||
|
move 3 from 1 to 7
|
||||||
|
move 5 from 7 to 9
|
||||||
|
move 17 from 9 to 6
|
||||||
|
move 1 from 7 to 6
|
||||||
|
move 6 from 3 to 9
|
||||||
|
move 1 from 2 to 1
|
||||||
|
move 2 from 7 to 1
|
||||||
|
move 1 from 2 to 5
|
||||||
|
move 21 from 9 to 2
|
||||||
|
move 4 from 3 to 6
|
||||||
|
move 6 from 6 to 5
|
||||||
|
move 7 from 5 to 9
|
||||||
|
move 2 from 3 to 8
|
||||||
|
move 3 from 1 to 3
|
||||||
|
move 4 from 6 to 5
|
||||||
|
move 1 from 8 to 1
|
||||||
|
move 1 from 8 to 2
|
||||||
|
move 4 from 5 to 2
|
||||||
|
move 4 from 9 to 1
|
||||||
|
move 4 from 3 to 5
|
||||||
|
move 2 from 1 to 7
|
||||||
|
move 1 from 7 to 4
|
||||||
|
move 3 from 9 to 5
|
||||||
|
move 25 from 2 to 9
|
||||||
|
move 18 from 9 to 1
|
||||||
|
move 1 from 4 to 5
|
||||||
|
move 1 from 3 to 8
|
||||||
|
move 4 from 5 to 6
|
||||||
|
move 2 from 9 to 3
|
||||||
|
move 17 from 1 to 5
|
||||||
|
move 1 from 2 to 7
|
||||||
|
move 2 from 3 to 5
|
||||||
|
move 3 from 1 to 8
|
||||||
|
move 5 from 9 to 2
|
||||||
|
move 4 from 8 to 9
|
||||||
|
move 12 from 5 to 2
|
||||||
|
move 1 from 1 to 8
|
||||||
|
move 3 from 9 to 5
|
||||||
|
move 1 from 8 to 2
|
||||||
|
move 2 from 7 to 2
|
||||||
|
move 1 from 9 to 5
|
||||||
|
move 9 from 5 to 2
|
||||||
|
move 6 from 6 to 2
|
||||||
|
move 15 from 6 to 2
|
||||||
|
move 5 from 5 to 9
|
||||||
|
move 1 from 5 to 9
|
||||||
|
move 3 from 9 to 2
|
||||||
|
move 3 from 9 to 1
|
||||||
|
move 1 from 1 to 9
|
||||||
|
move 1 from 9 to 1
|
||||||
|
move 19 from 2 to 8
|
||||||
|
move 2 from 1 to 9
|
||||||
|
move 33 from 2 to 6
|
||||||
|
move 4 from 6 to 4
|
||||||
|
move 1 from 2 to 6
|
||||||
|
move 1 from 9 to 8
|
||||||
|
move 3 from 4 to 8
|
||||||
|
move 18 from 8 to 3
|
||||||
|
move 1 from 4 to 9
|
||||||
|
move 10 from 3 to 9
|
||||||
|
move 1 from 1 to 4
|
||||||
|
move 24 from 6 to 3
|
||||||
|
move 1 from 4 to 3
|
||||||
|
move 2 from 8 to 7
|
||||||
|
move 8 from 9 to 3
|
||||||
|
move 5 from 6 to 7
|
||||||
|
move 35 from 3 to 2
|
||||||
|
move 7 from 7 to 1
|
||||||
|
move 3 from 1 to 3
|
||||||
|
move 33 from 2 to 6
|
||||||
|
move 6 from 3 to 7
|
||||||
|
move 5 from 7 to 3
|
||||||
|
move 1 from 1 to 4
|
||||||
|
move 1 from 7 to 8
|
||||||
|
move 1 from 4 to 8
|
||||||
|
move 1 from 3 to 2
|
||||||
|
move 30 from 6 to 5
|
||||||
|
move 2 from 1 to 6
|
||||||
|
move 5 from 8 to 1
|
||||||
|
move 1 from 9 to 2
|
||||||
|
move 2 from 6 to 4
|
||||||
|
move 4 from 1 to 7
|
||||||
|
move 21 from 5 to 8
|
9
day05/input.test
Normal file
9
day05/input.test
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
|
|
@ -1,3 +1,124 @@
|
||||||
fn main() {
|
use std::{
|
||||||
println!("Hello, world!");
|
fs::File,
|
||||||
|
io::{BufRead, BufReader},
|
||||||
|
};
|
||||||
|
|
||||||
|
#[derive(Debug)]
|
||||||
|
struct Port {
|
||||||
|
containers: Vec<Vec<u8>>,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Clone, Copy)]
|
||||||
|
struct Move {
|
||||||
|
count: usize,
|
||||||
|
from: usize,
|
||||||
|
to: usize,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Default, PartialEq, Eq)]
|
||||||
|
enum SolvePuzzle {
|
||||||
|
First,
|
||||||
|
#[default]
|
||||||
|
Second,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Port {
|
||||||
|
fn parse_from_lines<I, S>(lines: &mut I) -> Result<Self, ()>
|
||||||
|
where
|
||||||
|
I: Iterator<Item = S>,
|
||||||
|
S: AsRef<str>,
|
||||||
|
{
|
||||||
|
let mut relevant: Vec<_> = lines.take_while(|line| !line.as_ref().is_empty()).collect();
|
||||||
|
let _number_line = relevant.pop().unwrap();
|
||||||
|
let mut containers = vec![];
|
||||||
|
relevant.iter().rev().for_each(|line| {
|
||||||
|
let bytes = line.as_ref().as_bytes();
|
||||||
|
let mut container_idx = 0;
|
||||||
|
while 4 * container_idx + 1 < bytes.len() {
|
||||||
|
if containers.len() <= container_idx {
|
||||||
|
containers.push(vec![])
|
||||||
|
}
|
||||||
|
let container = bytes[4 * container_idx + 1];
|
||||||
|
if container != b' ' {
|
||||||
|
containers[container_idx].push(container)
|
||||||
|
}
|
||||||
|
container_idx += 1;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Ok(Self { containers })
|
||||||
|
}
|
||||||
|
fn apply(&mut self, mv: Move, reverse_on_move: bool) {
|
||||||
|
let column = &mut self.containers[mv.from];
|
||||||
|
let mut moved = column.split_off(column.len() - mv.count);
|
||||||
|
if reverse_on_move {
|
||||||
|
moved.reverse();
|
||||||
|
}
|
||||||
|
self.containers[mv.to].extend(moved);
|
||||||
|
}
|
||||||
|
fn to_top_row_string(self) -> String {
|
||||||
|
let bytes: Vec<u8> = self
|
||||||
|
.containers
|
||||||
|
.into_iter()
|
||||||
|
.map(|mut column| column.pop())
|
||||||
|
.map(Option::unwrap)
|
||||||
|
.collect();
|
||||||
|
String::from_utf8(bytes).unwrap()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn parse_instruction_line<S: AsRef<str>>(line: S) -> Move {
|
||||||
|
let mut words = line.as_ref().split_ascii_whitespace();
|
||||||
|
let _move = words.next().unwrap();
|
||||||
|
let count = words.next().unwrap().parse().unwrap();
|
||||||
|
let _from = words.next().unwrap();
|
||||||
|
let from = words.next().unwrap().parse::<usize>().unwrap() - 1;
|
||||||
|
let _to = words.next().unwrap();
|
||||||
|
let to = words.next().unwrap().parse::<usize>().unwrap() - 1;
|
||||||
|
Move { from, to, count }
|
||||||
|
}
|
||||||
|
|
||||||
|
fn solve_puzzle<R>(reader: R, solve: SolvePuzzle) -> String
|
||||||
|
where
|
||||||
|
R: BufRead,
|
||||||
|
{
|
||||||
|
let mut lines = reader.lines().map(Result::unwrap);
|
||||||
|
let mut port = Port::parse_from_lines(&mut lines).unwrap();
|
||||||
|
lines
|
||||||
|
.map(parse_instruction_line)
|
||||||
|
.for_each(|mv| port.apply(mv, solve == SolvePuzzle::First));
|
||||||
|
port.to_top_row_string()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
let mut args = ::std::env::args().skip(1);
|
||||||
|
let file = args.next().unwrap_or_else(|| String::from("./input"));
|
||||||
|
let solve = args
|
||||||
|
.next()
|
||||||
|
.map(|arg| match arg.as_str() {
|
||||||
|
"first" => SolvePuzzle::First,
|
||||||
|
"second" => SolvePuzzle::Second,
|
||||||
|
_ => unreachable!(),
|
||||||
|
})
|
||||||
|
.unwrap_or_default();
|
||||||
|
let file = BufReader::new(File::open(file).expect("Input file not found"));
|
||||||
|
println!("{}", solve_puzzle(file, solve));
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use std::io::Cursor;
|
||||||
|
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn first_puzzle_test_input() {
|
||||||
|
let reader = Cursor::new(include_str!("../input.test"));
|
||||||
|
assert_eq!(solve_puzzle(reader, SolvePuzzle::First), "CMZ");
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn second_puzzle_test_input() {
|
||||||
|
let reader = Cursor::new(include_str!("../input.test"));
|
||||||
|
assert_eq!(solve_puzzle(reader, SolvePuzzle::Second), "MCD");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue