diff --git a/day9/Cargo.lock b/day9/Cargo.lock new file mode 100644 index 0000000..f5578cf --- /dev/null +++ b/day9/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "day9" +version = "0.1.0" diff --git a/day9/Cargo.toml b/day9/Cargo.toml new file mode 100644 index 0000000..b5e5273 --- /dev/null +++ b/day9/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "day9" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/day9/input.txt b/day9/input.txt new file mode 100644 index 0000000..ef4f66f --- /dev/null +++ b/day9/input.txt @@ -0,0 +1,2000 @@ +L 1 +D 1 +U 2 +R 1 +U 1 +L 2 +D 1 +R 2 +D 2 +R 2 +L 2 +D 2 +L 2 +R 2 +D 1 +R 1 +L 2 +D 1 +U 2 +R 2 +D 1 +L 2 +U 2 +R 2 +D 1 +U 2 +R 2 +U 1 +D 2 +U 1 +R 2 +L 1 +U 1 +L 2 +R 1 +L 1 +R 1 +L 2 +R 1 +D 1 +R 1 +L 1 +D 1 +U 2 +L 2 +D 2 +U 1 +L 1 +U 1 +L 1 +R 1 +D 1 +L 1 +U 2 +D 2 +L 2 +D 1 +R 1 +L 2 +D 1 +R 2 +D 1 +L 2 +U 1 +R 1 +U 2 +D 1 +U 1 +D 2 +R 1 +L 2 +D 1 +U 1 +D 1 +U 1 +L 1 +R 1 +D 1 +R 2 +U 1 +L 1 +U 1 +R 1 +L 2 +R 1 +D 2 +U 1 +R 1 +L 2 +R 1 +L 2 +D 2 +R 2 +U 1 +L 2 +R 2 +U 2 +L 1 +R 2 +U 1 +R 2 +L 1 +U 2 +D 2 +L 2 +U 1 +L 1 +U 2 +L 2 +R 2 +D 1 +R 2 +D 1 +R 2 +D 2 +R 1 +U 1 +R 2 +D 2 +U 2 +L 2 +U 3 +D 2 +L 1 +D 1 +L 3 +U 3 +R 1 +D 2 +R 1 +U 1 +R 1 +L 2 +D 1 +R 1 +D 2 +R 1 +L 2 +D 2 +R 2 +L 1 +R 2 +L 1 +D 1 +U 3 +L 3 +R 1 +D 3 +L 1 +U 3 +R 1 +U 3 +L 1 +R 3 +D 3 +L 3 +U 1 +R 2 +U 1 +R 1 +L 1 +R 2 +U 1 +D 2 +R 3 +D 1 +L 1 +U 2 +R 2 +L 1 +D 3 +R 3 +U 1 +D 3 +L 1 +D 1 +L 2 +U 3 +D 1 +R 1 +U 1 +R 2 +D 3 +U 3 +D 2 +L 1 +R 1 +D 1 +R 1 +D 2 +L 2 +U 2 +R 2 +D 3 +R 1 +L 2 +U 1 +R 1 +U 2 +R 3 +U 2 +L 1 +U 3 +L 2 +D 3 +U 1 +L 1 +D 3 +R 1 +D 3 +U 2 +D 3 +L 1 +D 1 +R 3 +L 1 +D 3 +R 1 +L 1 +D 1 +L 2 +U 3 +L 4 +R 3 +L 2 +R 4 +D 4 +U 4 +L 4 +D 4 +U 3 +R 4 +D 1 +R 2 +D 2 +R 2 +U 2 +R 4 +D 1 +U 1 +R 3 +U 3 +D 4 +R 1 +U 1 +R 3 +L 4 +D 3 +R 4 +U 1 +R 4 +L 3 +U 4 +D 2 +U 2 +L 2 +U 2 +L 4 +D 1 +R 4 +D 3 +L 3 +R 2 +U 4 +D 3 +L 3 +U 1 +R 1 +D 3 +L 3 +U 1 +R 3 +L 2 +R 3 +D 4 +L 4 +R 1 +D 1 +U 3 +D 3 +U 1 +L 2 +D 2 +L 2 +D 2 +U 2 +L 1 +U 4 +R 2 +L 3 +R 2 +D 3 +U 2 +D 1 +L 2 +D 1 +L 2 +D 1 +L 3 +D 1 +R 4 +U 1 +L 4 +U 4 +R 3 +L 3 +U 3 +L 4 +R 3 +U 3 +L 4 +U 4 +L 2 +R 4 +L 4 +D 4 +R 1 +L 4 +U 1 +R 1 +L 1 +R 3 +D 1 +U 2 +L 1 +D 1 +U 2 +L 1 +U 2 +D 2 +U 3 +D 2 +L 3 +R 3 +U 2 +D 1 +R 4 +L 2 +D 2 +R 5 +L 2 +U 4 +R 4 +D 5 +R 4 +D 1 +U 1 +D 4 +L 5 +U 2 +D 3 +R 5 +L 4 +R 1 +D 4 +U 3 +R 5 +U 1 +D 2 +L 3 +U 5 +R 3 +U 1 +R 2 +D 4 +L 4 +U 4 +R 3 +L 1 +R 2 +U 2 +D 4 +L 3 +D 1 +R 4 +L 2 +R 5 +D 2 +U 2 +L 2 +R 3 +L 1 +R 5 +L 2 +R 5 +D 4 +U 5 +L 2 +U 2 +L 1 +U 1 +D 3 +U 5 +R 1 +L 2 +U 4 +R 4 +D 5 +U 1 +R 5 +L 1 +D 3 +L 4 +D 3 +R 2 +D 4 +L 2 +R 1 +D 1 +L 4 +U 4 +D 5 +L 5 +R 5 +L 5 +U 3 +R 1 +U 5 +L 3 +R 3 +D 5 +R 3 +U 4 +D 1 +U 3 +L 1 +R 3 +U 3 +R 2 +D 5 +L 5 +U 4 +R 3 +D 3 +L 1 +D 1 +U 3 +L 3 +R 5 +U 3 +L 2 +D 5 +U 5 +R 5 +U 3 +R 5 +L 6 +D 5 +R 2 +U 4 +D 3 +L 4 +D 4 +R 4 +D 1 +U 1 +R 1 +D 3 +U 1 +R 4 +D 6 +L 3 +U 6 +D 4 +R 6 +D 4 +L 1 +D 1 +R 2 +U 6 +D 1 +R 6 +D 4 +L 2 +D 6 +R 1 +L 3 +R 3 +L 5 +D 6 +R 6 +L 2 +U 1 +R 3 +L 5 +U 6 +R 2 +U 2 +D 3 +L 1 +D 2 +L 5 +R 1 +L 4 +D 3 +R 6 +U 3 +R 3 +D 5 +L 5 +R 5 +D 1 +R 5 +U 1 +R 2 +L 3 +D 2 +R 4 +U 1 +D 1 +R 4 +U 5 +R 6 +L 3 +R 1 +D 4 +L 1 +D 4 +U 1 +R 1 +U 5 +R 2 +D 3 +R 5 +D 5 +R 4 +L 2 +D 4 +R 1 +D 6 +R 4 +U 1 +D 4 +U 5 +R 4 +D 1 +U 3 +R 1 +D 6 +R 5 +U 2 +R 3 +L 3 +D 4 +R 3 +L 2 +U 4 +R 2 +U 1 +L 3 +U 6 +L 5 +R 5 +D 5 +L 2 +U 6 +L 3 +R 5 +U 6 +L 1 +R 1 +D 7 +R 3 +L 4 +R 4 +L 6 +R 2 +U 3 +L 7 +D 4 +R 4 +L 6 +U 4 +L 2 +R 1 +D 2 +L 2 +D 2 +L 4 +R 1 +L 3 +R 5 +D 2 +U 2 +R 1 +D 7 +L 7 +D 7 +U 3 +R 7 +L 4 +U 6 +R 1 +U 5 +D 5 +R 2 +D 4 +R 2 +D 2 +R 6 +L 7 +R 3 +U 5 +R 6 +U 3 +D 2 +L 3 +D 6 +R 7 +U 4 +D 1 +R 3 +U 2 +R 3 +D 6 +L 6 +R 5 +L 6 +R 2 +L 7 +R 5 +L 5 +D 2 +L 1 +R 7 +U 2 +R 5 +U 5 +R 6 +D 4 +R 1 +L 2 +D 4 +L 2 +R 5 +U 4 +L 6 +D 5 +U 6 +L 2 +R 3 +L 3 +U 5 +D 4 +U 2 +D 6 +L 3 +D 1 +L 4 +R 7 +L 2 +U 5 +R 6 +D 1 +R 7 +D 5 +U 2 +L 6 +R 4 +U 2 +L 3 +D 7 +L 6 +R 3 +D 3 +R 7 +L 8 +U 5 +D 8 +R 4 +D 2 +R 3 +L 2 +D 4 +L 6 +U 7 +R 2 +D 3 +U 2 +R 8 +D 5 +U 8 +D 8 +L 6 +R 4 +D 1 +U 1 +D 3 +U 1 +L 5 +U 2 +R 4 +D 6 +R 2 +D 6 +L 2 +R 7 +D 7 +L 6 +D 2 +R 6 +L 4 +U 5 +D 5 +L 3 +R 5 +L 8 +R 8 +U 2 +R 5 +U 1 +D 4 +U 3 +D 1 +U 5 +R 1 +U 3 +L 1 +D 1 +U 6 +D 6 +L 6 +D 1 +L 2 +U 6 +D 7 +L 4 +U 5 +R 7 +L 2 +U 3 +R 8 +U 2 +L 8 +R 2 +L 8 +U 7 +L 5 +U 2 +D 5 +U 2 +L 6 +D 6 +U 8 +D 7 +R 7 +D 1 +L 5 +U 3 +R 4 +U 7 +R 2 +L 2 +D 7 +R 7 +D 3 +R 7 +L 1 +R 8 +L 5 +R 6 +U 5 +D 2 +R 5 +D 7 +R 3 +U 2 +R 5 +D 5 +U 3 +L 7 +R 4 +L 4 +U 8 +R 2 +D 5 +L 5 +U 9 +D 1 +U 8 +R 9 +L 6 +D 9 +L 5 +R 6 +U 6 +L 4 +D 8 +U 6 +R 2 +U 1 +L 9 +U 4 +L 9 +R 1 +L 4 +D 5 +L 6 +U 7 +L 2 +U 9 +R 2 +L 8 +R 4 +L 2 +D 3 +R 6 +L 5 +R 6 +L 4 +D 7 +L 9 +U 7 +D 1 +U 1 +R 2 +U 7 +L 1 +R 9 +U 4 +D 8 +L 2 +U 7 +D 7 +L 2 +R 4 +U 4 +R 8 +D 9 +L 4 +D 6 +R 5 +L 2 +R 8 +L 7 +R 3 +U 2 +D 5 +L 6 +U 5 +L 3 +R 8 +L 1 +R 3 +U 4 +L 4 +U 7 +R 4 +L 3 +R 9 +D 3 +U 5 +R 8 +D 9 +R 1 +L 9 +U 8 +R 3 +D 7 +U 5 +R 4 +L 4 +D 7 +U 4 +L 3 +R 6 +D 2 +U 5 +D 2 +R 3 +D 7 +L 3 +D 8 +L 9 +U 2 +L 9 +U 8 +D 4 +U 6 +D 4 +R 2 +D 2 +R 3 +D 5 +U 2 +R 3 +L 5 +R 2 +U 2 +L 1 +D 10 +U 2 +D 9 +R 5 +L 4 +R 2 +U 1 +R 6 +L 3 +R 9 +D 8 +R 4 +L 1 +D 4 +U 3 +L 5 +U 2 +R 10 +D 9 +L 5 +U 10 +D 7 +U 1 +D 2 +R 9 +U 7 +D 3 +R 6 +U 4 +R 8 +L 10 +D 7 +R 5 +U 7 +D 3 +R 10 +U 7 +D 8 +R 2 +U 6 +R 9 +D 5 +L 2 +D 2 +L 9 +D 9 +L 7 +U 10 +L 8 +D 4 +R 2 +L 10 +U 2 +R 7 +D 6 +L 8 +D 6 +L 4 +R 10 +U 6 +D 6 +L 3 +D 5 +R 1 +U 5 +D 6 +L 1 +D 8 +R 7 +D 2 +U 10 +D 7 +U 3 +D 5 +L 4 +R 9 +U 3 +D 2 +U 3 +D 7 +L 8 +D 8 +L 6 +D 6 +L 5 +U 9 +R 7 +D 2 +L 4 +U 6 +R 3 +L 2 +R 9 +L 10 +D 1 +L 4 +D 6 +R 4 +L 6 +D 4 +L 3 +U 2 +L 4 +U 5 +D 8 +U 1 +L 4 +U 3 +D 1 +R 3 +D 10 +R 11 +L 10 +U 2 +R 6 +L 5 +U 11 +R 11 +L 10 +D 9 +L 6 +R 2 +U 11 +D 1 +L 7 +R 2 +U 1 +L 9 +U 10 +R 6 +U 3 +R 10 +U 6 +L 11 +D 6 +L 1 +D 1 +U 1 +L 2 +R 11 +U 8 +D 9 +U 9 +D 2 +R 7 +U 9 +L 7 +R 5 +U 6 +R 11 +U 5 +L 1 +R 9 +L 1 +D 9 +U 5 +R 7 +U 1 +R 9 +D 7 +L 3 +U 3 +L 3 +D 3 +U 7 +L 4 +R 3 +L 7 +D 5 +L 6 +R 2 +D 2 +U 6 +D 9 +R 1 +U 3 +L 3 +U 4 +D 4 +R 10 +L 5 +U 2 +D 7 +U 1 +D 7 +L 7 +D 5 +R 6 +D 5 +R 1 +U 9 +D 11 +R 9 +D 3 +R 7 +U 8 +D 7 +L 7 +R 2 +L 9 +R 9 +U 3 +D 10 +L 9 +D 7 +R 1 +U 9 +R 3 +D 6 +U 2 +D 10 +U 2 +L 4 +R 2 +U 7 +R 5 +L 5 +R 8 +U 7 +L 7 +U 5 +D 11 +L 5 +D 5 +L 5 +D 10 +L 10 +U 9 +L 9 +U 8 +L 10 +R 9 +U 1 +D 4 +L 2 +R 7 +D 6 +R 9 +L 6 +D 3 +L 3 +R 2 +D 11 +R 7 +D 1 +U 4 +D 4 +L 10 +R 12 +U 8 +L 1 +U 1 +R 9 +D 10 +R 11 +D 11 +U 4 +R 9 +U 7 +R 7 +L 6 +U 12 +L 8 +U 4 +R 7 +L 1 +R 7 +U 3 +D 9 +U 2 +R 4 +L 9 +R 7 +L 12 +D 10 +R 6 +D 7 +L 9 +D 5 +R 11 +L 2 +U 11 +L 1 +U 9 +L 4 +D 3 +U 7 +D 9 +U 2 +L 6 +U 10 +L 3 +U 11 +L 3 +U 5 +R 7 +L 8 +R 1 +L 12 +U 9 +L 6 +U 7 +L 7 +U 5 +L 6 +R 3 +U 10 +L 8 +U 3 +R 10 +D 7 +L 12 +R 11 +D 4 +L 1 +U 1 +R 3 +D 2 +R 5 +U 3 +R 2 +L 8 +U 1 +D 4 +L 12 +R 10 +U 7 +R 8 +U 9 +D 12 +U 4 +L 6 +D 7 +R 5 +U 1 +D 13 +L 10 +R 9 +D 13 +U 13 +R 12 +L 6 +U 4 +R 8 +D 5 +R 2 +D 7 +L 6 +D 2 +L 12 +U 13 +R 10 +U 1 +D 7 +U 11 +R 2 +U 11 +R 7 +U 12 +D 11 +U 12 +R 2 +U 11 +D 7 +R 1 +U 13 +D 1 +U 4 +D 7 +R 11 +L 2 +R 6 +U 2 +D 3 +L 10 +U 1 +L 3 +D 4 +R 12 +L 4 +R 9 +U 7 +R 8 +D 3 +U 11 +L 12 +R 13 +U 12 +D 6 +R 6 +U 10 +D 6 +R 11 +U 9 +D 5 +U 1 +D 3 +R 1 +D 3 +R 6 +U 13 +D 3 +U 13 +D 6 +L 12 +D 8 +L 2 +U 4 +R 5 +U 2 +D 1 +R 9 +L 5 +R 6 +D 10 +U 12 +R 4 +U 11 +L 1 +U 12 +L 2 +R 4 +U 11 +L 1 +D 10 +L 2 +U 7 +D 7 +U 3 +R 5 +D 11 +R 7 +D 7 +U 6 +R 9 +L 4 +D 8 +L 11 +D 5 +U 5 +L 7 +D 8 +R 11 +D 9 +U 1 +L 6 +U 13 +R 8 +L 4 +R 10 +U 5 +D 7 +L 14 +R 10 +U 1 +D 1 +L 13 +R 10 +U 3 +L 3 +U 14 +L 1 +U 14 +D 5 +U 9 +L 9 +R 13 +U 1 +R 5 +D 3 +U 7 +L 4 +R 3 +D 6 +U 12 +L 8 +U 13 +D 8 +U 13 +R 8 +D 13 +L 7 +D 3 +R 8 +D 7 +U 11 +R 8 +U 5 +R 12 +L 9 +D 1 +R 8 +U 4 +D 4 +U 3 +D 8 +L 6 +D 14 +L 11 +U 12 +D 12 +U 10 +R 12 +U 12 +R 8 +L 4 +D 7 +U 2 +L 4 +U 9 +L 10 +R 7 +D 13 +U 12 +R 8 +U 6 +R 4 +U 10 +D 14 +L 4 +D 12 +R 7 +U 8 +L 2 +R 6 +D 8 +U 13 +L 9 +R 1 +D 14 +U 12 +L 9 +D 9 +U 1 +L 12 +R 14 +D 3 +U 4 +R 8 +U 4 +R 4 +L 7 +U 3 +R 4 +L 1 +U 3 +D 12 +R 6 +L 5 +U 8 +L 4 +U 3 +D 9 +R 12 +L 11 +D 12 +U 4 +L 1 +D 12 +U 14 +R 4 +L 1 +D 12 +U 5 +D 4 +U 2 +D 13 +L 7 +R 11 +D 3 +R 5 +U 7 +L 14 +U 13 +D 10 +R 6 +U 8 +L 8 +D 1 +U 14 +L 1 +R 11 +U 6 +D 9 +R 13 +L 14 +R 10 +L 1 +D 14 +R 3 +U 4 +D 5 +U 5 +R 10 +D 15 +R 3 +L 8 +U 3 +R 1 +L 10 +D 8 +R 4 +D 1 +L 9 +R 12 +D 1 +R 8 +L 14 +U 7 +R 6 +L 7 +D 13 +U 9 +L 4 +D 4 +U 2 +D 5 +R 10 +D 12 +R 7 +D 15 +R 7 +L 7 +R 10 +L 1 +D 7 +R 3 +L 3 +R 2 +L 4 +D 5 +R 13 +L 9 +D 4 +L 5 +R 8 +L 8 +D 1 +L 13 +R 2 +L 14 +D 4 +L 6 +R 13 +D 9 +L 15 +U 2 +D 5 +R 15 +L 1 +U 6 +D 12 +L 10 +R 15 +L 2 +R 11 +L 3 +D 12 +R 9 +D 6 +U 10 +D 1 +U 8 +D 15 +L 7 +U 2 +D 12 +L 11 +R 16 +D 6 +R 10 +D 8 +L 13 +R 5 +D 10 +L 11 +U 10 +R 15 +D 2 +L 5 +D 16 +L 13 +U 14 +R 2 +U 3 +R 12 +L 6 +D 7 +U 13 +D 16 +R 13 +L 12 +U 5 +D 16 +R 15 +L 2 +U 8 +D 16 +R 2 +L 11 +R 16 +D 11 +U 4 +R 15 +L 10 +U 11 +R 12 +L 11 +R 2 +U 10 +L 8 +U 13 +L 1 +U 10 +L 6 +R 11 +D 11 +U 8 +L 11 +D 6 +L 15 +U 1 +L 12 +R 12 +L 10 +D 15 +R 7 +L 12 +U 15 +D 6 +L 16 +R 10 +D 6 +R 3 +D 12 +R 7 +U 12 +D 9 +R 16 +U 11 +R 15 +L 7 +U 16 +R 5 +D 5 +R 13 +L 16 +R 9 +U 13 +L 6 +R 11 +D 11 +L 6 +D 6 +R 10 +D 6 +U 16 +D 1 +R 10 +U 12 +D 8 +U 12 +L 3 +U 14 +R 4 +U 3 +D 6 +U 10 +D 10 +R 9 +L 2 +D 11 +R 12 +U 9 +R 14 +D 11 +R 9 +L 6 +U 15 +D 15 +U 16 +R 13 +U 1 +R 10 +L 14 +D 3 +U 11 +D 7 +R 1 +U 2 +R 8 +L 4 +R 11 +U 15 +D 3 +R 9 +L 10 +R 12 +U 16 +L 10 +U 3 +L 3 +U 4 +D 16 +U 11 +D 16 +R 3 +U 9 +D 14 +L 14 +R 12 +L 7 +D 7 +U 2 +D 12 +L 14 +D 1 +R 2 +D 8 +L 1 +U 11 +D 8 +L 5 +U 8 +L 15 +D 3 +U 7 +D 3 +R 16 +D 12 +R 4 +L 3 +D 5 +R 12 +L 7 +R 6 +U 3 +D 12 +U 11 +D 10 +L 15 +U 9 +L 3 +R 4 +U 9 +L 4 +R 9 +U 11 +R 13 +D 8 +U 7 +L 2 +D 1 +R 14 +L 11 +R 11 +L 5 +D 8 +U 11 +L 10 +D 5 +L 3 +R 12 +U 15 +D 5 +U 6 +D 9 +L 12 +D 5 +R 8 +L 5 +U 6 +R 9 +D 11 +U 5 +R 8 +D 17 +L 1 +U 12 +L 14 +D 9 +U 17 +D 11 +R 17 +D 4 +U 1 +D 11 +U 11 +D 17 +L 13 +U 6 +R 14 +L 4 +D 11 +U 7 +D 7 +U 14 +R 12 +D 9 +R 6 +U 4 +L 5 +R 6 +U 12 +D 1 +U 15 +R 5 +U 10 +D 18 +L 7 +U 5 +L 11 +U 7 +R 7 +L 9 +D 3 +R 12 +L 4 +R 16 +D 18 +R 3 +D 18 +U 14 +L 9 +U 5 +R 14 +D 4 +L 15 +D 8 +L 1 +R 2 +D 11 +L 4 +D 5 +R 5 +L 18 +R 5 +U 9 +R 7 +D 15 +R 7 +U 5 +R 4 +U 14 +R 15 +L 16 +D 6 +L 2 +U 14 +L 13 +R 16 +U 9 +R 9 +U 14 +L 7 +U 14 +R 5 +L 14 +R 11 +D 1 +R 7 +U 16 +D 4 +L 17 +U 9 +D 18 +R 4 +L 7 +D 7 +L 12 +U 3 +D 15 +U 8 +R 9 +U 9 +R 15 +U 12 +R 13 +L 11 +U 12 +L 17 +U 18 +L 11 +R 2 +L 4 +D 14 +R 2 +D 8 +U 13 +D 7 +U 14 +L 7 +U 11 +D 15 +U 15 +R 5 +L 3 +U 7 +R 14 +L 14 +U 7 +D 6 +L 7 +D 4 +L 11 +R 11 +L 13 +U 10 +D 9 +R 11 +L 8 +U 6 +L 18 +D 12 +U 1 +D 17 +R 15 +L 19 +D 12 +R 16 +L 11 +R 6 +L 2 +U 4 +L 9 +D 19 +R 12 +L 13 +U 16 +D 8 +U 19 +R 14 +U 2 +R 18 +D 10 +R 1 +L 18 +R 9 +D 3 +R 2 +D 8 +R 8 +U 18 +L 5 +R 11 +D 9 +L 18 +U 10 +D 4 +R 15 +D 6 +U 15 +L 16 +U 12 +R 17 +D 16 +U 9 +D 12 +L 13 +R 6 +U 4 +D 13 +L 10 +R 3 +D 2 +R 13 +D 13 +U 3 +L 2 +U 8 +D 10 +R 17 +L 17 +U 13 +L 3 +U 9 +L 9 +R 5 +U 4 +D 15 +R 15 +D 7 +L 6 +U 3 +D 9 +U 4 +L 4 +R 7 +D 11 +U 19 +R 7 +D 16 +L 19 +U 17 +L 11 +R 7 +L 10 +D 14 +U 13 +D 11 +R 15 +D 14 +R 3 +L 1 +R 18 +D 14 +R 9 +L 2 +D 16 +L 4 diff --git a/day9/src/main.rs b/day9/src/main.rs new file mode 100644 index 0000000..637786b --- /dev/null +++ b/day9/src/main.rs @@ -0,0 +1,39 @@ +use std::env; +use std::fs::File; +use std::io::{self, BufRead}; +use std::collections::HashSet; + +fn main() { + let file = File::open(&env::args().nth(1).unwrap()).unwrap(); + let reader = io::BufReader::new(file); + let (mut hx, mut hy, mut tx, mut ty) = (0, 0, 0, 0); + let mut visited: HashSet<(i64, i64)> = vec![(0, 0)].into_iter().collect(); + + for line in reader.lines().flatten() { + let (movx, movy) = match line.chars().nth(0) { + Some('L') => (-1, 0), + Some('R') => (1, 0), + Some('U') => (0, -1), + Some('D') => (0, 1), + _ => (999, 999), + }; + let count = line[2..].parse::().unwrap(); + for _ in 0..count { + (hx, hy) = (hx + movx, hy + movy); + (tx, ty) = move_tail(hx, hy, tx, ty).unwrap(); + visited.insert((tx, ty)); + } + } + println!("{:?}", visited.len()); +} + +fn move_tail(hx: i64, hy: i64, tx: i64, ty: i64) -> Option<(i64, i64)> { + match (hx - tx, hy - ty) { + (-1..=1, -1..=1) => Some((tx, ty)), + (-1..=1, 2) => Some((hx, ty + 1)), + (-1..=1, -2) => Some((hx, ty - 1)), + (2, -1..=1) => Some((tx + 1, hy)), + (-2, -1..=1) => Some((tx - 1, hy)), + _ => None + } +} diff --git a/day9/test.txt b/day9/test.txt new file mode 100644 index 0000000..9874df2 --- /dev/null +++ b/day9/test.txt @@ -0,0 +1,8 @@ +R 4 +U 4 +L 3 +D 1 +R 4 +D 1 +L 5 +R 2