diff --git a/inputs/input.txt b/inputs/input.txt index bbd1f5c..e7c314b 100644 --- a/inputs/input.txt +++ b/inputs/input.txt @@ -1,2000 +1,141 @@ -D 2 -R 1 -L 2 -U 1 -R 2 -L 2 -R 2 -L 1 -R 1 -L 1 -R 2 -L 2 -R 1 -D 2 -U 1 -R 1 -L 2 -U 2 -R 2 -U 2 -R 2 -D 1 -L 1 -U 1 -R 2 -L 1 -D 1 -U 1 -L 1 -U 1 -D 2 -U 1 -R 2 -U 1 -L 1 -D 1 -L 1 -U 1 -R 1 -L 1 -U 2 -L 2 -D 2 -L 2 -R 2 -U 1 -R 1 -U 2 -D 2 -R 2 -L 1 -R 1 -D 1 -U 2 -R 1 -L 1 -U 2 -L 2 -U 1 -L 2 -U 1 -R 1 -L 1 -D 2 -U 2 -R 2 -D 1 -R 1 -U 2 -R 2 -L 2 -U 1 -L 1 -D 2 -R 2 -L 1 -R 1 -D 1 -R 1 -L 1 -D 2 -R 1 -U 1 -L 1 -R 1 -L 1 -D 2 -L 1 -U 1 -R 1 -D 1 -R 1 -D 1 -L 2 -U 1 -D 1 -R 2 -D 2 -R 2 -L 2 -U 2 -L 1 -U 1 -L 1 -R 1 -L 1 -U 2 -L 2 -U 2 -L 1 -U 1 -D 1 -U 3 -R 2 -D 2 -R 1 -U 2 -L 2 -D 1 -U 1 -R 2 -U 3 -D 1 -L 3 -U 2 -D 2 -R 1 -D 1 -L 1 -D 2 -L 2 -U 1 -L 2 -R 3 -U 3 -L 1 -U 3 -L 1 -D 1 -U 3 -R 1 -U 3 -D 2 -L 3 -R 3 -L 2 -U 1 -D 1 -U 1 -L 1 -D 1 -R 2 -U 3 -D 3 -L 3 -R 1 -U 3 -D 1 -U 3 -L 1 -D 3 -R 3 -U 2 -D 1 -R 2 -U 1 -R 3 -U 1 -D 1 -U 1 -L 1 -R 3 -U 2 -D 3 -U 2 -R 2 -L 1 -D 3 -R 3 -L 2 -U 1 -L 2 -U 2 -R 3 -U 3 -D 2 -U 2 -D 3 -R 1 -D 1 -R 3 -D 1 -L 3 -R 2 -D 1 -L 1 -D 1 -L 3 -D 1 -L 3 -D 2 -L 2 -D 2 -R 1 -U 2 -D 1 -U 3 -L 3 -D 1 -R 3 -L 2 -D 2 -U 2 -R 1 -U 2 -R 3 -L 1 -R 3 -L 1 -D 1 -U 2 -L 3 -U 3 -R 2 -L 1 -R 2 -U 4 -R 1 -U 2 -L 2 -D 3 -U 1 -L 2 -U 1 -L 2 -D 3 -U 1 -D 3 -U 1 -D 3 -L 2 -R 1 -L 3 -R 2 -U 2 -L 2 -D 3 -L 2 -U 3 -R 4 -L 3 -D 4 -L 3 -U 2 -L 2 -U 4 -R 2 -D 4 -R 1 -D 4 -U 4 -D 3 -R 2 -D 4 -U 1 -D 4 -U 4 -R 2 -D 3 -R 4 -D 2 -L 2 -R 4 -L 1 -D 2 -U 4 -R 4 -U 4 -L 4 -U 2 -D 3 -L 3 -U 3 -R 1 -L 2 -D 2 -L 3 -R 2 -U 3 -D 4 -L 1 -D 4 -U 3 -L 3 -U 4 -D 1 -U 2 -D 4 -L 4 -D 3 -R 3 -U 1 -L 4 -D 2 -R 4 -U 4 -L 4 -U 3 -L 4 -R 3 -D 3 -L 1 -U 2 -R 1 -U 2 -D 3 -U 4 -L 1 -D 2 -U 1 -D 1 -L 1 -D 1 -U 1 -D 3 -L 1 -D 4 -L 2 -R 3 -L 2 -R 4 -L 4 -U 2 -R 3 -L 2 -D 3 -L 2 -U 2 -R 3 -U 1 -D 3 -U 5 -D 4 -U 3 -L 1 -D 4 -U 3 -D 2 -L 1 -R 3 -U 5 -L 5 -R 1 -D 2 -R 2 -D 3 -L 4 -D 4 -U 2 -D 3 -R 5 -D 3 -U 2 -D 4 -L 1 -D 5 -R 2 -D 1 -U 2 -L 1 -R 5 -U 4 -L 5 -D 2 -U 4 -D 5 -U 4 -L 4 -U 3 -D 2 -L 2 -R 2 -D 1 -U 1 -R 5 -L 3 -R 4 -D 5 -R 5 -D 4 -L 1 -R 2 -U 3 -R 5 -D 5 -R 3 -D 1 -R 3 -D 2 -U 4 -D 1 -U 5 -L 1 -U 3 -L 3 -D 1 -R 3 -U 1 -L 3 -R 2 -L 4 -R 4 -U 1 -D 5 -R 2 -L 5 -R 5 -U 3 -D 1 -R 4 -D 5 -L 5 -R 4 -U 5 -R 4 -D 3 -R 4 -D 2 -R 2 -U 1 -D 2 -L 1 -R 1 -L 3 -D 3 -L 5 -D 4 -R 5 -D 2 -L 5 -U 3 -R 3 -L 5 -U 3 -L 5 -R 5 -L 2 -U 4 -D 2 -R 1 -L 5 -R 1 -U 5 -L 2 -R 2 -U 6 -L 6 -U 2 -R 5 -U 3 -R 2 -D 3 -U 3 -D 1 -L 1 -U 2 -R 5 -L 1 -R 5 -D 6 -R 4 -L 4 -U 1 -R 3 -D 5 -U 3 -L 6 -U 1 -D 6 -R 6 -L 4 -R 4 -U 6 -R 6 -U 3 -R 6 -U 2 -R 6 -U 4 -R 2 -L 5 -U 2 -D 6 -L 4 -U 5 -L 4 -R 6 -L 1 -R 3 -L 3 -D 1 -L 5 -D 1 -L 5 -R 2 -D 3 -L 1 -U 6 -R 6 -U 2 -L 3 -R 4 -U 6 -R 3 -L 4 -U 1 -R 1 -D 1 -L 4 -D 6 -U 1 -R 2 -L 6 -U 3 -R 1 -L 1 -D 3 -R 1 -U 4 -D 2 -L 1 -D 3 -R 2 -D 5 -L 3 -R 6 -U 4 -D 4 -L 4 -U 2 -D 2 -L 4 -D 6 -U 5 -D 5 -R 6 -D 1 -L 4 -R 2 -U 3 -D 5 -R 4 -U 6 -R 4 -U 6 -L 7 -U 6 -D 1 -U 2 -D 6 -R 4 -U 7 -D 2 -L 6 -R 2 -U 7 -R 7 -L 1 -U 2 -L 5 -R 4 -L 7 -R 3 -D 5 -U 7 -D 4 -L 6 -U 5 -L 4 -D 2 -U 2 -D 2 -U 5 -R 7 -D 3 -U 3 -D 6 -U 4 -D 2 -R 6 -L 5 -U 3 -R 1 -D 7 -R 7 -U 4 -R 7 -U 2 -R 1 -L 4 -U 6 -L 1 -D 1 -U 3 -R 7 -U 1 -R 3 -L 3 -R 2 -U 6 -L 6 -D 7 -L 7 -R 3 -U 5 -L 5 -D 4 -L 7 -R 5 -U 7 -D 5 -R 2 -U 2 -L 4 -U 4 -D 5 -L 6 -R 3 -D 4 -U 3 -D 6 -L 5 -U 1 -L 4 -R 2 -L 2 -U 7 -R 4 -U 4 -L 4 -D 1 -U 1 -D 3 -U 3 -D 3 -R 6 -L 5 -R 6 -D 1 -U 4 -L 5 -U 2 -D 6 -L 1 -U 5 -D 5 -R 5 -D 1 -L 4 -D 2 -U 1 -R 3 -U 3 -L 3 -D 5 -U 2 -R 4 -U 1 -D 8 -R 2 -U 4 -L 4 -D 8 -R 2 -U 6 -D 4 -R 5 -U 4 -R 2 -L 2 -U 4 -D 8 -R 7 -L 5 -R 5 -U 6 -R 6 -U 7 -D 2 -U 6 -D 1 -R 5 -U 1 -D 6 -R 7 -L 1 -R 1 -D 1 -R 3 -D 8 -R 1 -U 2 -L 4 -R 4 -L 6 -R 2 -U 7 -R 1 -L 3 -D 1 -L 3 -U 7 -R 8 -L 7 -D 1 -R 1 -L 7 -D 7 -U 5 -D 5 -L 1 -U 7 -D 7 -R 5 -D 5 -U 5 -R 6 -L 8 -R 6 -L 1 -R 3 -D 1 -L 2 -U 7 -R 5 -L 4 -U 3 -L 6 -U 6 -R 6 -L 4 -U 6 -R 5 -U 2 -R 7 -U 8 -R 5 -U 2 -R 4 -L 5 -R 1 -D 4 -L 8 -R 3 -L 2 -U 7 -R 4 -L 6 -R 5 -U 2 -L 3 -D 8 -R 8 -D 7 -L 4 -D 4 -R 6 -L 7 -U 8 -L 5 -R 4 -D 4 -R 8 -D 2 -L 7 -D 6 -U 3 -L 4 -R 6 -U 8 -L 2 -R 6 -L 7 -U 4 -L 3 -D 2 -R 8 -U 3 -D 2 -U 5 -R 7 -D 7 -L 6 -U 8 -D 6 -U 5 -D 6 -U 2 -L 7 -R 4 -L 9 -R 2 -U 3 -R 7 -U 6 -L 3 -U 8 -L 9 -U 5 -R 1 -L 5 -D 5 -R 8 -L 3 -U 1 -L 2 -D 5 -U 1 -D 8 -U 5 -D 7 -L 9 -U 6 -D 4 -R 5 -U 3 -L 1 -D 9 -R 4 -D 7 -U 2 -R 2 -D 4 -L 2 -U 9 -R 7 -U 1 -R 2 -D 7 -R 3 -D 6 -L 7 -U 5 -R 9 -U 4 -L 7 -R 5 -U 7 -L 4 -D 4 -R 9 -D 5 -L 5 -D 1 -R 2 -D 6 -L 8 -U 8 -L 6 -D 7 -L 5 -U 2 -L 3 -D 9 -U 8 -D 3 -L 8 -R 2 -D 7 -R 5 -D 3 -U 1 -R 3 -L 9 -U 3 -D 2 -L 4 -D 7 -R 8 -U 7 -D 5 -U 5 -R 7 -L 8 -D 7 -L 7 -D 8 -U 5 -R 9 -U 10 -R 5 -U 6 -R 7 -D 9 -L 2 -R 1 -D 2 -R 9 -L 4 -U 4 -R 5 -D 9 -U 4 -L 7 -D 9 -L 4 -D 4 -L 10 -U 9 -L 8 -R 10 -U 9 -L 10 -U 2 -R 8 -L 2 -D 6 -R 1 -D 1 -L 5 -U 2 -R 9 -U 2 -R 1 -U 1 -L 6 -D 1 -R 2 -D 10 -L 7 -R 2 -U 7 -D 4 -R 9 -L 7 -D 8 -U 5 -R 10 -L 10 -D 2 -U 2 -R 8 -U 9 -D 1 -R 2 -L 10 -U 5 -R 8 -L 7 -D 1 -R 7 -D 3 -U 8 -L 4 -D 3 -U 4 -R 5 -U 9 -R 10 -U 3 -R 10 -L 6 -R 5 -U 8 -D 9 -R 4 -U 9 -L 1 -U 7 -R 4 -U 2 -L 7 -D 9 -U 8 -L 7 -U 8 -L 3 -R 7 -D 7 -L 7 -D 6 -L 2 -D 5 -U 4 -R 8 -L 6 -R 7 -D 4 -U 10 -L 8 -R 10 -D 2 -R 1 -U 7 -L 5 -R 5 -L 10 -D 5 -R 10 -U 7 -L 7 -R 9 -D 2 -L 8 -R 11 -D 4 -R 6 -L 5 -R 8 -U 1 -L 6 -U 3 -L 1 -D 10 -L 9 -D 3 -U 10 -L 9 -U 8 -D 11 -U 11 -L 1 -R 2 -U 1 -L 3 -U 2 -D 1 -U 4 -R 6 -L 6 -R 7 -L 9 -R 8 -L 4 -D 11 -L 4 -U 10 -D 6 -L 10 -U 2 -R 3 -L 10 -D 5 -L 1 -D 2 -R 6 -U 2 -L 2 -U 9 -R 10 -L 4 -D 2 -R 10 -L 5 -U 2 -L 1 -D 6 -L 4 -U 5 -D 8 -U 11 -D 5 -U 10 -L 8 -R 5 -L 6 -R 5 -L 2 -R 7 -D 4 -L 9 -D 2 -R 11 -D 5 -U 6 -D 2 -L 4 -R 9 -L 2 -D 5 -R 2 -D 9 -R 8 -L 3 -U 8 -R 9 -D 8 -R 4 -D 5 -U 7 -D 7 -R 4 -D 10 -L 1 -D 5 -U 11 -L 11 -U 11 -L 10 -U 9 -L 6 -D 4 -R 6 -D 8 -U 6 -D 11 -R 2 -U 9 -L 6 -U 5 -R 10 -D 8 -L 9 -R 8 -D 6 -L 8 -D 12 -U 2 -R 1 -L 1 -U 1 -R 6 -D 3 -U 6 -D 5 -R 9 -L 12 -U 7 -R 6 -L 9 -U 1 -R 12 -D 11 -R 6 -U 11 -D 4 -L 2 -R 12 -U 5 -R 3 -U 11 -D 6 -U 9 -L 10 -U 2 -L 9 -U 9 -R 6 -L 12 -D 2 -U 10 -R 3 -U 12 -L 12 -R 4 -L 11 -D 1 -L 3 -D 11 -U 5 -D 1 -U 12 -L 12 -U 5 -R 8 -L 1 -D 1 -L 3 -U 1 -R 4 -D 4 -L 6 -R 11 -U 11 -D 2 -U 7 -L 3 -D 3 -R 10 -D 1 -U 8 -D 7 -U 6 -L 10 -R 3 -L 6 -D 10 -L 2 -U 6 -D 8 -R 2 -L 5 -U 1 -D 5 -U 10 -D 5 -L 7 -U 3 -R 6 -D 2 -U 5 -D 10 -L 5 -D 2 -R 9 -L 11 -D 3 -L 6 -R 11 -U 10 -L 12 -D 12 -U 8 -D 5 -R 1 -L 6 -D 11 -U 12 -R 11 -D 12 -L 5 -D 7 -R 10 -U 4 -L 1 -R 3 -U 9 -L 13 -U 8 -R 3 -D 4 -R 8 -D 3 -R 8 -D 13 -U 1 -R 12 -U 12 -L 8 -R 5 -D 1 -U 3 -R 9 -D 6 -U 11 -R 3 -D 12 -R 8 -L 6 -D 8 -U 6 -R 13 -L 10 -U 6 -R 5 -L 11 -U 9 -L 12 -R 8 -L 6 -R 3 -D 12 -L 9 -D 3 -U 5 -L 6 -R 7 -L 13 -D 4 -R 7 -U 5 -D 13 -R 4 -U 11 -D 8 -R 5 -D 5 -U 3 -L 6 -U 4 -R 8 -D 8 -U 9 -L 8 -U 2 -R 7 -L 2 -U 1 -D 12 -R 3 -L 2 -R 8 -D 4 -L 7 -R 8 -D 6 -U 10 -R 7 -L 9 -D 5 -R 12 -U 2 -R 10 -U 4 -L 13 -R 9 -L 12 -U 3 -R 10 -U 3 -L 8 -R 12 -U 8 -R 11 -U 5 -L 3 -D 10 -R 8 -D 4 -R 4 -U 9 -L 13 -U 5 -R 11 -L 12 -U 11 -D 9 -L 5 -R 13 -U 2 -L 1 -U 12 -R 13 -L 1 -R 2 -U 6 -R 12 -D 11 -L 8 -U 13 -L 14 -U 13 -L 3 -U 9 -L 10 -R 11 -D 6 -U 8 -D 11 -U 5 -L 11 -U 8 -L 3 -R 2 -D 11 -L 12 -U 14 -R 3 -D 1 -U 14 -R 7 -D 14 -R 4 -D 5 -L 13 -R 2 -L 13 -U 8 -L 7 -D 14 -L 2 -U 13 -D 2 -L 13 -D 13 -U 5 -L 12 -U 3 -L 6 -D 2 -U 3 -L 9 -D 14 -R 3 -L 1 -R 6 -D 3 -U 6 -D 9 -L 5 -D 11 -L 1 -D 11 -L 9 -D 8 -U 13 -D 4 -R 5 -D 14 -L 10 -U 14 -D 14 -R 1 -L 8 -U 5 -D 11 -U 8 -D 14 -L 4 -D 13 -U 13 -R 6 -U 11 -L 9 -U 6 -D 11 -R 11 -U 11 -D 14 -R 6 -L 13 -U 1 -R 11 -L 9 -R 11 -L 4 -R 14 -L 2 -D 14 -R 3 -U 9 -D 6 -U 12 -R 7 -U 9 -L 4 -D 9 -R 11 -L 9 -R 14 -L 12 -U 1 -L 10 -U 7 -R 13 -D 3 -R 8 -L 4 -R 4 -L 3 -U 1 -R 14 -D 4 -R 9 -U 3 -L 12 -U 11 -R 5 -U 4 -L 11 -D 14 -L 12 -R 7 -L 15 -R 14 -D 12 -U 10 -R 11 -D 9 -U 14 -R 5 -D 13 -L 14 -D 9 -U 1 -R 10 -U 15 -R 12 -D 13 -L 9 -R 9 -U 8 -R 2 -U 3 -R 3 -D 8 -U 14 -R 4 -L 7 -U 11 -D 6 -L 14 -D 6 -R 8 -U 8 -R 5 -L 13 -R 9 -D 6 -R 6 -L 9 -U 2 -R 13 -U 4 -D 9 -U 14 -R 15 -D 2 -R 6 -D 7 -L 3 -U 14 -D 5 -U 13 -R 8 -D 15 -U 3 -R 9 -D 10 -R 11 -U 12 -D 8 -R 3 -L 5 -D 15 -L 1 -U 6 -R 15 -D 1 -R 13 -D 1 -U 2 -R 15 -D 3 -L 4 -U 9 -D 1 -L 13 -R 11 -U 15 -R 5 -U 15 -R 13 -L 5 -U 2 -R 5 -D 11 -U 11 -L 12 -D 15 -R 11 -L 7 -D 2 -L 11 -D 2 -L 7 -U 7 -R 5 -D 8 -R 6 -L 10 -U 5 -R 3 -U 7 -R 1 -U 7 -L 5 -U 11 -R 14 -U 9 -D 8 -R 10 -L 9 -R 11 -U 6 -R 14 -U 16 -D 13 -U 16 -L 1 -D 2 -R 13 -D 11 -U 9 -R 4 -L 11 -U 2 -L 7 -R 2 -U 14 -L 11 -R 10 -L 1 -R 15 -U 9 -L 16 -R 11 -D 15 -U 10 -L 7 -R 9 -L 9 -D 16 -U 7 -D 10 -R 11 -L 3 -R 16 -L 6 -R 7 -L 7 -R 13 -L 5 -R 6 -D 15 -R 11 -D 7 -U 5 -D 11 -U 13 -R 13 -U 12 -D 10 -L 11 -D 10 -R 6 -U 10 -D 9 -U 1 -L 13 -U 13 -L 11 -U 15 -L 7 -R 2 -D 2 -U 9 -D 1 -L 15 -U 6 -D 3 -U 7 -D 6 -L 6 -U 14 -L 3 -U 16 -L 8 -D 8 -R 4 -D 1 -U 13 -L 4 -U 1 -R 15 -U 3 -D 6 -L 4 -D 12 -L 16 -D 7 -U 10 -L 3 -R 6 -L 12 -R 9 -D 1 -U 7 -L 14 -D 5 -U 15 -D 14 -L 5 -R 6 -D 4 -U 10 -L 17 -R 9 -D 1 -R 12 -U 17 -R 14 -U 4 -R 14 -U 2 -D 13 -R 6 -L 12 -D 10 -L 9 -D 17 -R 14 -D 12 -L 5 -D 17 -L 8 -U 16 -D 9 -U 7 -L 11 -R 13 -U 2 -D 15 -R 2 -L 5 -U 6 -L 5 -U 15 -D 13 -U 17 -R 17 -L 4 -U 17 -R 1 -D 16 -L 16 -R 7 -U 14 -L 3 -D 12 -L 2 -D 6 -R 10 -U 11 -R 8 -D 8 -U 3 -R 5 -U 12 -D 5 -U 14 -R 13 -U 12 -R 1 -U 4 -D 12 -L 6 -R 8 -D 9 -U 4 -D 16 -L 4 -D 7 -L 2 -U 13 -L 7 -D 16 -U 1 -D 14 -U 14 -L 10 -U 2 -D 11 -L 5 -D 14 -U 14 -L 11 -R 17 -D 3 -R 7 -D 6 -R 17 -D 4 -R 14 -L 7 -U 17 -L 6 -D 7 -L 9 -U 10 -L 4 -D 1 -L 17 -R 4 -D 13 -L 4 -D 9 -U 12 -L 6 -R 18 -L 8 -R 16 -L 14 -D 9 -L 18 -D 2 -U 4 -D 7 -R 8 -D 13 -L 17 -U 3 -D 10 -R 10 -L 13 -D 15 -L 14 -D 11 -R 7 -L 3 -R 17 -U 13 -R 14 -D 5 -L 12 -U 4 -R 17 -D 2 -U 7 -R 9 -U 16 -L 18 -D 13 -R 6 -D 8 -L 18 -D 7 -L 11 -R 9 -U 18 -L 10 -U 11 -D 10 -L 7 -D 9 -R 17 -L 4 -R 2 -U 1 -D 9 -U 16 -D 1 -U 5 -R 9 -U 13 -D 10 -U 10 -L 5 -D 1 -U 11 -L 3 -D 15 -U 2 -R 15 -D 1 -L 15 -R 16 -U 14 -L 9 -D 4 -R 15 -L 9 -U 6 -L 4 -R 13 -U 17 -D 6 -L 14 -D 18 -L 17 -D 2 -L 12 -D 11 -R 14 -U 3 -R 12 -L 9 -R 14 -L 16 -U 14 -L 9 -D 1 -L 7 -D 2 -R 2 -L 18 -D 3 -L 10 -D 15 -L 14 -U 11 -L 11 -D 3 -L 4 -R 14 -D 11 -R 8 -D 8 -L 2 -U 15 -L 15 -D 6 -U 1 -D 19 -U 5 -L 5 -U 17 -D 6 -R 5 -L 10 -R 19 -D 9 -R 12 -L 10 -R 1 -L 17 -U 14 -L 1 -D 1 -U 14 -D 14 -L 8 -D 10 -U 12 -L 18 -U 3 -D 17 -U 4 -L 13 -D 3 -R 16 -U 7 -R 19 -U 14 -D 7 -R 15 -L 19 -R 15 -U 11 -L 9 -U 15 -D 16 -U 3 -L 10 -U 1 -D 4 -U 13 -R 7 -U 15 -D 13 -R 18 -L 4 -U 11 -D 3 -L 14 -R 9 -L 8 -R 8 -U 10 -R 17 -L 16 -U 17 -D 15 -U 8 -D 5 -L 8 -R 9 -D 12 -L 2 -U 19 -L 11 -R 18 -D 14 -R 6 -D 4 -L 3 -D 15 -L 3 -R 1 -U 4 -L 6 -U 14 -L 18 -D 13 -R 12 -U 4 -L 12 -U 15 -L 15 -D 2 -L 13 -R 15 -L 3 -U 13 -R 6 -D 1 -U 12 -D 19 -U 10 -L 13 -D 9 -L 18 -U 3 -D 13 -U 2 -L 10 -D 18 -U 16 -D 9 -U 12 +noop +noop +noop +addx 4 +addx 3 +addx 3 +addx 3 +noop +addx 2 +addx 1 +addx -7 +addx 10 +addx 1 +addx 5 +addx -3 +addx -7 +addx 13 +addx 5 +addx 2 +addx 1 +addx -30 +addx -8 +noop +addx 3 +addx 2 +addx 7 +noop +addx -2 +addx 5 +addx 2 +addx -7 +addx 8 +addx 2 +addx 5 +addx 2 +addx -12 +noop +addx 17 +addx 3 +addx -2 +addx 2 +noop +addx 3 +addx -38 +noop +addx 3 +addx 4 +noop +addx 5 +noop +noop +noop +addx 1 +addx 2 +addx 5 +addx 2 +addx -3 +addx 4 +addx 2 +noop +noop +addx 7 +addx -30 +addx 31 +addx 4 +noop +addx -24 +addx -12 +addx 1 +addx 5 +addx 5 +noop +noop +noop +addx -12 +addx 13 +addx 4 +noop +addx 23 +addx -19 +addx 1 +addx 5 +addx 12 +addx -28 +addx 19 +noop +addx 3 +addx 2 +addx 5 +addx -40 +addx 4 +addx 32 +addx -31 +noop +addx 13 +addx -8 +addx 5 +addx 2 +addx 5 +noop +noop +noop +addx 2 +addx -7 +addx 8 +addx -7 +addx 14 +addx 3 +addx -2 +addx 2 +addx 5 +addx -40 +noop +noop +addx 3 +addx 4 +addx 1 +noop +addx 2 +addx 5 +addx 2 +addx 21 +noop +addx -16 +addx 3 +noop +addx 2 +noop +addx 1 +noop +noop +addx 4 +addx 5 +noop +noop +noop +noop +noop +noop +noop + diff --git a/inputs/sample.txt b/inputs/sample.txt index 60bd43b..37ee8ee 100644 --- a/inputs/sample.txt +++ b/inputs/sample.txt @@ -1,8 +1,146 @@ -R 5 -U 8 -L 8 -D 3 -R 17 -D 10 -L 25 -U 20 +addx 15 +addx -11 +addx 6 +addx -3 +addx 5 +addx -1 +addx -8 +addx 13 +addx 4 +noop +addx -1 +addx 5 +addx -1 +addx 5 +addx -1 +addx 5 +addx -1 +addx 5 +addx -1 +addx -35 +addx 1 +addx 24 +addx -19 +addx 1 +addx 16 +addx -11 +noop +noop +addx 21 +addx -15 +noop +noop +addx -3 +addx 9 +addx 1 +addx -3 +addx 8 +addx 1 +addx 5 +noop +noop +noop +noop +noop +addx -36 +noop +addx 1 +addx 7 +noop +noop +noop +addx 2 +addx 6 +noop +noop +noop +noop +noop +addx 1 +noop +noop +addx 7 +addx 1 +noop +addx -13 +addx 13 +addx 7 +noop +addx 1 +addx -33 +noop +noop +noop +addx 2 +noop +noop +noop +addx 8 +noop +addx -1 +addx 2 +addx 1 +noop +addx 17 +addx -9 +addx 1 +addx 1 +addx -3 +addx 11 +noop +noop +addx 1 +noop +addx 1 +noop +noop +addx -13 +addx -19 +addx 1 +addx 3 +addx 26 +addx -30 +addx 12 +addx -1 +addx 3 +addx 1 +noop +noop +noop +addx -9 +addx 18 +addx 1 +addx 2 +noop +noop +addx 9 +noop +noop +noop +addx -1 +addx 2 +addx -37 +addx 1 +addx 3 +noop +addx 15 +addx -21 +addx 22 +addx -6 +addx 1 +noop +addx 2 +addx 1 +noop +addx -10 +noop +noop +addx 20 +addx 1 +addx 2 +addx 2 +addx -6 +addx -11 +noop +noop +noop diff --git a/src/main.rs b/src/main.rs index 1ec4a62..9ffaf9d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,37 +1,32 @@ -#![feature(byte_slice_trim_ascii)] #![feature(test)] extern crate test; -use std::collections::HashSet; - -const INPUTS: [&[u8]; 2] = [ - include_bytes!("../inputs/sample.txt"), - include_bytes!("../inputs/input.txt"), +const INPUTS: [&str; 2] = [ + include_str!("../inputs/sample.txt"), + include_str!("../inputs/input.txt"), ]; #[derive(Debug)] -enum Move { - R(u8), - L(u8), - U(u8), - D(u8), +enum Ins { + Noop, + Addx(i32), } -fn parse(input: &[u8]) -> Vec { +fn parse(input: &'static str) -> Vec { input - .trim_ascii() - .split(|&c| c == b'\n') - .map(|line| { - let (a, b) = line.split_at(1); + .trim() + .split('\n') + .flat_map(|line| { + let (a, b) = line.split_at(4); - let b = b.iter().skip(1).fold(0, |a, x| (a * 10) + (x - b'0')); - - match &a { - [b'R'] => Move::R(b), - [b'L'] => Move::L(b), - [b'U'] => Move::U(b), - [b'D'] => Move::D(b), + match a { + "noop" => vec![Ins::Noop], + "addx" => { + let b = b.trim(); + let b: i32 = b.parse::().unwrap(); + vec![Ins::Noop, Ins::Addx(b)] + } _ => unreachable!(), } }) @@ -46,55 +41,33 @@ fn main() { } } -fn solution(input: Vec) -> usize { - let mut locs = [(0, 0); 10]; - let mut set: HashSet<(i32, i32)> = HashSet::with_capacity_and_hasher(3000, Default::default()); - set.insert((0, 0)); +fn solution(input: Vec) -> i32 { + let mut register = 1i32; + let mut cycle = 0; + let mut store = [0; 220]; - for mmove in input { - let (steps, (dsxh, dsyh)) = match mmove { - Move::R(v) => (v, (1, 0)), - Move::L(v) => (v, (-1, 0)), - Move::U(v) => (v, (0, -1)), - Move::D(v) => (v, (0, 1)), - }; - - let locs9 = locs[9]; - - for _ in 0..steps { - // Update Head position - locs[0].0 += dsxh; - locs[0].1 += dsyh; - - // One by one, Updated position of each knot - for i in 1..10 { - let loci = move_tail(locs[i - 1], locs[i]); - if loci == locs[i] { - break; - } - locs[i] = loci; + for ip in input.into_iter() { + match ip { + Ins::Noop => { + store[cycle] = register; } - - if locs9 != locs[9] { - set.insert(locs[9]); + Ins::Addx(v) => { + store[cycle] = register; + register += v; } } + cycle += 1; + if cycle >= 220 { + break; + } } - set.len() -} - -#[inline] -const fn move_tail((sxh, syh): (i32, i32), (sxt, syt): (i32, i32)) -> (i32, i32) { - let dx = sxh - sxt; - let dy = syh - syt; - - if dx.abs() == 2 || dy.abs() == 2 { - // signum gets you 1 or -1 depending on the sign of number - (sxt + dx.signum(), syt + dy.signum()) - } else { - (sxt, syt) - } + store[20 - 1] * 20 + + store[60 - 1] * 60 + + store[100 - 1] * 100 + + store[140 - 1] * 140 + + store[180 - 1] * 180 + + store[220 - 1] * 220 } #[bench]