diff --git a/2022/inputs/09.txt b/2022/inputs/09.txt new file mode 100644 index 0000000..448850e --- /dev/null +++ b/2022/inputs/09.txt @@ -0,0 +1,2000 @@ +D 2 +R 1 +U 1 +L 1 +D 2 +L 2 +R 1 +U 1 +D 2 +U 1 +R 1 +U 1 +D 2 +R 2 +L 2 +U 2 +D 1 +L 2 +R 2 +D 2 +U 2 +R 2 +U 1 +D 1 +L 2 +D 2 +L 2 +U 1 +R 2 +L 2 +D 2 +L 1 +D 2 +L 1 +R 2 +L 2 +U 1 +D 2 +L 1 +U 2 +R 1 +D 2 +L 2 +D 1 +L 2 +U 1 +L 1 +R 2 +U 2 +L 2 +D 1 +L 1 +D 1 +L 2 +R 1 +D 2 +U 2 +D 2 +R 1 +L 2 +R 2 +U 1 +R 1 +L 2 +U 2 +D 1 +U 2 +L 1 +R 2 +D 2 +L 2 +U 1 +L 1 +D 2 +R 2 +U 1 +R 2 +U 2 +D 2 +L 1 +U 1 +D 1 +R 1 +U 1 +D 2 +L 1 +D 2 +U 2 +D 1 +U 2 +L 2 +D 2 +R 2 +D 1 +R 2 +L 2 +U 1 +R 1 +L 1 +U 2 +D 2 +U 2 +L 2 +U 2 +R 2 +L 1 +U 1 +D 1 +L 2 +D 2 +R 2 +U 3 +R 3 +U 2 +L 1 +U 1 +L 1 +U 2 +R 2 +U 2 +D 1 +R 3 +D 1 +L 3 +R 2 +D 3 +U 1 +D 2 +L 2 +D 2 +L 1 +R 3 +D 1 +R 1 +L 3 +R 1 +U 2 +D 2 +L 3 +R 1 +U 2 +L 2 +R 3 +D 1 +U 2 +D 2 +L 3 +D 1 +R 3 +U 3 +R 2 +U 3 +D 1 +U 2 +R 2 +U 3 +R 1 +U 2 +L 3 +D 3 +U 1 +D 2 +U 2 +L 2 +R 1 +L 3 +R 1 +L 3 +U 2 +R 1 +U 1 +L 1 +R 2 +U 2 +D 1 +R 3 +D 3 +L 2 +D 2 +R 2 +L 3 +R 1 +L 1 +R 3 +L 3 +D 2 +U 1 +L 2 +U 3 +R 1 +L 1 +R 1 +L 1 +D 1 +R 2 +D 2 +U 1 +L 1 +D 3 +R 2 +D 1 +L 3 +R 3 +U 3 +D 2 +U 1 +D 2 +R 1 +U 1 +R 2 +D 2 +U 1 +D 3 +R 2 +U 3 +D 3 +R 1 +D 1 +U 2 +D 1 +U 2 +D 3 +U 3 +D 2 +R 4 +D 2 +R 1 +L 4 +U 2 +D 1 +U 2 +R 2 +U 1 +R 1 +U 4 +L 4 +U 3 +L 2 +U 3 +D 3 +R 2 +L 2 +U 3 +D 1 +L 3 +U 1 +L 1 +U 2 +L 4 +R 3 +U 3 +D 1 +L 3 +R 4 +D 4 +L 3 +R 4 +D 1 +R 4 +D 1 +L 3 +D 1 +L 1 +U 2 +D 1 +U 4 +R 1 +D 2 +U 2 +D 4 +U 3 +D 2 +L 4 +R 3 +U 3 +R 2 +D 3 +U 4 +R 4 +L 3 +U 2 +D 2 +U 2 +L 1 +R 3 +D 4 +U 1 +D 2 +U 1 +R 2 +L 2 +R 3 +U 4 +D 1 +L 1 +R 1 +D 4 +L 4 +D 4 +L 2 +R 3 +L 1 +U 2 +L 1 +D 3 +U 2 +R 2 +D 1 +R 1 +U 1 +L 2 +D 2 +U 3 +L 3 +U 1 +L 1 +D 1 +L 3 +R 4 +L 2 +R 1 +U 2 +D 4 +U 2 +L 4 +U 4 +R 1 +D 3 +U 2 +L 2 +D 4 +L 2 +U 1 +D 5 +L 5 +R 1 +D 1 +L 4 +D 5 +R 4 +U 2 +R 2 +L 2 +D 3 +U 4 +L 1 +U 1 +R 2 +L 4 +R 3 +U 1 +D 5 +U 4 +D 2 +R 3 +L 1 +D 4 +L 5 +D 1 +L 2 +U 1 +R 2 +L 2 +R 1 +L 2 +U 4 +D 1 +U 5 +L 2 +R 1 +D 5 +L 2 +D 5 +U 5 +R 3 +L 4 +D 2 +L 2 +D 2 +U 5 +R 3 +U 1 +D 3 +R 4 +U 3 +R 2 +U 3 +D 5 +U 4 +L 3 +R 3 +D 3 +R 1 +L 1 +D 4 +R 3 +D 2 +L 2 +R 4 +L 3 +R 2 +D 4 +L 3 +U 1 +D 2 +L 3 +U 4 +D 5 +U 2 +L 2 +R 1 +D 1 +L 3 +U 2 +R 4 +D 4 +L 4 +U 2 +D 1 +R 5 +L 3 +U 3 +L 5 +R 2 +D 1 +L 2 +D 2 +L 2 +R 4 +L 3 +D 3 +R 5 +L 5 +D 3 +R 5 +L 2 +R 1 +D 4 +L 2 +D 1 +U 2 +D 4 +U 5 +L 4 +D 2 +U 2 +D 4 +U 6 +L 3 +U 1 +D 2 +R 1 +U 5 +D 2 +L 4 +R 6 +U 2 +L 2 +D 1 +R 5 +U 2 +D 5 +R 5 +U 4 +D 6 +U 1 +D 2 +U 5 +D 5 +L 6 +U 5 +D 6 +L 4 +U 6 +R 5 +L 6 +D 5 +L 5 +D 6 +U 5 +L 6 +U 5 +L 3 +R 2 +D 1 +R 1 +L 6 +U 5 +D 1 +R 2 +D 2 +L 2 +D 6 +U 6 +L 1 +R 6 +L 3 +D 6 +R 3 +D 2 +U 5 +D 4 +L 2 +R 3 +D 5 +U 1 +D 3 +R 6 +U 4 +L 4 +U 4 +D 1 +R 4 +U 2 +R 6 +L 1 +D 3 +R 3 +U 1 +L 6 +R 4 +D 2 +U 2 +D 6 +L 4 +R 6 +U 3 +R 3 +D 3 +L 1 +R 5 +U 4 +R 6 +L 2 +R 1 +U 1 +L 6 +D 6 +L 3 +R 2 +D 6 +R 6 +L 3 +U 3 +D 1 +L 3 +D 1 +R 4 +D 3 +U 3 +D 2 +U 6 +D 4 +L 4 +R 5 +D 1 +L 7 +R 3 +L 5 +R 3 +U 6 +L 5 +U 3 +D 1 +L 5 +R 4 +L 1 +U 6 +L 1 +R 4 +D 3 +R 7 +D 7 +R 4 +L 4 +D 4 +L 2 +R 1 +U 7 +L 1 +D 7 +L 1 +D 1 +R 5 +D 5 +U 2 +L 6 +R 2 +U 5 +L 7 +D 7 +L 7 +U 1 +L 6 +D 2 +L 6 +U 2 +R 4 +U 7 +D 2 +L 6 +U 7 +R 5 +U 7 +L 7 +D 2 +R 4 +U 6 +R 1 +D 3 +R 2 +L 5 +R 5 +U 3 +L 5 +U 4 +D 4 +L 5 +R 1 +L 4 +D 5 +U 1 +L 4 +D 7 +R 6 +D 7 +U 7 +D 4 +R 1 +D 2 +L 5 +R 4 +D 3 +U 2 +D 4 +R 3 +L 4 +R 4 +U 3 +D 7 +R 2 +L 1 +D 5 +R 3 +D 2 +L 7 +R 3 +D 5 +R 1 +D 2 +R 6 +L 5 +R 7 +L 5 +U 2 +R 3 +D 6 +L 1 +D 4 +R 2 +U 1 +D 1 +R 6 +D 5 +L 3 +R 7 +L 3 +U 5 +R 5 +U 3 +D 8 +L 2 +U 6 +L 8 +U 4 +D 5 +R 7 +U 7 +L 4 +R 3 +L 3 +D 1 +L 6 +R 5 +L 6 +R 6 +L 8 +D 3 +U 2 +L 7 +R 2 +U 8 +D 3 +L 4 +R 3 +U 8 +R 3 +U 6 +D 8 +R 2 +L 8 +U 2 +R 5 +D 1 +U 1 +D 8 +R 4 +L 7 +D 2 +U 3 +D 1 +R 2 +U 1 +L 5 +U 4 +R 5 +D 6 +L 3 +U 1 +D 6 +U 6 +D 6 +U 2 +L 6 +U 6 +D 5 +L 1 +D 7 +U 2 +D 4 +L 5 +R 4 +D 2 +L 6 +U 2 +R 1 +U 4 +L 3 +D 3 +R 6 +D 4 +R 3 +L 2 +U 8 +R 5 +L 2 +U 3 +R 7 +U 7 +R 4 +U 5 +D 1 +L 8 +R 8 +U 3 +L 1 +U 7 +L 7 +D 2 +L 8 +D 7 +R 7 +L 3 +R 4 +L 3 +R 4 +U 6 +L 5 +R 4 +U 7 +L 3 +D 3 +R 2 +L 6 +U 3 +L 1 +R 8 +L 6 +D 7 +L 8 +R 7 +L 6 +D 2 +U 2 +R 3 +L 9 +R 7 +D 1 +R 9 +L 2 +D 5 +U 7 +D 5 +U 4 +L 4 +D 5 +L 6 +R 3 +U 2 +R 6 +D 3 +U 2 +R 1 +D 5 +U 6 +L 8 +D 8 +U 9 +L 2 +U 5 +L 2 +U 3 +L 4 +U 6 +L 3 +D 2 +R 5 +L 3 +R 8 +D 8 +U 8 +R 4 +U 2 +D 3 +L 9 +U 2 +L 4 +U 5 +R 5 +L 7 +U 9 +L 7 +U 5 +L 6 +U 6 +R 5 +L 9 +U 9 +R 3 +D 8 +U 8 +R 9 +D 4 +U 9 +D 9 +L 3 +R 2 +D 3 +U 1 +R 7 +D 5 +U 9 +D 7 +U 3 +D 8 +L 9 +U 1 +R 6 +L 8 +R 2 +L 7 +D 3 +U 4 +D 9 +L 1 +R 4 +D 9 +U 1 +D 1 +L 8 +U 2 +D 8 +U 1 +L 1 +U 2 +D 7 +L 1 +D 2 +L 6 +U 2 +D 8 +R 7 +L 4 +U 5 +R 2 +U 8 +D 6 +R 3 +D 8 +R 4 +L 5 +U 4 +L 1 +U 6 +L 10 +D 7 +R 5 +D 9 +U 6 +D 5 +L 9 +U 2 +R 3 +U 7 +R 7 +D 1 +R 4 +U 10 +D 4 +R 7 +L 7 +D 3 +R 5 +U 5 +D 6 +U 2 +D 2 +U 6 +D 5 +L 6 +U 10 +D 7 +R 6 +L 9 +R 7 +L 7 +U 6 +D 6 +R 8 +D 8 +R 4 +D 4 +L 1 +R 3 +U 5 +R 2 +L 9 +R 8 +L 3 +U 3 +R 6 +U 2 +L 6 +U 4 +D 5 +R 6 +U 5 +R 8 +U 10 +L 5 +U 2 +R 1 +D 9 +U 8 +D 2 +U 9 +L 7 +R 2 +D 10 +L 7 +D 3 +R 4 +L 2 +U 2 +R 7 +U 6 +D 9 +U 8 +L 7 +D 4 +U 4 +R 6 +U 3 +D 9 +L 1 +U 9 +R 9 +D 4 +L 9 +R 6 +L 6 +U 9 +L 10 +R 1 +L 5 +R 1 +L 2 +D 8 +U 2 +L 1 +R 4 +U 9 +L 3 +D 9 +L 6 +R 8 +U 6 +R 8 +L 5 +D 2 +R 5 +U 8 +R 2 +L 9 +R 3 +U 3 +R 8 +U 5 +D 5 +U 8 +D 10 +R 4 +L 5 +U 2 +L 4 +D 2 +L 1 +D 3 +U 8 +D 3 +U 4 +L 6 +D 6 +U 9 +L 5 +D 5 +U 10 +R 9 +D 2 +U 11 +D 4 +L 8 +D 8 +L 4 +U 6 +D 3 +R 9 +U 11 +L 7 +U 7 +D 9 +U 10 +D 9 +U 2 +R 2 +U 7 +R 2 +U 10 +R 7 +L 7 +U 6 +D 10 +L 5 +U 4 +D 4 +L 3 +D 3 +L 2 +R 5 +D 5 +U 10 +R 3 +U 8 +L 10 +U 5 +R 3 +L 9 +R 5 +D 1 +L 8 +R 8 +D 10 +L 6 +D 5 +L 6 +R 7 +D 10 +U 3 +D 9 +L 8 +D 5 +U 10 +L 5 +U 4 +D 7 +U 11 +L 6 +U 6 +L 9 +R 6 +U 8 +R 8 +L 6 +U 8 +L 8 +U 9 +D 4 +L 10 +D 6 +R 5 +D 8 +L 7 +D 6 +R 4 +D 11 +U 5 +D 4 +R 7 +U 11 +L 5 +U 7 +D 7 +L 11 +R 9 +U 1 +D 11 +R 8 +L 4 +R 2 +D 6 +L 4 +R 8 +D 9 +R 11 +U 2 +L 9 +U 6 +R 10 +L 11 +R 9 +D 10 +U 11 +L 6 +U 3 +L 2 +R 11 +L 2 +D 2 +L 5 +D 6 +U 11 +D 10 +U 8 +L 3 +R 9 +D 5 +R 9 +D 6 +R 2 +U 2 +D 11 +R 6 +U 9 +R 12 +U 6 +L 1 +D 2 +L 5 +D 9 +L 5 +D 4 +U 10 +L 12 +U 6 +R 6 +U 4 +L 4 +U 1 +L 4 +R 12 +L 11 +R 3 +U 10 +L 4 +R 11 +D 9 +L 9 +U 11 +D 1 +L 1 +R 3 +D 7 +U 6 +R 4 +D 3 +L 8 +U 5 +R 6 +L 9 +U 4 +L 6 +D 6 +U 6 +L 5 +R 7 +D 10 +R 5 +U 8 +L 5 +R 6 +U 10 +R 2 +U 2 +R 10 +U 12 +D 12 +L 7 +U 3 +R 1 +L 6 +D 6 +L 5 +D 8 +U 8 +D 11 +L 2 +D 10 +L 6 +R 10 +L 9 +D 5 +R 1 +D 7 +R 6 +U 10 +D 8 +R 9 +D 11 +R 8 +U 7 +R 10 +L 1 +U 3 +R 11 +D 11 +L 8 +D 13 +U 6 +D 12 +U 2 +L 2 +U 11 +D 1 +R 3 +U 8 +R 4 +L 3 +U 7 +D 4 +L 3 +R 2 +L 3 +R 6 +D 13 +L 1 +R 8 +L 5 +R 11 +D 7 +L 8 +D 12 +U 12 +D 3 +L 6 +U 1 +R 7 +U 2 +D 9 +L 3 +U 11 +R 2 +U 6 +D 11 +L 10 +D 4 +U 13 +D 1 +R 11 +L 3 +U 2 +D 7 +R 8 +D 10 +R 12 +D 4 +R 1 +U 5 +R 5 +U 2 +R 12 +D 3 +L 8 +D 11 +U 3 +R 1 +U 2 +R 3 +D 5 +U 8 +D 4 +R 6 +L 2 +R 4 +U 6 +D 12 +L 7 +U 2 +L 8 +U 8 +R 13 +U 10 +L 11 +R 1 +D 4 +R 1 +U 5 +L 9 +D 9 +U 11 +D 13 +U 9 +R 2 +D 9 +U 6 +R 1 +D 12 +R 3 +U 1 +R 13 +U 11 +L 6 +R 3 +D 11 +U 13 +R 2 +U 8 +L 11 +R 12 +D 7 +L 11 +U 10 +D 2 +L 9 +R 1 +L 9 +R 10 +D 5 +U 7 +R 6 +D 11 +U 11 +L 7 +R 6 +L 12 +D 12 +L 5 +R 3 +L 12 +R 4 +L 7 +D 4 +U 11 +R 2 +L 9 +R 11 +D 14 +L 7 +R 10 +U 1 +D 2 +L 7 +D 2 +U 12 +R 2 +D 6 +R 12 +L 7 +D 4 +U 13 +L 11 +D 13 +R 11 +D 5 +U 14 +R 1 +L 8 +U 10 +R 3 +D 3 +L 13 +R 6 +U 5 +D 4 +L 12 +D 2 +R 9 +D 1 +R 7 +D 10 +U 14 +L 12 +R 11 +U 6 +D 11 +L 8 +D 2 +U 4 +L 1 +R 14 +D 8 +U 11 +L 13 +U 1 +D 2 +R 14 +D 10 +R 4 +L 1 +R 10 +U 9 +D 8 +L 10 +R 10 +U 6 +D 14 +L 10 +U 13 +R 8 +L 3 +D 6 +L 13 +D 11 +U 14 +R 13 +U 12 +L 2 +D 6 +U 13 +L 13 +U 12 +D 1 +U 10 +L 5 +U 3 +R 4 +D 10 +L 14 +U 8 +R 7 +U 6 +R 13 +D 14 +L 5 +U 6 +L 1 +D 7 +R 2 +D 14 +U 13 +R 3 +U 5 +R 13 +L 2 +D 12 +U 1 +R 11 +L 7 +U 2 +D 11 +L 2 +R 7 +D 7 +L 1 +U 10 +L 12 +R 6 +L 7 +R 4 +D 3 +R 3 +U 15 +D 13 +U 6 +D 6 +U 3 +R 14 +U 10 +L 1 +R 8 +D 7 +R 13 +D 10 +R 9 +U 11 +D 11 +U 4 +D 11 +U 10 +D 3 +R 12 +U 5 +D 1 +L 4 +R 10 +D 11 +U 2 +D 9 +U 12 +D 9 +R 3 +D 6 +U 4 +L 14 +R 15 +U 4 +D 11 +R 13 +L 3 +U 12 +R 5 +U 11 +L 11 +D 6 +U 15 +R 5 +U 5 +R 1 +D 8 +U 4 +L 12 +D 2 +U 9 +L 15 +D 6 +R 12 +L 10 +D 14 +R 14 +D 8 +L 2 +D 11 +U 13 +L 1 +R 8 +D 8 +L 5 +D 14 +R 10 +U 13 +R 10 +L 4 +R 5 +L 6 +U 7 +R 7 +L 5 +D 3 +L 15 +U 10 +D 6 +L 1 +R 15 +D 11 +U 13 +R 12 +U 4 +D 8 +L 4 +D 11 +R 12 +L 5 +D 2 +U 8 +D 8 +L 10 +U 16 +L 15 +D 9 +U 10 +R 16 +L 7 +R 7 +U 9 +D 12 +L 16 +U 12 +R 13 +U 5 +R 5 +U 8 +D 8 +U 15 +L 4 +R 2 +L 2 +U 10 +D 2 +U 6 +L 15 +R 11 +D 2 +L 5 +R 16 +L 13 +R 14 +U 5 +R 2 +L 11 +U 9 +D 4 +L 14 +U 6 +D 6 +U 7 +D 2 +U 5 +D 6 +U 10 +D 5 +L 11 +R 13 +L 9 +U 5 +R 7 +D 13 +U 12 +L 6 +U 14 +R 15 +L 3 +U 4 +D 4 +U 8 +R 1 +U 12 +L 7 +U 2 +L 11 +R 10 +D 6 +R 9 +L 6 +R 2 +L 16 +U 8 +D 16 +R 8 +U 7 +D 7 +U 12 +D 13 +L 14 +R 3 +U 7 +L 14 +R 14 +U 4 +D 15 +R 13 +D 2 +R 9 +D 14 +U 15 +D 8 +L 8 +R 10 +U 4 +D 5 +L 16 +D 17 +R 14 +U 10 +D 15 +L 15 +R 13 +L 17 +U 12 +R 1 +D 8 +U 2 +R 11 +U 8 +D 9 +R 6 +U 10 +D 3 +L 7 +R 4 +L 15 +U 14 +L 9 +R 15 +U 9 +D 5 +U 4 +D 10 +R 13 +U 9 +D 5 +R 12 +D 6 +U 7 +D 8 +L 7 +U 13 +D 5 +R 4 +L 10 +D 16 +L 11 +R 16 +L 16 +U 15 +D 1 +R 3 +L 13 +D 7 +U 1 +R 15 +U 15 +D 2 +U 3 +L 7 +U 4 +D 14 +L 10 +D 8 +U 8 +D 6 +R 16 +U 6 +D 7 +L 13 +U 3 +L 9 +R 10 +D 5 +R 2 +D 16 +U 14 +R 11 +D 10 +R 13 +U 12 +L 4 +U 7 +L 2 +R 5 +D 13 +U 3 +R 3 +U 16 +L 5 +R 13 +L 16 +D 7 +L 4 +R 14 +U 8 +L 9 +U 2 +L 10 +D 9 +R 17 +U 14 +R 2 +D 7 +U 14 +R 3 +U 3 +L 14 +D 16 +U 6 +L 5 +U 2 +R 7 +L 4 +U 3 +D 12 +L 7 +D 15 +U 6 +L 1 +D 5 +U 11 +L 9 +D 15 +L 12 +R 18 +L 4 +D 9 +U 17 +R 1 +D 5 +L 13 +U 16 +R 17 +U 10 +D 5 +L 16 +D 2 +R 10 +L 1 +U 14 +L 16 +U 3 +D 2 +R 5 +U 3 +R 17 +D 17 +L 15 +U 11 +L 16 +R 4 +L 3 +R 7 +L 5 +R 8 +U 15 +R 9 +U 9 +R 18 +L 17 +R 9 +U 18 +L 11 +U 14 +R 7 +L 16 +R 15 +L 1 +U 9 +L 10 +U 9 +L 14 +U 5 +D 1 +R 16 +D 6 +R 1 +D 14 +R 11 +U 10 +D 17 +L 12 +D 5 +U 4 +L 12 +U 1 +L 7 +R 13 +D 2 +U 14 +D 3 +U 6 +R 1 +U 2 +R 11 +U 9 +D 14 +R 9 +U 14 +R 9 +D 14 +R 2 +D 9 +U 8 +D 10 +U 3 +R 8 +D 11 +R 5 +U 4 +D 1 +U 16 +L 17 +U 1 +R 14 +U 10 +R 5 +U 12 +D 4 +R 10 +D 10 +L 5 +R 2 +L 18 +D 3 +L 17 +D 10 +U 4 +L 15 +U 4 +L 9 +U 14 +R 9 +U 16 +L 1 +R 7 +U 10 +D 1 +U 13 +D 15 +R 6 +U 2 +L 17 +U 11 +L 14 +U 12 +R 11 +U 4 +D 11 +R 7 +D 13 +U 16 +L 5 +U 7 +R 4 +L 17 +D 2 +U 18 +R 8 +U 16 +L 15 +R 8 +L 19 +U 17 +D 2 +U 8 +D 9 +U 3 +L 12 +U 16 +L 3 +R 14 +D 16 +U 11 +D 2 +L 16 +U 4 +L 18 +R 15 +U 9 +L 18 +U 11 +R 18 +L 13 +D 8 +U 12 +D 14 +L 12 +U 2 +D 13 +L 12 +U 16 +R 17 +L 14 +U 10 +R 15 +U 19 +L 17 +R 8 +L 17 +R 8 +U 4 +R 8 +U 11 +L 17 +R 8 +D 13 +U 6 +D 7 +R 9 +L 2 +R 4 +D 16 +L 2 +D 10 +U 4 +L 10 +D 14 +U 5 +D 7 +U 4 +D 16 +U 14 +L 4 +U 14 +L 3 +D 16 +L 14 +U 11 +D 3 +L 10 +U 8 +D 6 +L 9 +D 17 +R 16 diff --git a/2022/src/day09.rs b/2022/src/day09.rs index c2e6879..48817a1 100644 --- a/2022/src/day09.rs +++ b/2022/src/day09.rs @@ -25,12 +25,12 @@ enum Direction { } impl Direction { - fn vec_for(self, dist: u32) -> Vec2 { + fn vec_for(self) -> Vec2 { Vec2(match self { - Direction::Up => [0, -(dist as i32)], - Direction::Left => [dist as i32, 0], - Direction::Right => [-(dist as i32), 0], - Direction::Down => [0, dist as i32], + Direction::Up => [0, -1], + Direction::Left => [1, 0], + Direction::Right => [-1, 0], + Direction::Down => [0, 1], }) } } @@ -105,12 +105,14 @@ fn part_generic(input: &[u8]) -> Result { visited.insert(head_pos); for (direction, steps) in moves { - head_pos = head_pos + direction.vec_for(steps); + let step = direction.vec_for(); - let mut ref_pos = head_pos; + for _ in 0..steps { + head_pos = head_pos + step; - for (i, tail_pos) in tails.iter_mut().enumerate() { - loop { + let mut ref_pos = head_pos; + + for (i, tail_pos) in tails.iter_mut().enumerate() { let delta = ref_pos - *tail_pos; if delta[0].abs() <= 1 && delta[1].abs() <= 1 { @@ -124,8 +126,10 @@ fn part_generic(input: &[u8]) -> Result { if i == N - 1 { visited.insert(*tail_pos); } + ref_pos = *tail_pos; } - ref_pos = *tail_pos; + + visited.insert(*tails.last().unwrap()); } } @@ -137,7 +141,6 @@ pub fn part1(input: &[u8]) -> Result { } pub fn part2(input: &[u8]) -> Result { - // Guesses: 2363 (too low) part_generic::<9>(input) } diff --git a/2022/src/samples/09.large.txt b/2022/src/samples/09.large.txt new file mode 100644 index 0000000..60bd43b --- /dev/null +++ b/2022/src/samples/09.large.txt @@ -0,0 +1,8 @@ +R 5 +U 8 +L 8 +D 3 +R 17 +D 10 +L 25 +U 20 diff --git a/2022/src/samples/09.txt b/2022/src/samples/09.txt new file mode 100644 index 0000000..9874df2 --- /dev/null +++ b/2022/src/samples/09.txt @@ -0,0 +1,8 @@ +R 4 +U 4 +L 3 +D 1 +R 4 +D 1 +L 5 +R 2