commit 8931d043b9238d314839c52816e56c12c6da0350
parent a2f7e550d795b7112cabf6290c80e57f92bdbe4a
Author: Jake Bauer <jbauer@paritybit.ca>
Date: Sun, 11 Dec 2022 18:31:27 -0500
Day 9 complete minus part 2 because no
Diffstat:
A | day9/input.txt | | | 2000 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
A | day9/main.c | | | 111 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
2 files changed, 2111 insertions(+), 0 deletions(-)
diff --git a/day9/input.txt b/day9/input.txt
@@ -0,0 +1,2000 @@
+U 1
+R 2
+D 2
+U 2
+L 1
+U 1
+R 1
+U 2
+R 1
+D 1
+U 2
+L 1
+R 1
+U 1
+L 1
+D 1
+L 1
+D 1
+U 2
+R 2
+U 1
+L 1
+R 2
+U 2
+L 2
+U 2
+R 2
+D 2
+R 1
+U 2
+L 2
+U 1
+R 1
+L 2
+U 2
+R 2
+L 1
+R 2
+L 1
+D 1
+R 2
+L 2
+D 2
+L 1
+D 1
+L 2
+U 1
+R 2
+L 2
+U 2
+D 2
+R 2
+D 2
+L 2
+D 2
+L 1
+D 2
+L 1
+R 2
+L 2
+R 1
+D 2
+U 1
+R 2
+L 1
+R 2
+D 1
+U 1
+R 1
+U 2
+D 2
+R 1
+D 1
+U 1
+L 2
+D 2
+U 1
+R 2
+L 2
+R 1
+D 2
+L 1
+U 1
+D 1
+U 2
+D 1
+U 1
+D 2
+R 2
+L 1
+D 1
+U 1
+R 1
+L 2
+D 1
+L 2
+R 1
+L 2
+U 2
+R 1
+L 2
+D 2
+L 2
+U 2
+L 1
+U 2
+R 2
+L 2
+R 2
+L 2
+U 1
+L 1
+U 1
+D 1
+U 3
+R 2
+L 3
+R 2
+D 2
+U 3
+R 1
+L 3
+D 1
+U 3
+R 2
+D 1
+U 3
+R 2
+L 3
+R 3
+L 2
+R 1
+U 2
+R 2
+U 3
+D 1
+U 3
+L 2
+D 1
+R 2
+U 3
+R 3
+L 3
+D 3
+R 3
+U 3
+L 3
+U 1
+L 2
+U 3
+L 1
+U 1
+D 3
+R 3
+U 1
+R 1
+U 1
+L 3
+R 2
+U 2
+L 3
+D 1
+L 2
+D 2
+L 2
+R 2
+U 3
+D 3
+R 2
+U 3
+L 2
+U 1
+D 2
+R 3
+L 1
+U 1
+R 2
+D 3
+L 1
+R 1
+U 1
+D 3
+R 2
+D 3
+R 2
+U 1
+L 2
+U 1
+R 2
+U 1
+R 2
+L 2
+U 2
+R 3
+L 3
+D 2
+L 1
+R 3
+D 1
+U 1
+L 2
+R 1
+D 3
+U 3
+D 3
+U 1
+R 2
+L 3
+R 1
+L 3
+R 2
+D 2
+U 1
+D 1
+L 3
+R 1
+L 3
+R 3
+L 1
+D 2
+L 3
+U 2
+D 1
+L 1
+U 2
+R 3
+L 2
+R 3
+U 3
+L 2
+D 4
+U 4
+R 3
+U 2
+L 1
+U 3
+D 4
+L 2
+U 3
+L 4
+D 4
+R 3
+D 3
+R 1
+D 2
+L 1
+R 2
+D 3
+L 1
+R 2
+U 3
+D 4
+R 4
+L 2
+R 4
+U 3
+R 4
+U 4
+L 4
+D 3
+R 4
+D 1
+U 3
+L 3
+R 1
+U 2
+R 3
+U 4
+D 2
+U 3
+D 2
+L 2
+D 3
+L 4
+R 2
+U 2
+L 2
+U 4
+D 2
+U 4
+L 4
+U 2
+R 3
+D 4
+U 4
+L 3
+D 3
+R 4
+L 3
+R 2
+L 4
+U 3
+D 2
+L 4
+R 1
+U 2
+L 3
+D 1
+R 2
+U 2
+D 4
+R 1
+U 1
+R 2
+D 2
+L 3
+R 1
+U 2
+R 1
+D 4
+U 1
+R 1
+U 3
+D 1
+U 2
+D 3
+U 3
+L 2
+U 4
+R 1
+L 2
+D 2
+L 2
+D 3
+U 3
+L 3
+U 1
+D 1
+R 1
+D 2
+L 2
+U 2
+D 3
+R 1
+L 4
+U 3
+L 5
+R 5
+L 4
+D 4
+R 4
+L 4
+R 4
+L 2
+R 3
+D 3
+R 2
+L 4
+R 2
+U 5
+D 5
+U 1
+R 4
+U 2
+R 3
+L 4
+D 2
+U 3
+D 4
+U 2
+D 5
+L 5
+R 2
+U 3
+R 1
+D 1
+R 4
+U 5
+R 3
+L 3
+U 3
+L 1
+U 5
+D 2
+U 3
+R 1
+D 5
+L 4
+U 3
+D 1
+L 3
+R 2
+U 1
+L 2
+R 2
+D 4
+R 2
+L 3
+U 2
+D 1
+L 1
+R 4
+L 1
+D 2
+R 1
+L 5
+R 4
+U 2
+R 2
+U 1
+D 3
+R 3
+L 1
+U 5
+R 2
+D 3
+U 3
+R 1
+U 4
+R 1
+D 2
+L 1
+D 4
+L 1
+R 5
+L 5
+R 5
+L 1
+U 5
+R 2
+U 5
+L 2
+D 3
+U 5
+L 4
+D 5
+U 2
+R 2
+D 2
+R 4
+L 4
+D 5
+R 2
+L 2
+R 5
+U 2
+L 1
+U 2
+D 2
+R 5
+U 1
+L 5
+R 1
+L 4
+D 4
+L 3
+D 4
+U 2
+L 2
+D 5
+U 4
+R 3
+L 6
+D 3
+R 2
+U 2
+L 2
+U 1
+R 6
+U 5
+R 2
+U 2
+R 1
+U 5
+L 3
+U 2
+R 5
+L 3
+U 3
+D 2
+U 5
+L 5
+U 4
+R 6
+D 2
+L 6
+U 1
+L 5
+D 4
+U 3
+D 3
+U 5
+L 6
+U 4
+D 3
+U 4
+D 6
+R 1
+U 4
+L 1
+D 4
+U 5
+R 2
+L 3
+R 2
+U 2
+D 1
+L 3
+R 6
+L 2
+U 5
+L 3
+D 1
+L 2
+D 4
+U 4
+L 4
+D 1
+L 2
+D 2
+R 5
+L 2
+R 2
+L 3
+R 2
+U 2
+L 1
+U 4
+D 4
+R 5
+L 3
+U 2
+D 3
+R 6
+D 3
+R 3
+L 4
+U 5
+D 3
+R 5
+U 4
+R 2
+U 4
+L 1
+U 6
+D 6
+L 1
+R 2
+U 6
+D 5
+L 1
+U 3
+L 1
+D 6
+L 3
+U 4
+D 6
+U 4
+D 3
+L 3
+U 5
+R 2
+L 5
+D 3
+R 2
+D 2
+U 1
+D 2
+R 2
+U 5
+R 4
+U 1
+R 5
+D 2
+R 2
+U 5
+L 6
+U 3
+L 7
+D 1
+R 4
+D 4
+R 7
+L 7
+U 7
+D 4
+L 4
+R 6
+U 6
+L 7
+R 3
+L 6
+U 6
+R 5
+D 4
+L 6
+U 1
+R 6
+D 3
+U 5
+D 3
+U 2
+R 7
+U 5
+D 5
+L 2
+D 2
+U 4
+L 3
+D 1
+L 1
+R 2
+L 2
+R 6
+D 4
+L 7
+D 7
+R 4
+L 6
+R 3
+L 3
+U 7
+R 3
+L 5
+D 6
+R 3
+U 5
+D 3
+L 4
+U 7
+R 6
+D 6
+U 5
+R 3
+L 3
+R 6
+L 3
+D 1
+L 3
+U 5
+D 2
+L 3
+R 4
+L 7
+R 5
+U 3
+L 7
+D 5
+U 6
+D 5
+L 6
+R 6
+L 1
+R 3
+D 4
+L 5
+R 2
+U 4
+R 2
+D 4
+R 3
+D 2
+L 3
+R 2
+L 4
+R 5
+U 7
+L 7
+D 3
+R 5
+L 1
+U 4
+R 5
+U 4
+R 6
+L 1
+R 4
+D 8
+L 2
+U 7
+L 3
+R 3
+U 1
+D 8
+U 5
+D 3
+R 3
+L 2
+U 2
+D 8
+R 3
+U 4
+L 6
+D 7
+R 7
+U 6
+L 7
+U 5
+R 1
+L 2
+U 4
+D 1
+L 6
+D 5
+R 7
+U 7
+R 8
+L 7
+U 7
+D 3
+L 3
+D 4
+L 1
+R 6
+D 5
+U 1
+D 8
+R 1
+L 2
+U 1
+D 2
+L 3
+R 7
+L 2
+D 8
+R 5
+U 6
+D 4
+L 1
+U 6
+R 1
+D 4
+R 4
+L 2
+D 4
+R 1
+U 2
+R 8
+L 6
+R 8
+U 8
+L 3
+R 6
+D 3
+R 2
+L 3
+U 6
+D 6
+U 4
+R 7
+L 3
+R 2
+L 4
+U 3
+R 7
+D 8
+R 1
+D 6
+U 7
+R 2
+U 2
+L 6
+U 5
+R 1
+D 1
+R 6
+L 2
+U 3
+D 2
+L 2
+D 5
+R 4
+L 1
+D 7
+R 6
+D 4
+U 2
+D 5
+U 3
+D 8
+U 6
+R 5
+L 6
+U 7
+L 3
+R 8
+U 3
+L 2
+R 3
+L 5
+R 3
+L 2
+U 9
+D 2
+U 5
+R 7
+U 9
+L 9
+R 6
+L 7
+D 1
+L 4
+D 3
+R 7
+L 6
+R 9
+D 6
+R 4
+D 8
+L 1
+U 5
+R 9
+D 9
+U 6
+L 5
+R 4
+D 2
+R 5
+D 1
+R 6
+D 3
+R 8
+L 1
+U 2
+R 5
+U 3
+L 1
+R 8
+D 6
+L 5
+D 7
+R 3
+U 2
+L 7
+U 3
+D 4
+L 2
+R 8
+D 6
+L 3
+U 5
+L 1
+U 5
+L 4
+R 7
+U 6
+R 1
+D 3
+U 3
+D 2
+R 4
+L 5
+U 2
+R 6
+L 8
+U 6
+L 9
+D 3
+R 3
+U 9
+D 8
+L 2
+R 7
+D 6
+R 1
+D 8
+U 8
+D 2
+U 4
+D 8
+L 9
+R 8
+D 8
+R 7
+U 8
+L 8
+U 8
+R 7
+L 8
+U 3
+D 6
+R 7
+D 2
+L 5
+U 8
+D 7
+U 6
+R 3
+D 7
+U 9
+L 7
+R 3
+L 1
+U 9
+L 7
+U 2
+D 7
+L 5
+R 9
+D 2
+R 7
+U 6
+D 7
+U 3
+R 8
+U 9
+L 8
+R 8
+D 10
+L 7
+R 3
+U 5
+R 5
+D 9
+U 10
+L 2
+D 4
+L 2
+U 1
+D 3
+L 3
+U 7
+D 6
+L 6
+D 7
+L 8
+U 1
+D 9
+L 7
+U 4
+L 3
+U 6
+D 2
+L 5
+U 10
+D 9
+U 8
+D 1
+R 10
+U 4
+L 1
+R 7
+U 2
+L 5
+D 5
+R 7
+D 1
+R 4
+U 2
+D 6
+L 7
+U 10
+R 3
+L 9
+D 7
+L 2
+R 5
+U 10
+D 10
+R 9
+D 5
+U 3
+L 7
+D 5
+U 6
+D 7
+L 6
+D 10
+R 7
+U 8
+L 4
+D 9
+L 4
+U 5
+R 9
+U 9
+R 3
+U 2
+R 2
+D 1
+R 1
+U 6
+R 8
+D 10
+U 2
+D 9
+L 8
+R 1
+D 1
+L 9
+R 8
+D 9
+R 5
+L 9
+U 10
+D 4
+R 7
+U 4
+L 3
+U 8
+L 2
+U 9
+D 9
+L 1
+R 4
+U 2
+L 4
+U 3
+D 7
+U 11
+R 6
+U 9
+D 6
+R 7
+L 1
+D 7
+R 2
+D 6
+U 2
+L 2
+U 4
+R 6
+U 6
+L 11
+D 7
+R 9
+L 2
+D 10
+L 10
+U 4
+L 6
+D 11
+U 9
+L 1
+R 10
+L 7
+R 4
+D 5
+L 3
+U 2
+R 9
+L 9
+D 1
+L 11
+D 5
+U 6
+D 5
+U 9
+R 1
+L 7
+U 3
+R 7
+L 2
+D 6
+R 3
+U 2
+D 5
+R 9
+L 3
+D 11
+U 9
+D 11
+R 2
+D 7
+R 9
+U 4
+D 6
+U 7
+R 10
+D 3
+L 4
+R 9
+D 3
+L 7
+R 7
+L 11
+D 6
+R 9
+D 9
+R 3
+U 3
+R 3
+L 6
+D 11
+R 2
+L 10
+U 2
+R 2
+D 11
+R 7
+D 8
+R 2
+D 10
+U 5
+D 3
+L 10
+R 1
+D 5
+R 4
+L 10
+U 5
+D 9
+U 2
+L 3
+U 3
+R 5
+D 4
+L 1
+D 1
+R 10
+L 4
+D 8
+L 5
+D 5
+L 3
+D 5
+L 3
+R 1
+L 3
+R 4
+U 9
+R 4
+D 12
+L 5
+R 4
+L 11
+D 10
+U 3
+R 2
+U 5
+L 6
+D 5
+U 5
+D 10
+R 12
+L 2
+R 10
+D 11
+R 12
+U 5
+R 4
+L 4
+U 2
+R 12
+L 6
+D 3
+R 2
+D 1
+U 9
+L 6
+U 6
+L 10
+D 8
+R 9
+L 1
+U 1
+D 5
+U 4
+R 10
+U 5
+R 10
+D 12
+U 6
+D 9
+U 3
+L 8
+R 8
+D 7
+L 6
+U 7
+R 1
+U 6
+D 9
+R 2
+U 11
+D 7
+L 12
+D 6
+L 5
+U 8
+R 8
+L 8
+D 3
+R 7
+L 11
+D 1
+L 5
+D 5
+U 8
+D 2
+R 8
+L 6
+D 7
+L 3
+D 3
+U 9
+L 1
+U 8
+D 7
+L 8
+U 4
+R 12
+U 7
+L 10
+D 4
+U 7
+D 7
+U 5
+L 4
+R 9
+D 5
+R 4
+U 2
+R 1
+D 9
+U 7
+R 9
+U 12
+D 4
+R 8
+U 4
+D 10
+L 10
+D 11
+L 8
+R 11
+U 5
+D 4
+L 3
+D 1
+U 7
+L 5
+R 13
+L 2
+R 9
+L 6
+R 6
+L 2
+U 10
+D 11
+U 13
+R 11
+U 6
+L 7
+D 11
+R 7
+U 4
+L 1
+D 9
+R 7
+L 11
+U 13
+L 8
+R 12
+U 5
+R 9
+U 11
+R 3
+D 11
+U 9
+L 8
+U 6
+D 6
+L 11
+U 4
+D 3
+U 11
+D 1
+L 6
+U 5
+R 10
+L 10
+R 8
+L 12
+R 4
+U 3
+R 8
+L 8
+U 4
+L 10
+U 9
+R 8
+U 3
+D 2
+U 4
+D 10
+L 6
+R 10
+U 8
+L 9
+R 13
+D 8
+U 10
+D 10
+L 13
+U 1
+R 4
+U 11
+D 12
+L 1
+R 2
+U 12
+D 7
+U 9
+R 13
+U 5
+D 6
+R 4
+L 6
+U 9
+L 5
+U 8
+D 4
+L 5
+U 6
+L 8
+U 1
+R 3
+U 8
+R 2
+D 5
+U 12
+D 9
+L 2
+U 3
+R 11
+U 9
+R 7
+D 10
+U 2
+L 3
+D 3
+U 9
+D 6
+U 1
+R 9
+L 5
+R 2
+L 2
+R 11
+D 7
+L 10
+U 13
+L 6
+R 11
+U 6
+D 11
+U 4
+R 10
+D 5
+R 4
+L 6
+U 3
+L 8
+D 6
+U 14
+R 3
+U 1
+L 6
+R 7
+U 9
+L 9
+D 10
+U 10
+D 12
+R 9
+D 12
+R 4
+D 12
+U 9
+R 9
+U 2
+L 11
+D 13
+U 12
+L 7
+D 14
+R 4
+D 14
+U 11
+D 5
+R 10
+L 2
+D 11
+L 3
+U 9
+R 4
+L 8
+U 8
+R 7
+U 7
+D 5
+R 8
+U 5
+L 3
+R 7
+D 6
+R 12
+U 3
+D 8
+L 8
+U 3
+L 8
+R 7
+L 13
+U 2
+L 8
+U 14
+R 5
+L 1
+D 14
+R 10
+U 14
+R 6
+U 14
+D 5
+U 13
+D 1
+U 12
+R 7
+L 2
+U 4
+R 10
+U 8
+R 12
+L 2
+U 7
+D 9
+L 6
+D 3
+U 7
+L 11
+U 8
+R 7
+D 5
+U 5
+R 13
+D 9
+R 14
+U 8
+R 14
+D 8
+U 1
+L 13
+R 12
+D 7
+L 6
+R 3
+D 10
+R 10
+L 6
+D 12
+L 5
+U 14
+D 1
+U 8
+R 5
+D 15
+R 11
+D 10
+L 11
+D 13
+L 5
+D 3
+U 15
+R 6
+L 12
+R 12
+L 15
+U 5
+D 8
+R 13
+D 10
+R 4
+L 6
+U 8
+R 6
+D 15
+U 6
+L 13
+D 15
+U 11
+D 6
+U 7
+L 1
+R 5
+L 1
+U 7
+D 15
+L 1
+D 7
+U 6
+R 14
+D 4
+R 5
+U 4
+D 5
+R 13
+D 5
+L 1
+D 11
+L 3
+D 3
+R 13
+L 15
+D 4
+R 4
+U 5
+L 10
+U 14
+D 2
+R 9
+U 8
+R 1
+U 13
+L 5
+U 12
+R 10
+U 8
+L 9
+D 7
+R 10
+L 8
+R 13
+D 12
+L 2
+R 4
+D 14
+R 14
+D 2
+U 4
+D 14
+U 1
+L 3
+R 7
+L 2
+D 10
+R 10
+L 1
+R 5
+D 6
+L 5
+R 11
+U 15
+L 6
+D 4
+R 14
+D 6
+R 1
+L 12
+R 15
+L 10
+U 1
+D 3
+R 2
+D 2
+L 8
+U 9
+D 14
+L 4
+R 2
+U 14
+L 11
+D 12
+U 5
+L 11
+R 5
+U 14
+R 9
+U 12
+L 12
+D 9
+R 10
+D 4
+L 3
+U 4
+R 2
+D 9
+U 5
+L 13
+U 5
+R 15
+L 4
+R 10
+U 8
+R 3
+U 13
+D 4
+U 4
+L 8
+U 1
+D 13
+R 10
+U 13
+L 5
+U 7
+D 2
+U 15
+R 10
+U 12
+D 9
+R 12
+L 3
+D 7
+R 7
+L 3
+R 14
+L 9
+D 4
+R 8
+D 1
+R 1
+U 1
+R 14
+L 7
+R 10
+D 14
+L 1
+U 12
+D 8
+U 1
+R 13
+U 12
+D 4
+U 8
+L 8
+D 8
+L 4
+R 2
+D 6
+R 2
+L 3
+D 16
+R 6
+L 16
+D 16
+L 2
+R 16
+D 15
+L 1
+D 4
+U 3
+L 5
+U 4
+L 4
+D 9
+L 2
+R 8
+D 7
+U 7
+R 12
+U 12
+R 3
+D 8
+L 12
+D 12
+R 13
+U 8
+R 5
+U 2
+D 3
+U 11
+L 13
+R 4
+L 5
+R 9
+D 9
+U 14
+R 15
+L 16
+R 13
+D 11
+U 13
+L 10
+D 11
+L 10
+R 4
+U 7
+D 17
+U 7
+R 10
+U 11
+L 2
+D 8
+U 3
+R 14
+U 13
+D 8
+U 6
+L 2
+D 9
+L 1
+D 4
+U 16
+D 4
+L 13
+U 1
+D 13
+U 12
+R 17
+L 6
+R 17
+L 17
+R 13
+L 9
+U 12
+L 15
+R 17
+U 3
+R 2
+L 12
+U 7
+L 12
+U 9
+L 15
+R 9
+U 3
+L 13
+R 8
+L 3
+R 2
+L 17
+U 14
+D 16
+L 13
+D 2
+U 17
+D 6
+U 8
+L 5
+D 10
+L 3
+D 3
+R 7
+L 16
+R 8
+U 13
+L 17
+U 16
+L 9
+U 8
+D 12
+R 10
+U 11
+D 10
+L 17
+R 3
+D 7
+U 13
+D 11
+R 7
+D 16
+U 4
+R 12
+D 12
+U 11
+D 2
+L 9
+D 6
+L 4
+R 5
+L 13
+U 7
+L 12
+D 1
+L 15
+U 8
+R 4
+U 15
+R 15
+D 7
+R 8
+U 9
+R 5
+D 12
+R 12
+U 2
+D 13
+U 2
+L 6
+D 8
+U 12
+R 6
+D 16
+U 4
+R 9
+L 6
+U 18
+L 7
+R 15
+U 8
+D 18
+L 11
+R 16
+D 2
+R 7
+D 8
+L 10
+U 15
+L 13
+D 7
+R 13
+D 14
+R 2
+L 14
+D 4
+L 10
+R 13
+L 18
+U 15
+L 17
+R 18
+D 2
+U 7
+R 18
+D 4
+L 1
+U 12
+L 1
+U 16
+D 6
+R 7
+U 9
+L 1
+U 13
+R 2
+L 8
+D 5
+R 18
+D 16
+R 8
+D 2
+R 13
+L 16
+R 18
+L 10
+D 6
+U 4
+D 15
+U 3
+D 9
+R 17
+D 8
+L 4
+R 17
+D 15
+R 1
+D 18
+U 1
+R 5
+L 7
+D 18
+U 16
+D 2
+L 11
+R 7
+L 12
+D 2
+U 8
+L 17
+U 18
+L 10
+R 16
+L 5
+R 1
+L 10
+R 14
+L 4
+D 15
+R 8
+D 15
+L 12
+D 5
+U 11
+L 1
+R 8
+D 11
+U 5
+L 12
+D 11
+U 9
+D 12
+R 7
+D 11
+U 2
+R 15
+L 2
+R 8
+U 2
+D 8
+R 14
+L 4
+D 1
+U 4
+R 4
+D 2
+R 5
+D 9
+L 10
+U 8
+R 13
+D 15
+R 18
+D 5
+U 5
+L 1
+U 1
+R 9
+D 2
+U 6
+R 5
+U 5
+R 17
+L 2
+D 1
+R 3
+D 5
+U 13
+R 10
+D 10
+R 13
+D 5
+L 1
+U 14
+D 17
+U 15
+R 16
+L 9
+U 12
+L 17
+R 19
+U 1
+D 4
+U 14
+L 7
+R 16
+L 5
+D 4
+L 14
+U 13
+R 10
+L 19
+D 1
+R 17
+D 6
+L 19
+U 11
+L 14
+U 15
+D 10
+U 17
+R 16
+U 12
+L 13
+D 1
+R 11
+D 10
+L 4
+D 15
+L 18
+R 2
+U 5
+L 2
+U 9
+D 16
+R 8
+D 13
+R 19
+U 14
+L 10
+R 13
+U 3
+R 2
+U 11
+L 2
+R 2
+U 12
+L 14
+U 15
+R 6
+D 10
+R 8
+U 14
+D 9
+L 2
+U 3
+D 8
+U 7
+R 10
+U 16
+R 3
+U 9
+L 16
+D 1
+R 1
+U 12
+R 12
+U 8
+L 19
+U 14
+R 9
+U 5
+L 15
+U 7
+L 17
+U 16
+R 19
+U 17
+L 1
+D 7
diff --git a/day9/main.c b/day9/main.c
@@ -0,0 +1,111 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <err.h>
+
+#define DIMENSION 2000 // Brute forcing because idk the starting point
+
+int
+main (void)
+{
+ FILE *fp = fopen("input.txt", "r");
+ if (fp == NULL)
+ {
+ err(1, "Failed to open input.txt");
+ exit(EXIT_FAILURE);
+ }
+
+ int positionsVisited = 1;
+ char grid[DIMENSION][DIMENSION] = {{ 0 }};
+
+ // Coords are Y,X
+ int hpos[2] = {DIMENSION/2, DIMENSION/2};
+ int tpos[2] = {DIMENSION/2, DIMENSION/2};
+
+ grid[tpos[0]][tpos[1]] = 'T';
+ grid[hpos[0]][hpos[1]] = 'H';
+ int headOnVisitedTile = 0;
+
+ char *line = NULL;
+ size_t linesize = 0;
+ ssize_t linelen = 0;
+ while ((linelen = getline(&line, &linesize, fp)) != -1)
+ {
+ line[linelen-1] = '\0'; // cut off the newline
+
+ char direction = line[0];
+ int numMoves = atoi(&line[2]);
+
+ for (int i = 0; i < numMoves; i++)
+ {
+ if (headOnVisitedTile)
+ grid[hpos[0]][hpos[1]] = '#';
+ else
+ grid[hpos[0]][hpos[1]] = 0;
+ grid[tpos[0]][tpos[1]] = '#';
+
+ switch (direction) {
+ case 'U': hpos[0]--; break;
+ case 'D': hpos[0]++; break;
+ case 'L': hpos[1]--; break;
+ case 'R': hpos[1]++; break;
+ }
+
+ if (abs(hpos[0] - tpos[0]) > 1 || abs(hpos[1] - tpos[1]) > 1)
+ {
+ if (hpos[0] > tpos[0] && hpos[1] < tpos[1])
+ {
+ tpos[1]--;
+ tpos[0]++;
+ }
+ else if (hpos[0] > tpos[0] && hpos[1] > tpos[1])
+ {
+ tpos[1]++;
+ tpos[0]++;
+ }
+ else if (hpos[0] < tpos[0] && hpos[1] < tpos[1])
+ {
+ tpos[1]--;
+ tpos[0]--;
+ }
+ else if (hpos[0] < tpos[0] && hpos[1] > tpos[1])
+ {
+ tpos[1]++;
+ tpos[0]--;
+ }
+ else if (hpos[0] > tpos[0])
+ tpos[0]++;
+ else if (hpos[0] < tpos[0])
+ tpos[0]--;
+ else if (hpos[1] > tpos[1])
+ tpos[1]++;
+ else if (hpos[1] < tpos[1])
+ tpos[1]--;
+ }
+
+ if (grid[hpos[0]][hpos[1]] == '#')
+ headOnVisitedTile = 1;
+ else
+ headOnVisitedTile = 0;
+
+ grid[hpos[0]][hpos[1]] = 'H';
+ grid[tpos[0]][tpos[1]] = 'T';
+ }
+ }
+ free(line);
+ if (ferror(fp))
+ err(1, "getline");
+ fclose(fp);
+
+ for (int i = 0; i < DIMENSION; i++)
+ for (int j = 0; j < DIMENSION; j++)
+ if (grid[i][j] == '#')
+ positionsVisited++;
+ if (headOnVisitedTile)
+ positionsVisited++;
+
+ printf("PART 1: The tail visits %d positions at least once.\n", positionsVisited);
+ printf("PART 2: No\n");
+
+ exit(EXIT_SUCCESS);
+}