part one working although scrappy
This commit is contained in:
@@ -0,0 +1 @@
|
|||||||
|
/target
|
||||||
Generated
+7
@@ -0,0 +1,7 @@
|
|||||||
|
# This file is automatically @generated by Cargo.
|
||||||
|
# It is not intended for manual editing.
|
||||||
|
version = 3
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "day-5"
|
||||||
|
version = "0.1.0"
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
[package]
|
||||||
|
name = "day-5"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
@@ -0,0 +1,513 @@
|
|||||||
|
[N] [Q] [N]
|
||||||
|
[R] [F] [Q] [G] [M]
|
||||||
|
[J] [Z] [T] [R] [H] [J]
|
||||||
|
[T] [H] [G] [R] [B] [N] [T]
|
||||||
|
[Z] [J] [J] [G] [F] [Z] [S] [M]
|
||||||
|
[B] [N] [N] [N] [Q] [W] [L] [Q] [S]
|
||||||
|
[D] [S] [R] [V] [T] [C] [C] [N] [G]
|
||||||
|
[F] [R] [C] [F] [L] [Q] [F] [D] [P]
|
||||||
|
1 2 3 4 5 6 7 8 9
|
||||||
|
|
||||||
|
move 3 from 9 to 4
|
||||||
|
move 2 from 5 to 2
|
||||||
|
move 8 from 1 to 9
|
||||||
|
move 4 from 7 to 1
|
||||||
|
move 5 from 3 to 8
|
||||||
|
move 3 from 3 to 7
|
||||||
|
move 11 from 8 to 3
|
||||||
|
move 7 from 3 to 6
|
||||||
|
move 2 from 5 to 9
|
||||||
|
move 3 from 1 to 6
|
||||||
|
move 6 from 2 to 4
|
||||||
|
move 6 from 7 to 5
|
||||||
|
move 1 from 6 to 1
|
||||||
|
move 1 from 9 to 4
|
||||||
|
move 16 from 4 to 9
|
||||||
|
move 2 from 1 to 2
|
||||||
|
move 1 from 4 to 6
|
||||||
|
move 1 from 3 to 7
|
||||||
|
move 2 from 2 to 4
|
||||||
|
move 1 from 7 to 9
|
||||||
|
move 22 from 9 to 8
|
||||||
|
move 1 from 6 to 3
|
||||||
|
move 18 from 8 to 5
|
||||||
|
move 3 from 8 to 2
|
||||||
|
move 3 from 2 to 9
|
||||||
|
move 13 from 6 to 7
|
||||||
|
move 1 from 6 to 7
|
||||||
|
move 4 from 3 to 6
|
||||||
|
move 2 from 6 to 3
|
||||||
|
move 2 from 3 to 8
|
||||||
|
move 3 from 7 to 8
|
||||||
|
move 14 from 5 to 2
|
||||||
|
move 3 from 2 to 5
|
||||||
|
move 2 from 8 to 4
|
||||||
|
move 4 from 8 to 6
|
||||||
|
move 4 from 6 to 4
|
||||||
|
move 11 from 5 to 2
|
||||||
|
move 3 from 9 to 2
|
||||||
|
move 7 from 2 to 3
|
||||||
|
move 11 from 7 to 2
|
||||||
|
move 1 from 5 to 7
|
||||||
|
move 5 from 6 to 8
|
||||||
|
move 30 from 2 to 7
|
||||||
|
move 23 from 7 to 2
|
||||||
|
move 4 from 3 to 4
|
||||||
|
move 3 from 9 to 6
|
||||||
|
move 4 from 8 to 2
|
||||||
|
move 1 from 8 to 2
|
||||||
|
move 2 from 7 to 9
|
||||||
|
move 4 from 2 to 3
|
||||||
|
move 1 from 5 to 9
|
||||||
|
move 6 from 4 to 7
|
||||||
|
move 5 from 3 to 6
|
||||||
|
move 1 from 3 to 6
|
||||||
|
move 1 from 9 to 2
|
||||||
|
move 16 from 2 to 5
|
||||||
|
move 7 from 7 to 6
|
||||||
|
move 9 from 2 to 1
|
||||||
|
move 2 from 1 to 4
|
||||||
|
move 8 from 5 to 3
|
||||||
|
move 5 from 7 to 4
|
||||||
|
move 1 from 9 to 8
|
||||||
|
move 9 from 3 to 6
|
||||||
|
move 25 from 6 to 8
|
||||||
|
move 2 from 9 to 5
|
||||||
|
move 3 from 4 to 2
|
||||||
|
move 7 from 4 to 1
|
||||||
|
move 1 from 8 to 7
|
||||||
|
move 6 from 5 to 2
|
||||||
|
move 11 from 8 to 5
|
||||||
|
move 1 from 7 to 9
|
||||||
|
move 10 from 1 to 2
|
||||||
|
move 6 from 5 to 1
|
||||||
|
move 1 from 4 to 2
|
||||||
|
move 13 from 8 to 1
|
||||||
|
move 17 from 1 to 2
|
||||||
|
move 5 from 1 to 9
|
||||||
|
move 1 from 8 to 4
|
||||||
|
move 1 from 1 to 3
|
||||||
|
move 1 from 3 to 6
|
||||||
|
move 1 from 9 to 3
|
||||||
|
move 2 from 4 to 5
|
||||||
|
move 1 from 4 to 8
|
||||||
|
move 1 from 9 to 1
|
||||||
|
move 8 from 5 to 7
|
||||||
|
move 1 from 8 to 1
|
||||||
|
move 7 from 7 to 6
|
||||||
|
move 2 from 1 to 2
|
||||||
|
move 1 from 3 to 6
|
||||||
|
move 2 from 5 to 4
|
||||||
|
move 8 from 2 to 1
|
||||||
|
move 1 from 9 to 7
|
||||||
|
move 1 from 5 to 1
|
||||||
|
move 2 from 7 to 3
|
||||||
|
move 2 from 3 to 7
|
||||||
|
move 2 from 7 to 8
|
||||||
|
move 2 from 1 to 5
|
||||||
|
move 3 from 9 to 2
|
||||||
|
move 2 from 8 to 9
|
||||||
|
move 1 from 9 to 2
|
||||||
|
move 1 from 9 to 8
|
||||||
|
move 1 from 8 to 7
|
||||||
|
move 6 from 6 to 5
|
||||||
|
move 1 from 6 to 2
|
||||||
|
move 2 from 4 to 5
|
||||||
|
move 2 from 6 to 8
|
||||||
|
move 1 from 7 to 1
|
||||||
|
move 2 from 8 to 4
|
||||||
|
move 11 from 2 to 5
|
||||||
|
move 18 from 5 to 6
|
||||||
|
move 6 from 2 to 6
|
||||||
|
move 10 from 2 to 7
|
||||||
|
move 1 from 4 to 3
|
||||||
|
move 7 from 2 to 8
|
||||||
|
move 7 from 1 to 4
|
||||||
|
move 6 from 7 to 8
|
||||||
|
move 2 from 7 to 3
|
||||||
|
move 8 from 4 to 7
|
||||||
|
move 1 from 1 to 3
|
||||||
|
move 1 from 2 to 1
|
||||||
|
move 4 from 7 to 1
|
||||||
|
move 4 from 1 to 3
|
||||||
|
move 2 from 3 to 9
|
||||||
|
move 2 from 5 to 4
|
||||||
|
move 1 from 2 to 1
|
||||||
|
move 2 from 1 to 5
|
||||||
|
move 1 from 3 to 1
|
||||||
|
move 2 from 5 to 2
|
||||||
|
move 1 from 2 to 6
|
||||||
|
move 5 from 7 to 4
|
||||||
|
move 1 from 1 to 2
|
||||||
|
move 10 from 8 to 1
|
||||||
|
move 2 from 2 to 7
|
||||||
|
move 2 from 7 to 1
|
||||||
|
move 1 from 7 to 9
|
||||||
|
move 1 from 5 to 7
|
||||||
|
move 3 from 8 to 7
|
||||||
|
move 3 from 3 to 6
|
||||||
|
move 3 from 7 to 1
|
||||||
|
move 5 from 1 to 4
|
||||||
|
move 1 from 7 to 6
|
||||||
|
move 22 from 6 to 3
|
||||||
|
move 2 from 6 to 2
|
||||||
|
move 19 from 3 to 4
|
||||||
|
move 15 from 4 to 8
|
||||||
|
move 9 from 8 to 4
|
||||||
|
move 5 from 6 to 8
|
||||||
|
move 2 from 2 to 8
|
||||||
|
move 2 from 9 to 4
|
||||||
|
move 7 from 1 to 5
|
||||||
|
move 1 from 1 to 3
|
||||||
|
move 1 from 9 to 7
|
||||||
|
move 5 from 8 to 3
|
||||||
|
move 4 from 8 to 1
|
||||||
|
move 5 from 1 to 5
|
||||||
|
move 10 from 4 to 3
|
||||||
|
move 3 from 4 to 2
|
||||||
|
move 2 from 8 to 3
|
||||||
|
move 12 from 4 to 8
|
||||||
|
move 1 from 7 to 6
|
||||||
|
move 3 from 2 to 9
|
||||||
|
move 2 from 4 to 5
|
||||||
|
move 5 from 3 to 7
|
||||||
|
move 1 from 7 to 2
|
||||||
|
move 1 from 1 to 6
|
||||||
|
move 1 from 7 to 2
|
||||||
|
move 15 from 3 to 8
|
||||||
|
move 10 from 5 to 6
|
||||||
|
move 3 from 7 to 8
|
||||||
|
move 1 from 5 to 8
|
||||||
|
move 1 from 2 to 3
|
||||||
|
move 7 from 6 to 1
|
||||||
|
move 3 from 5 to 3
|
||||||
|
move 5 from 3 to 5
|
||||||
|
move 3 from 5 to 4
|
||||||
|
move 2 from 4 to 9
|
||||||
|
move 2 from 3 to 5
|
||||||
|
move 14 from 8 to 5
|
||||||
|
move 1 from 9 to 1
|
||||||
|
move 16 from 5 to 3
|
||||||
|
move 16 from 3 to 6
|
||||||
|
move 2 from 9 to 8
|
||||||
|
move 21 from 6 to 7
|
||||||
|
move 2 from 1 to 7
|
||||||
|
move 1 from 2 to 7
|
||||||
|
move 4 from 1 to 7
|
||||||
|
move 1 from 4 to 7
|
||||||
|
move 16 from 8 to 5
|
||||||
|
move 20 from 7 to 4
|
||||||
|
move 1 from 9 to 8
|
||||||
|
move 1 from 7 to 4
|
||||||
|
move 3 from 8 to 6
|
||||||
|
move 1 from 9 to 1
|
||||||
|
move 2 from 1 to 4
|
||||||
|
move 2 from 5 to 2
|
||||||
|
move 5 from 4 to 7
|
||||||
|
move 1 from 6 to 9
|
||||||
|
move 11 from 7 to 6
|
||||||
|
move 2 from 7 to 5
|
||||||
|
move 12 from 6 to 2
|
||||||
|
move 13 from 2 to 1
|
||||||
|
move 1 from 2 to 3
|
||||||
|
move 1 from 8 to 4
|
||||||
|
move 6 from 4 to 1
|
||||||
|
move 1 from 6 to 7
|
||||||
|
move 7 from 4 to 9
|
||||||
|
move 8 from 9 to 3
|
||||||
|
move 2 from 8 to 3
|
||||||
|
move 10 from 5 to 4
|
||||||
|
move 11 from 1 to 8
|
||||||
|
move 1 from 1 to 3
|
||||||
|
move 5 from 1 to 8
|
||||||
|
move 8 from 5 to 6
|
||||||
|
move 13 from 8 to 9
|
||||||
|
move 12 from 3 to 5
|
||||||
|
move 12 from 5 to 9
|
||||||
|
move 1 from 7 to 9
|
||||||
|
move 1 from 1 to 2
|
||||||
|
move 1 from 1 to 4
|
||||||
|
move 3 from 8 to 5
|
||||||
|
move 1 from 2 to 5
|
||||||
|
move 1 from 4 to 8
|
||||||
|
move 5 from 6 to 3
|
||||||
|
move 1 from 8 to 4
|
||||||
|
move 13 from 4 to 7
|
||||||
|
move 3 from 7 to 6
|
||||||
|
move 1 from 1 to 4
|
||||||
|
move 4 from 4 to 2
|
||||||
|
move 1 from 6 to 3
|
||||||
|
move 2 from 5 to 9
|
||||||
|
move 2 from 5 to 9
|
||||||
|
move 1 from 4 to 8
|
||||||
|
move 6 from 9 to 4
|
||||||
|
move 22 from 9 to 2
|
||||||
|
move 8 from 7 to 4
|
||||||
|
move 7 from 2 to 1
|
||||||
|
move 3 from 3 to 8
|
||||||
|
move 2 from 6 to 7
|
||||||
|
move 14 from 4 to 2
|
||||||
|
move 2 from 6 to 1
|
||||||
|
move 1 from 8 to 7
|
||||||
|
move 3 from 3 to 9
|
||||||
|
move 1 from 8 to 4
|
||||||
|
move 3 from 1 to 9
|
||||||
|
move 3 from 9 to 3
|
||||||
|
move 31 from 2 to 8
|
||||||
|
move 8 from 8 to 4
|
||||||
|
move 1 from 9 to 1
|
||||||
|
move 9 from 4 to 5
|
||||||
|
move 7 from 5 to 6
|
||||||
|
move 2 from 5 to 1
|
||||||
|
move 1 from 2 to 1
|
||||||
|
move 1 from 7 to 9
|
||||||
|
move 1 from 2 to 9
|
||||||
|
move 2 from 6 to 4
|
||||||
|
move 4 from 7 to 4
|
||||||
|
move 4 from 9 to 8
|
||||||
|
move 6 from 4 to 1
|
||||||
|
move 1 from 3 to 2
|
||||||
|
move 1 from 3 to 6
|
||||||
|
move 1 from 9 to 2
|
||||||
|
move 2 from 2 to 4
|
||||||
|
move 1 from 9 to 1
|
||||||
|
move 1 from 3 to 1
|
||||||
|
move 17 from 1 to 9
|
||||||
|
move 4 from 6 to 2
|
||||||
|
move 1 from 9 to 7
|
||||||
|
move 4 from 9 to 7
|
||||||
|
move 1 from 8 to 4
|
||||||
|
move 3 from 7 to 6
|
||||||
|
move 1 from 4 to 9
|
||||||
|
move 10 from 8 to 5
|
||||||
|
move 6 from 6 to 5
|
||||||
|
move 1 from 7 to 2
|
||||||
|
move 1 from 1 to 4
|
||||||
|
move 1 from 4 to 5
|
||||||
|
move 9 from 8 to 3
|
||||||
|
move 4 from 3 to 9
|
||||||
|
move 1 from 4 to 6
|
||||||
|
move 1 from 6 to 5
|
||||||
|
move 1 from 4 to 8
|
||||||
|
move 2 from 3 to 8
|
||||||
|
move 1 from 3 to 8
|
||||||
|
move 3 from 8 to 9
|
||||||
|
move 5 from 2 to 9
|
||||||
|
move 1 from 7 to 9
|
||||||
|
move 5 from 8 to 7
|
||||||
|
move 3 from 8 to 4
|
||||||
|
move 2 from 8 to 5
|
||||||
|
move 24 from 9 to 7
|
||||||
|
move 1 from 3 to 5
|
||||||
|
move 2 from 9 to 4
|
||||||
|
move 22 from 7 to 9
|
||||||
|
move 1 from 3 to 4
|
||||||
|
move 6 from 4 to 6
|
||||||
|
move 4 from 6 to 7
|
||||||
|
move 10 from 5 to 3
|
||||||
|
move 8 from 3 to 5
|
||||||
|
move 2 from 3 to 4
|
||||||
|
move 2 from 4 to 6
|
||||||
|
move 10 from 7 to 3
|
||||||
|
move 21 from 9 to 1
|
||||||
|
move 2 from 3 to 4
|
||||||
|
move 4 from 3 to 8
|
||||||
|
move 2 from 4 to 8
|
||||||
|
move 1 from 7 to 8
|
||||||
|
move 4 from 6 to 8
|
||||||
|
move 3 from 5 to 4
|
||||||
|
move 8 from 8 to 2
|
||||||
|
move 18 from 1 to 6
|
||||||
|
move 3 from 4 to 1
|
||||||
|
move 1 from 2 to 8
|
||||||
|
move 5 from 1 to 8
|
||||||
|
move 3 from 3 to 6
|
||||||
|
move 3 from 2 to 9
|
||||||
|
move 3 from 8 to 1
|
||||||
|
move 11 from 5 to 2
|
||||||
|
move 3 from 8 to 7
|
||||||
|
move 10 from 2 to 9
|
||||||
|
move 1 from 7 to 9
|
||||||
|
move 3 from 8 to 1
|
||||||
|
move 2 from 7 to 8
|
||||||
|
move 6 from 9 to 5
|
||||||
|
move 4 from 2 to 8
|
||||||
|
move 8 from 5 to 8
|
||||||
|
move 1 from 3 to 7
|
||||||
|
move 2 from 5 to 6
|
||||||
|
move 3 from 1 to 6
|
||||||
|
move 2 from 1 to 6
|
||||||
|
move 4 from 9 to 8
|
||||||
|
move 4 from 9 to 8
|
||||||
|
move 1 from 9 to 4
|
||||||
|
move 9 from 6 to 9
|
||||||
|
move 16 from 6 to 9
|
||||||
|
move 1 from 4 to 7
|
||||||
|
move 1 from 2 to 9
|
||||||
|
move 5 from 8 to 5
|
||||||
|
move 4 from 5 to 1
|
||||||
|
move 6 from 1 to 7
|
||||||
|
move 12 from 8 to 4
|
||||||
|
move 5 from 8 to 1
|
||||||
|
move 6 from 9 to 3
|
||||||
|
move 1 from 1 to 6
|
||||||
|
move 2 from 5 to 8
|
||||||
|
move 12 from 4 to 7
|
||||||
|
move 2 from 8 to 4
|
||||||
|
move 1 from 4 to 8
|
||||||
|
move 1 from 7 to 6
|
||||||
|
move 1 from 4 to 6
|
||||||
|
move 14 from 7 to 1
|
||||||
|
move 3 from 3 to 2
|
||||||
|
move 7 from 9 to 7
|
||||||
|
move 3 from 3 to 5
|
||||||
|
move 15 from 1 to 2
|
||||||
|
move 2 from 5 to 9
|
||||||
|
move 1 from 8 to 9
|
||||||
|
move 16 from 9 to 1
|
||||||
|
move 1 from 5 to 9
|
||||||
|
move 5 from 6 to 2
|
||||||
|
move 12 from 7 to 2
|
||||||
|
move 20 from 2 to 6
|
||||||
|
move 10 from 2 to 6
|
||||||
|
move 11 from 1 to 7
|
||||||
|
move 2 from 7 to 4
|
||||||
|
move 2 from 2 to 5
|
||||||
|
move 1 from 2 to 3
|
||||||
|
move 2 from 5 to 6
|
||||||
|
move 1 from 9 to 5
|
||||||
|
move 1 from 5 to 9
|
||||||
|
move 25 from 6 to 7
|
||||||
|
move 25 from 7 to 6
|
||||||
|
move 1 from 3 to 1
|
||||||
|
move 1 from 2 to 5
|
||||||
|
move 1 from 4 to 3
|
||||||
|
move 33 from 6 to 3
|
||||||
|
move 1 from 9 to 5
|
||||||
|
move 2 from 3 to 5
|
||||||
|
move 28 from 3 to 9
|
||||||
|
move 5 from 1 to 9
|
||||||
|
move 4 from 1 to 8
|
||||||
|
move 2 from 3 to 2
|
||||||
|
move 2 from 8 to 1
|
||||||
|
move 1 from 4 to 6
|
||||||
|
move 3 from 5 to 3
|
||||||
|
move 1 from 2 to 4
|
||||||
|
move 2 from 2 to 8
|
||||||
|
move 1 from 6 to 5
|
||||||
|
move 30 from 9 to 2
|
||||||
|
move 7 from 2 to 6
|
||||||
|
move 1 from 1 to 3
|
||||||
|
move 1 from 1 to 7
|
||||||
|
move 1 from 5 to 6
|
||||||
|
move 1 from 5 to 4
|
||||||
|
move 5 from 7 to 4
|
||||||
|
move 4 from 7 to 3
|
||||||
|
move 1 from 3 to 7
|
||||||
|
move 3 from 8 to 7
|
||||||
|
move 8 from 3 to 1
|
||||||
|
move 3 from 1 to 7
|
||||||
|
move 4 from 1 to 4
|
||||||
|
move 3 from 9 to 8
|
||||||
|
move 8 from 6 to 2
|
||||||
|
move 18 from 2 to 6
|
||||||
|
move 6 from 7 to 2
|
||||||
|
move 1 from 1 to 7
|
||||||
|
move 3 from 4 to 7
|
||||||
|
move 5 from 4 to 8
|
||||||
|
move 2 from 8 to 7
|
||||||
|
move 7 from 2 to 5
|
||||||
|
move 5 from 2 to 7
|
||||||
|
move 10 from 7 to 9
|
||||||
|
move 5 from 5 to 9
|
||||||
|
move 1 from 3 to 9
|
||||||
|
move 5 from 2 to 6
|
||||||
|
move 3 from 7 to 9
|
||||||
|
move 2 from 5 to 6
|
||||||
|
move 2 from 2 to 9
|
||||||
|
move 2 from 8 to 7
|
||||||
|
move 1 from 4 to 5
|
||||||
|
move 8 from 9 to 2
|
||||||
|
move 5 from 6 to 7
|
||||||
|
move 4 from 9 to 1
|
||||||
|
move 4 from 8 to 9
|
||||||
|
move 12 from 9 to 1
|
||||||
|
move 16 from 1 to 4
|
||||||
|
move 12 from 6 to 2
|
||||||
|
move 3 from 7 to 6
|
||||||
|
move 3 from 7 to 3
|
||||||
|
move 1 from 9 to 4
|
||||||
|
move 12 from 4 to 5
|
||||||
|
move 2 from 4 to 3
|
||||||
|
move 1 from 7 to 1
|
||||||
|
move 4 from 4 to 3
|
||||||
|
move 1 from 8 to 2
|
||||||
|
move 6 from 3 to 1
|
||||||
|
move 1 from 1 to 8
|
||||||
|
move 7 from 2 to 5
|
||||||
|
move 1 from 8 to 1
|
||||||
|
move 4 from 5 to 4
|
||||||
|
move 5 from 5 to 9
|
||||||
|
move 1 from 3 to 8
|
||||||
|
move 1 from 9 to 7
|
||||||
|
move 1 from 8 to 1
|
||||||
|
move 4 from 5 to 6
|
||||||
|
move 5 from 5 to 9
|
||||||
|
move 7 from 9 to 5
|
||||||
|
move 11 from 6 to 4
|
||||||
|
move 1 from 9 to 4
|
||||||
|
move 1 from 9 to 1
|
||||||
|
move 1 from 7 to 2
|
||||||
|
move 9 from 4 to 3
|
||||||
|
move 5 from 1 to 9
|
||||||
|
move 3 from 5 to 1
|
||||||
|
move 5 from 9 to 8
|
||||||
|
move 8 from 3 to 1
|
||||||
|
move 2 from 5 to 3
|
||||||
|
move 7 from 2 to 5
|
||||||
|
move 1 from 6 to 4
|
||||||
|
move 3 from 5 to 9
|
||||||
|
move 3 from 6 to 9
|
||||||
|
move 3 from 2 to 9
|
||||||
|
move 5 from 3 to 6
|
||||||
|
move 1 from 9 to 5
|
||||||
|
move 4 from 8 to 3
|
||||||
|
move 1 from 8 to 4
|
||||||
|
move 8 from 1 to 3
|
||||||
|
move 12 from 3 to 7
|
||||||
|
move 1 from 2 to 4
|
||||||
|
move 3 from 2 to 8
|
||||||
|
move 6 from 7 to 6
|
||||||
|
move 4 from 5 to 7
|
||||||
|
move 5 from 9 to 7
|
||||||
|
move 2 from 9 to 2
|
||||||
|
move 1 from 9 to 5
|
||||||
|
move 4 from 5 to 1
|
||||||
|
move 1 from 5 to 4
|
||||||
|
move 14 from 7 to 6
|
||||||
|
move 1 from 1 to 7
|
||||||
|
move 10 from 4 to 5
|
||||||
|
move 4 from 1 to 2
|
||||||
|
move 1 from 4 to 6
|
||||||
|
move 1 from 7 to 4
|
||||||
|
move 17 from 6 to 8
|
||||||
|
move 1 from 5 to 7
|
||||||
|
move 10 from 5 to 4
|
||||||
|
move 1 from 2 to 6
|
||||||
|
move 4 from 2 to 6
|
||||||
|
move 13 from 6 to 1
|
||||||
|
move 9 from 4 to 3
|
||||||
|
move 2 from 2 to 4
|
||||||
|
move 1 from 6 to 7
|
||||||
|
move 1 from 4 to 3
|
||||||
|
move 8 from 3 to 5
|
||||||
|
move 1 from 3 to 4
|
||||||
|
move 17 from 1 to 3
|
||||||
|
move 15 from 3 to 7
|
||||||
|
move 3 from 4 to 1
|
||||||
|
move 6 from 8 to 9
|
||||||
|
move 6 from 9 to 1
|
||||||
|
move 2 from 3 to 1
|
||||||
|
move 2 from 5 to 2
|
||||||
|
move 6 from 7 to 6
|
||||||
|
move 3 from 6 to 9
|
||||||
+266
@@ -0,0 +1,266 @@
|
|||||||
|
use std::collections::HashMap;
|
||||||
|
|
||||||
|
// enum that converts string letter to enum rep
|
||||||
|
// all capital letters in alphabet
|
||||||
|
#[derive(Debug, Copy, Clone)]
|
||||||
|
enum Crate {
|
||||||
|
A,
|
||||||
|
B,
|
||||||
|
C,
|
||||||
|
D,
|
||||||
|
E,
|
||||||
|
F,
|
||||||
|
G,
|
||||||
|
H,
|
||||||
|
I,
|
||||||
|
J,
|
||||||
|
K,
|
||||||
|
L,
|
||||||
|
M,
|
||||||
|
N,
|
||||||
|
O,
|
||||||
|
P,
|
||||||
|
Q,
|
||||||
|
R,
|
||||||
|
S,
|
||||||
|
T,
|
||||||
|
U,
|
||||||
|
V,
|
||||||
|
W,
|
||||||
|
X,
|
||||||
|
Y,
|
||||||
|
Z,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl From<char> for Crate {
|
||||||
|
fn from(value: char) -> Self {
|
||||||
|
match value {
|
||||||
|
'A' => Crate::A,
|
||||||
|
'B' => Crate::B,
|
||||||
|
'C' => Crate::C,
|
||||||
|
'D' => Crate::D,
|
||||||
|
'E' => Crate::E,
|
||||||
|
'F' => Crate::F,
|
||||||
|
'G' => Crate::G,
|
||||||
|
'H' => Crate::H,
|
||||||
|
'I' => Crate::I,
|
||||||
|
'J' => Crate::J,
|
||||||
|
'K' => Crate::K,
|
||||||
|
'L' => Crate::L,
|
||||||
|
'M' => Crate::M,
|
||||||
|
'N' => Crate::N,
|
||||||
|
'O' => Crate::O,
|
||||||
|
'P' => Crate::P,
|
||||||
|
'Q' => Crate::Q,
|
||||||
|
'R' => Crate::R,
|
||||||
|
'S' => Crate::S,
|
||||||
|
'T' => Crate::T,
|
||||||
|
'U' => Crate::U,
|
||||||
|
'V' => Crate::V,
|
||||||
|
'W' => Crate::W,
|
||||||
|
'X' => Crate::X,
|
||||||
|
'Y' => Crate::Y,
|
||||||
|
'Z' => Crate::Z,
|
||||||
|
_ => panic!("Invalid crate letter"),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// the stack number to the crates in that stack
|
||||||
|
// crates are in order from bottom to top
|
||||||
|
type Stacks = HashMap<u32, Vec<Crate>>;
|
||||||
|
|
||||||
|
fn get_stacks() -> Stacks {
|
||||||
|
let mut stacks: Stacks = HashMap::new();
|
||||||
|
|
||||||
|
stacks.insert(
|
||||||
|
1,
|
||||||
|
vec![
|
||||||
|
Crate::F,
|
||||||
|
Crate::D,
|
||||||
|
Crate::B,
|
||||||
|
Crate::Z,
|
||||||
|
Crate::T,
|
||||||
|
Crate::J,
|
||||||
|
Crate::R,
|
||||||
|
Crate::N,
|
||||||
|
],
|
||||||
|
);
|
||||||
|
stacks.insert(2, vec![Crate::R, Crate::S, Crate::N, Crate::J, Crate::H]);
|
||||||
|
stacks.insert(
|
||||||
|
3,
|
||||||
|
vec![
|
||||||
|
Crate::C,
|
||||||
|
Crate::R,
|
||||||
|
Crate::N,
|
||||||
|
Crate::J,
|
||||||
|
Crate::G,
|
||||||
|
Crate::Z,
|
||||||
|
Crate::F,
|
||||||
|
Crate::Q,
|
||||||
|
],
|
||||||
|
);
|
||||||
|
stacks.insert(
|
||||||
|
4,
|
||||||
|
vec![
|
||||||
|
Crate::F,
|
||||||
|
Crate::V,
|
||||||
|
Crate::N,
|
||||||
|
Crate::G,
|
||||||
|
Crate::R,
|
||||||
|
Crate::T,
|
||||||
|
Crate::Q,
|
||||||
|
],
|
||||||
|
);
|
||||||
|
stacks.insert(5, vec![Crate::L, Crate::T, Crate::Q, Crate::F]);
|
||||||
|
stacks.insert(
|
||||||
|
6,
|
||||||
|
vec![
|
||||||
|
Crate::Q,
|
||||||
|
Crate::C,
|
||||||
|
Crate::W,
|
||||||
|
Crate::Z,
|
||||||
|
Crate::B,
|
||||||
|
Crate::R,
|
||||||
|
Crate::G,
|
||||||
|
Crate::N,
|
||||||
|
],
|
||||||
|
);
|
||||||
|
stacks.insert(
|
||||||
|
7,
|
||||||
|
vec![
|
||||||
|
Crate::F,
|
||||||
|
Crate::C,
|
||||||
|
Crate::L,
|
||||||
|
Crate::S,
|
||||||
|
Crate::N,
|
||||||
|
Crate::H,
|
||||||
|
Crate::M,
|
||||||
|
],
|
||||||
|
);
|
||||||
|
stacks.insert(
|
||||||
|
8,
|
||||||
|
vec![Crate::D, Crate::N, Crate::Q, Crate::M, Crate::T, Crate::J],
|
||||||
|
);
|
||||||
|
stacks.insert(9, vec![Crate::P, Crate::G, Crate::S]);
|
||||||
|
|
||||||
|
stacks
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug)]
|
||||||
|
struct Move {
|
||||||
|
number_crates: u32,
|
||||||
|
from_stack: u32,
|
||||||
|
to_stack: u32,
|
||||||
|
}
|
||||||
|
|
||||||
|
fn read_moves() -> Vec<Move> {
|
||||||
|
let input = std::fs::read_to_string("input.txt").unwrap();
|
||||||
|
let mut moves: Vec<Move> = Vec::new();
|
||||||
|
|
||||||
|
for line in input.lines().skip(10) {
|
||||||
|
let mut split = line.split_whitespace();
|
||||||
|
split.next().unwrap(); // "move"
|
||||||
|
let number_crates = split.next().unwrap().parse::<u32>().unwrap();
|
||||||
|
split.next().unwrap(); // "from"
|
||||||
|
let from_stack = split.next().unwrap().parse::<u32>().unwrap();
|
||||||
|
split.next().unwrap(); // "to"
|
||||||
|
let to_stack = split.next().unwrap().parse::<u32>().unwrap();
|
||||||
|
|
||||||
|
moves.push(Move {
|
||||||
|
number_crates,
|
||||||
|
from_stack,
|
||||||
|
to_stack,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
moves
|
||||||
|
}
|
||||||
|
|
||||||
|
// part 1: get the last crate in each stack
|
||||||
|
fn perform_moves(stacks: &mut Stacks, moves: Vec<Move>) {
|
||||||
|
for m in moves {
|
||||||
|
let from_stack_crates = stacks.get_mut(&m.from_stack).unwrap();
|
||||||
|
// remove the last m.number_crates from the stack
|
||||||
|
let mut crates_to_move =
|
||||||
|
from_stack_crates.split_off(from_stack_crates.len() - m.number_crates as usize);
|
||||||
|
|
||||||
|
// reverse the crates so that the first one taken is on the bottom
|
||||||
|
crates_to_move.reverse();
|
||||||
|
|
||||||
|
// add the crates to the to_stack
|
||||||
|
let to_stack_crates = stacks.get_mut(&m.to_stack).unwrap();
|
||||||
|
to_stack_crates.append(&mut crates_to_move);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// do not use, arbitrary order
|
||||||
|
fn get_the_last_one_in_each_stack(stacks: &Stacks) -> Vec<&Crate> {
|
||||||
|
let mut last_crates: Vec<&Crate> = Vec::new();
|
||||||
|
|
||||||
|
for (stack, crates) in stacks {
|
||||||
|
println!(
|
||||||
|
"stack: {:?}, last_crate: {:?}",
|
||||||
|
stack,
|
||||||
|
crates.last().unwrap()
|
||||||
|
);
|
||||||
|
last_crates.push(crates.last().unwrap());
|
||||||
|
}
|
||||||
|
|
||||||
|
last_crates
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
println!("Hello, world!");
|
||||||
|
|
||||||
|
let moves = read_moves();
|
||||||
|
let mut stacks = get_stacks();
|
||||||
|
println!("before moves: {:?}", stacks);
|
||||||
|
|
||||||
|
perform_moves(&mut stacks, moves);
|
||||||
|
get_the_last_one_in_each_stack(&stacks);
|
||||||
|
// QNNTGTPVN
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
// todo: finish writing helper to test equality
|
||||||
|
#[test]
|
||||||
|
fn test() {
|
||||||
|
let mut stacks = HashMap::new();
|
||||||
|
stacks.insert(1, vec![Crate::Z, Crate::N]);
|
||||||
|
stacks.insert(2, vec![Crate::M, Crate::C, Crate::D]);
|
||||||
|
stacks.insert(3, vec![Crate::P]);
|
||||||
|
|
||||||
|
let moves = vec![
|
||||||
|
Move {
|
||||||
|
number_crates: 1,
|
||||||
|
from_stack: 2,
|
||||||
|
to_stack: 1,
|
||||||
|
},
|
||||||
|
Move {
|
||||||
|
number_crates: 3,
|
||||||
|
from_stack: 1,
|
||||||
|
to_stack: 3,
|
||||||
|
},
|
||||||
|
Move {
|
||||||
|
number_crates: 2,
|
||||||
|
from_stack: 2,
|
||||||
|
to_stack: 1,
|
||||||
|
},
|
||||||
|
Move {
|
||||||
|
number_crates: 1,
|
||||||
|
from_stack: 1,
|
||||||
|
to_stack: 2,
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
println!("before moves {:?}", &stacks);
|
||||||
|
perform_moves(&mut stacks, moves);
|
||||||
|
eprintln!("after moves {:?}", &stacks);
|
||||||
|
|
||||||
|
assert_eq!(1, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user