From 31d9baf8e301b0d9aa9073d25c92b50c5c4922ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dobos=20=C3=81d=C3=A1m?= Date: Sun, 11 Dec 2022 18:55:21 +0100 Subject: [PATCH] Day9 --- day9/input.txt | 2000 ++++++++++++++++++++++++++++++++++++++++++++++++ day9/rope | Bin 0 -> 16248 bytes day9/rope.c | 129 ++++ 3 files changed, 2129 insertions(+) create mode 100644 day9/input.txt create mode 100755 day9/rope create mode 100644 day9/rope.c diff --git a/day9/input.txt b/day9/input.txt new file mode 100644 index 0000000..cfb7438 --- /dev/null +++ b/day9/input.txt @@ -0,0 +1,2000 @@ +U 2 +L 2 +U 1 +R 2 +D 2 +L 1 +R 1 +U 2 +D 1 +L 2 +D 2 +R 2 +D 1 +L 1 +U 2 +D 2 +R 1 +U 1 +L 1 +D 1 +L 1 +R 2 +U 1 +D 2 +U 2 +D 1 +L 1 +D 1 +L 2 +R 2 +D 2 +R 1 +D 2 +R 1 +D 2 +R 1 +U 2 +L 1 +U 2 +R 2 +D 2 +U 1 +R 1 +L 2 +D 1 +L 1 +R 1 +D 2 +R 2 +L 1 +R 2 +U 1 +L 2 +R 1 +D 1 +R 2 +U 2 +R 2 +L 1 +U 2 +R 1 +L 1 +U 2 +R 2 +D 2 +U 1 +L 2 +D 2 +R 1 +L 2 +D 2 +L 2 +R 1 +L 1 +U 2 +D 1 +U 1 +D 1 +L 1 +D 2 +U 1 +L 2 +R 2 +D 1 +U 1 +D 2 +L 2 +D 1 +R 1 +U 2 +D 2 +L 2 +R 2 +U 1 +D 1 +U 1 +L 1 +D 2 +R 1 +D 2 +U 1 +D 2 +U 2 +L 2 +R 2 +D 2 +R 1 +U 2 +R 2 +L 2 +U 1 +L 3 +U 3 +D 1 +U 2 +R 1 +U 3 +R 2 +U 3 +D 1 +R 1 +U 2 +D 2 +U 2 +D 2 +R 2 +U 3 +D 1 +L 1 +R 2 +U 2 +L 3 +U 3 +D 2 +L 3 +U 3 +R 2 +D 3 +L 3 +U 2 +D 2 +U 3 +R 1 +D 1 +R 2 +U 3 +D 3 +R 3 +D 2 +L 3 +D 2 +R 3 +D 1 +R 2 +U 1 +D 3 +R 2 +D 1 +U 3 +L 1 +U 2 +L 1 +R 3 +D 1 +L 1 +D 1 +R 2 +U 2 +R 1 +D 1 +R 2 +D 1 +R 3 +L 3 +U 1 +R 2 +U 1 +L 1 +D 1 +U 3 +D 1 +L 1 +R 1 +U 1 +D 3 +U 1 +R 3 +U 1 +L 1 +D 2 +R 2 +U 1 +R 1 +L 2 +R 1 +U 2 +L 3 +R 3 +L 1 +R 3 +D 3 +U 3 +R 1 +U 2 +L 2 +D 2 +R 3 +L 2 +R 3 +U 1 +L 1 +R 2 +D 2 +R 3 +U 2 +D 3 +R 2 +L 1 +D 3 +R 2 +L 3 +U 2 +L 1 +U 2 +R 1 +U 2 +D 1 +L 2 +U 3 +R 1 +U 4 +R 1 +U 4 +R 1 +L 1 +D 3 +L 3 +R 3 +U 4 +L 1 +R 2 +D 4 +U 2 +L 3 +U 1 +R 4 +D 1 +L 1 +U 4 +D 4 +L 3 +R 2 +D 4 +R 4 +D 1 +U 2 +L 4 +U 3 +D 2 +L 4 +D 2 +L 4 +U 2 +D 4 +L 1 +D 2 +U 4 +L 2 +U 1 +D 3 +U 4 +D 2 +L 1 +R 2 +L 4 +U 4 +L 3 +R 4 +D 3 +R 4 +D 2 +L 3 +U 2 +L 3 +U 1 +D 3 +L 4 +R 2 +D 2 +L 1 +U 2 +R 2 +L 1 +D 2 +U 3 +L 1 +U 1 +L 4 +U 4 +L 2 +R 1 +U 1 +R 4 +L 4 +D 2 +L 4 +D 4 +L 3 +U 4 +D 4 +L 2 +U 1 +L 1 +R 1 +L 4 +U 4 +L 2 +D 1 +R 2 +D 2 +L 2 +R 2 +L 1 +U 3 +L 1 +U 2 +D 2 +R 2 +D 3 +L 4 +R 2 +L 3 +R 3 +U 3 +L 5 +U 1 +D 3 +L 1 +U 5 +L 3 +U 4 +L 4 +R 5 +D 5 +R 1 +L 3 +D 1 +U 5 +R 3 +U 4 +D 4 +U 1 +D 4 +U 4 +R 4 +U 4 +R 4 +U 5 +R 3 +D 3 +L 1 +D 3 +U 4 +R 2 +U 2 +R 2 +U 2 +L 3 +R 4 +L 2 +D 5 +U 4 +D 4 +L 4 +R 4 +U 5 +R 1 +D 4 +L 4 +U 1 +L 2 +U 3 +D 1 +R 5 +U 4 +D 5 +L 5 +D 2 +L 1 +U 3 +D 4 +R 4 +L 2 +R 4 +D 3 +R 5 +L 4 +R 1 +D 3 +L 2 +R 5 +D 3 +R 1 +U 1 +L 5 +D 1 +U 4 +L 2 +U 4 +D 5 +L 4 +D 5 +L 2 +D 3 +R 5 +L 2 +D 1 +R 5 +D 1 +L 2 +U 1 +D 1 +L 3 +R 4 +L 1 +D 1 +U 3 +D 1 +R 2 +D 5 +R 3 +D 5 +L 2 +D 2 +U 5 +D 3 +R 5 +D 3 +R 4 +U 2 +L 5 +R 2 +D 5 +R 1 +U 5 +R 6 +D 6 +U 2 +R 3 +L 2 +U 4 +R 1 +D 6 +L 3 +U 5 +R 2 +L 6 +U 1 +D 5 +L 3 +R 3 +U 5 +L 1 +R 3 +U 3 +L 3 +R 6 +D 6 +L 3 +U 2 +R 1 +L 4 +R 5 +L 6 +R 4 +D 6 +U 6 +L 6 +U 2 +L 4 +D 6 +R 2 +D 2 +R 3 +D 2 +L 1 +U 4 +R 4 +D 1 +R 2 +L 1 +D 5 +L 6 +U 6 +D 2 +L 2 +D 1 +U 3 +D 1 +L 4 +U 5 +R 6 +U 5 +L 2 +R 6 +D 5 +R 3 +L 4 +U 6 +L 3 +D 6 +L 4 +R 5 +L 5 +R 4 +D 4 +L 5 +R 3 +U 6 +D 6 +L 3 +D 6 +U 1 +D 5 +L 5 +R 3 +L 4 +R 1 +L 1 +U 3 +D 6 +U 6 +R 2 +D 1 +U 2 +L 1 +R 5 +U 1 +L 5 +U 3 +R 3 +D 3 +L 4 +D 6 +U 1 +R 5 +L 3 +U 5 +R 2 +U 5 +L 3 +D 6 +R 6 +D 2 +R 5 +U 3 +D 6 +U 7 +R 7 +L 7 +U 2 +L 6 +U 2 +R 5 +L 7 +U 2 +D 5 +U 2 +R 2 +U 2 +L 1 +D 5 +U 5 +R 2 +U 6 +R 2 +D 3 +R 1 +D 4 +L 3 +R 5 +U 7 +D 6 +U 5 +D 2 +L 5 +U 5 +L 5 +R 7 +U 3 +L 7 +U 7 +L 3 +U 5 +D 7 +L 4 +D 6 +L 2 +U 7 +D 1 +L 6 +R 6 +D 7 +U 5 +L 2 +D 7 +U 1 +D 5 +L 2 +U 2 +D 1 +U 7 +R 1 +D 3 +L 4 +D 5 +R 4 +L 6 +R 1 +L 1 +D 2 +R 5 +U 4 +L 2 +D 7 +R 1 +U 3 +L 2 +U 3 +L 2 +U 6 +D 1 +U 3 +L 2 +U 4 +R 3 +L 7 +D 7 +R 6 +L 1 +R 3 +U 1 +R 3 +D 5 +R 2 +U 4 +R 1 +U 1 +L 6 +D 7 +U 5 +D 1 +R 2 +U 1 +L 6 +R 6 +U 6 +D 1 +U 4 +D 4 +U 4 +L 2 +D 5 +U 4 +R 4 +U 7 +D 4 +U 5 +D 5 +U 8 +L 6 +U 5 +L 1 +D 5 +R 1 +D 7 +L 8 +U 4 +R 7 +U 7 +D 4 +L 4 +U 7 +D 1 +R 4 +L 2 +U 2 +R 7 +L 1 +R 2 +L 2 +R 1 +L 3 +D 7 +L 3 +D 7 +U 6 +L 1 +D 4 +U 2 +D 8 +R 4 +D 2 +R 7 +L 8 +U 5 +L 7 +U 5 +R 1 +D 4 +R 8 +L 2 +R 7 +L 4 +U 6 +R 3 +D 6 +L 8 +R 5 +U 5 +R 1 +D 3 +U 8 +R 3 +D 5 +L 1 +D 2 +R 8 +D 3 +R 6 +L 2 +R 1 +U 5 +R 5 +U 7 +L 3 +R 3 +L 8 +D 5 +L 2 +D 3 +L 5 +D 6 +L 5 +U 2 +R 3 +U 5 +R 7 +D 2 +U 5 +R 2 +D 3 +L 5 +R 1 +U 7 +L 5 +D 5 +R 4 +U 6 +D 8 +R 2 +D 4 +L 3 +R 4 +D 1 +L 7 +U 8 +L 3 +U 6 +D 6 +L 4 +D 1 +U 6 +L 4 +R 2 +L 5 +D 5 +L 5 +D 6 +R 2 +U 1 +L 7 +R 4 +D 9 +U 1 +L 3 +D 7 +L 9 +D 3 +U 9 +L 6 +D 6 +U 5 +D 5 +R 2 +D 8 +R 2 +D 1 +U 9 +D 7 +R 2 +D 3 +U 1 +L 3 +D 5 +R 3 +L 6 +D 7 +U 2 +R 8 +U 2 +L 6 +D 4 +L 5 +R 5 +L 6 +D 5 +L 1 +U 8 +D 1 +L 9 +D 6 +R 5 +D 4 +U 2 +R 9 +D 1 +U 4 +D 1 +U 7 +L 4 +R 4 +D 8 +U 3 +R 7 +L 1 +D 4 +L 9 +U 7 +L 6 +R 2 +L 6 +D 4 +L 8 +U 8 +L 2 +R 1 +L 9 +D 9 +L 2 +U 7 +L 5 +D 2 +U 1 +L 6 +D 6 +L 1 +R 8 +D 3 +R 8 +L 6 +U 7 +D 9 +U 7 +L 7 +D 4 +R 8 +D 3 +R 9 +L 1 +U 4 +L 2 +R 9 +L 3 +D 9 +R 7 +D 3 +U 4 +D 9 +R 4 +L 6 +U 9 +D 7 +U 8 +D 7 +L 1 +R 2 +U 3 +D 7 +U 5 +R 4 +L 8 +D 9 +L 1 +U 9 +L 1 +D 1 +L 2 +U 2 +R 8 +D 6 +L 4 +U 9 +L 3 +R 9 +U 4 +L 5 +R 6 +U 6 +D 6 +L 5 +D 4 +L 9 +R 1 +L 3 +D 8 +L 1 +R 2 +D 8 +U 10 +L 1 +D 8 +L 4 +U 7 +D 4 +R 10 +D 5 +L 5 +U 10 +R 3 +U 6 +L 10 +R 2 +U 5 +R 7 +L 5 +R 6 +U 4 +D 8 +U 8 +D 7 +R 8 +U 3 +D 7 +R 4 +D 4 +L 8 +R 2 +U 9 +R 1 +L 7 +R 6 +D 2 +U 9 +R 4 +D 9 +R 7 +D 6 +U 3 +L 4 +D 9 +L 9 +D 8 +L 4 +R 4 +U 6 +D 2 +U 3 +D 1 +L 1 +R 10 +L 1 +D 2 +R 4 +U 6 +L 3 +D 4 +L 4 +D 1 +L 9 +D 8 +R 5 +D 3 +U 2 +D 9 +R 10 +D 10 +R 10 +U 5 +D 4 +R 4 +D 4 +L 8 +D 4 +R 10 +D 9 +L 8 +D 1 +R 1 +D 8 +L 1 +D 8 +R 4 +U 8 +R 4 +U 4 +L 4 +U 8 +D 4 +L 8 +D 3 +U 3 +R 5 +D 9 +L 10 +R 8 +U 5 +L 4 +U 8 +R 6 +D 3 +L 8 +U 11 +D 4 +R 3 +L 5 +D 10 +U 11 +D 2 +L 5 +D 4 +R 4 +D 5 +R 11 +L 7 +U 9 +R 6 +L 7 +D 6 +R 4 +D 4 +U 9 +R 6 +D 2 +U 3 +D 8 +L 6 +U 6 +R 11 +U 10 +R 6 +L 5 +R 4 +D 1 +L 10 +R 5 +U 4 +R 3 +D 4 +U 9 +R 8 +D 4 +U 11 +L 2 +D 9 +U 5 +R 3 +D 4 +R 6 +U 11 +R 4 +D 2 +L 1 +R 1 +U 4 +L 5 +U 9 +L 8 +R 6 +D 11 +L 4 +D 5 +L 11 +D 7 +U 11 +D 3 +U 3 +L 5 +R 9 +D 2 +L 9 +R 7 +L 3 +D 7 +L 10 +D 1 +L 5 +U 8 +D 1 +L 5 +U 11 +D 8 +R 6 +D 9 +U 2 +D 11 +R 8 +U 5 +D 6 +R 1 +U 7 +D 10 +L 8 +D 2 +L 7 +D 9 +R 12 +U 11 +R 8 +D 9 +R 1 +D 10 +L 3 +R 10 +D 9 +L 2 +R 3 +D 6 +L 12 +U 3 +R 2 +U 11 +R 8 +L 12 +D 9 +R 10 +L 2 +D 6 +L 8 +U 4 +R 5 +U 8 +L 11 +R 7 +D 3 +L 2 +R 2 +U 4 +R 12 +L 8 +U 1 +R 5 +L 9 +D 7 +R 9 +D 8 +L 2 +R 12 +L 5 +D 6 +R 10 +U 11 +R 12 +L 9 +D 5 +L 7 +U 7 +R 9 +L 10 +R 11 +U 11 +D 8 +L 3 +U 10 +D 1 +R 11 +L 7 +R 5 +L 11 +D 6 +U 5 +D 5 +U 12 +D 7 +L 1 +R 3 +D 8 +L 10 +R 2 +D 10 +R 12 +U 10 +R 7 +U 12 +R 11 +U 5 +D 12 +R 6 +D 1 +U 2 +L 8 +R 7 +D 12 +U 5 +R 10 +L 2 +R 3 +D 10 +U 2 +L 8 +D 6 +R 12 +L 5 +R 7 +U 1 +R 2 +L 5 +D 1 +U 12 +L 2 +U 6 +D 8 +U 3 +D 11 +L 5 +R 6 +L 10 +U 9 +D 6 +R 5 +L 4 +R 6 +L 9 +D 12 +U 7 +L 2 +D 6 +L 1 +U 1 +R 7 +L 13 +D 8 +U 4 +L 5 +D 11 +U 12 +R 5 +U 7 +D 5 +L 4 +D 9 +L 9 +U 1 +L 9 +U 1 +L 2 +U 13 +L 2 +R 11 +L 7 +R 8 +U 11 +D 13 +U 10 +R 5 +U 5 +L 6 +R 7 +D 5 +L 1 +R 5 +U 6 +D 13 +U 4 +L 10 +U 6 +L 3 +U 7 +R 6 +U 4 +L 11 +U 7 +L 6 +R 13 +U 10 +R 11 +D 11 +U 9 +D 2 +U 4 +R 9 +L 11 +R 7 +U 1 +L 5 +U 8 +D 5 +L 12 +U 3 +D 7 +L 2 +R 6 +L 4 +D 12 +U 5 +R 12 +L 13 +D 6 +U 3 +L 11 +R 4 +L 3 +R 8 +U 12 +D 11 +U 3 +R 10 +U 12 +L 7 +D 10 +R 1 +U 5 +L 1 +U 13 +D 12 +U 1 +L 2 +R 12 +D 13 +R 2 +D 6 +L 12 +U 10 +R 14 +U 14 +R 2 +D 4 +L 10 +R 7 +U 14 +L 5 +D 7 +L 12 +R 2 +D 9 +R 8 +D 2 +R 4 +U 5 +L 9 +R 13 +L 14 +R 1 +U 8 +R 12 +U 10 +D 2 +R 5 +U 8 +D 4 +U 9 +D 3 +R 5 +D 7 +L 8 +R 11 +D 2 +U 11 +L 4 +R 2 +U 2 +D 10 +U 14 +L 3 +R 3 +D 3 +R 14 +L 2 +R 6 +D 9 +U 1 +L 14 +R 9 +L 7 +R 10 +U 7 +L 14 +R 11 +L 11 +D 10 +R 11 +U 13 +L 2 +D 7 +L 4 +D 10 +L 10 +R 12 +D 7 +R 14 +L 13 +D 8 +R 5 +L 12 +D 6 +R 5 +D 3 +U 6 +L 10 +D 6 +R 8 +U 9 +R 4 +D 7 +R 6 +D 12 +R 5 +D 6 +L 14 +U 12 +L 10 +U 14 +D 12 +L 12 +R 2 +U 14 +R 14 +D 11 +R 14 +U 12 +D 2 +U 10 +R 4 +U 7 +D 9 +U 10 +D 12 +U 8 +D 10 +L 3 +R 8 +L 5 +D 2 +R 6 +L 1 +D 8 +U 3 +L 4 +U 3 +R 5 +L 10 +D 10 +U 14 +D 2 +U 3 +R 13 +L 7 +R 12 +L 10 +R 14 +D 4 +L 10 +R 3 +U 14 +L 2 +D 15 +R 14 +D 2 +R 14 +L 12 +D 10 +R 3 +D 2 +L 3 +R 3 +D 5 +L 2 +R 1 +L 5 +D 14 +L 8 +R 10 +L 14 +D 8 +L 8 +D 8 +R 15 +D 12 +U 7 +D 13 +L 13 +U 4 +L 7 +U 13 +R 7 +U 12 +R 1 +D 7 +R 5 +L 10 +R 11 +L 15 +D 13 +L 8 +D 12 +U 15 +L 11 +R 10 +U 13 +R 12 +U 6 +R 11 +D 13 +R 8 +D 15 +L 2 +D 5 +U 11 +R 5 +L 13 +D 4 +R 15 +D 13 +R 10 +L 10 +U 1 +R 11 +U 3 +R 5 +D 11 +U 5 +R 6 +U 6 +D 14 +L 2 +R 14 +U 2 +R 1 +L 11 +U 15 +R 2 +D 10 +L 5 +D 3 +U 4 +D 9 +U 2 +L 13 +R 2 +D 7 +R 15 +D 1 +U 9 +R 15 +L 5 +D 4 +L 10 +D 16 +U 8 +R 11 +L 12 +U 5 +L 16 +R 1 +D 10 +R 11 +L 16 +D 4 +U 8 +D 7 +U 13 +D 3 +R 5 +U 9 +R 6 +U 12 +D 4 +U 15 +L 5 +U 15 +L 6 +U 12 +R 8 +L 3 +R 2 +U 3 +L 3 +R 10 +L 11 +U 6 +D 11 +L 4 +R 6 +D 8 +U 14 +L 5 +D 13 +R 13 +D 9 +L 10 +D 16 +R 14 +L 6 +D 7 +U 2 +L 11 +D 14 +R 4 +U 6 +R 7 +L 13 +U 6 +L 8 +D 13 +R 4 +U 13 +L 15 +U 16 +L 8 +D 14 +L 3 +R 7 +D 3 +U 9 +D 7 +U 12 +R 4 +D 3 +U 11 +D 7 +L 9 +U 6 +L 5 +U 12 +D 6 +R 5 +D 9 +U 14 +D 9 +R 6 +U 16 +R 11 +U 16 +L 15 +R 15 +U 10 +L 13 +D 12 +R 4 +D 5 +L 5 +U 1 +D 11 +R 10 +U 7 +R 13 +U 6 +L 6 +D 5 +R 13 +U 13 +D 3 +U 11 +L 4 +R 5 +U 4 +D 5 +L 17 +R 2 +L 12 +R 10 +L 17 +U 1 +R 11 +D 12 +L 10 +U 8 +L 15 +R 8 +U 9 +L 17 +D 13 +L 5 +R 7 +L 1 +D 8 +R 6 +D 1 +U 3 +D 10 +R 6 +L 6 +U 15 +R 1 +U 17 +L 17 +R 4 +U 4 +R 10 +U 12 +L 5 +D 12 +R 14 +D 17 +R 1 +U 1 +R 9 +U 2 +D 4 +R 17 +L 9 +D 5 +U 2 +L 7 +D 8 +R 11 +U 12 +D 13 +R 16 +L 15 +D 15 +L 2 +R 10 +D 16 +R 13 +D 2 +R 6 +D 16 +L 8 +D 2 +L 10 +U 7 +L 14 +R 16 +L 5 +D 5 +R 10 +L 2 +U 13 +R 10 +L 9 +U 1 +L 10 +R 10 +U 14 +D 6 +R 11 +D 4 +R 12 +D 4 +L 1 +D 14 +L 2 +U 3 +L 15 +U 9 +D 12 +R 13 +D 14 +R 5 +L 6 +D 14 +R 14 +L 16 +R 7 +U 7 +L 14 +R 11 +U 9 +D 11 +U 9 +L 10 +R 13 +L 4 +R 12 +U 15 +R 9 +D 10 +U 3 +R 7 +U 1 +R 6 +D 17 +U 16 +D 4 +R 12 +U 3 +R 18 +D 17 +L 8 +U 11 +D 6 +L 9 +R 17 +L 14 +D 1 +L 2 +D 6 +U 13 +L 3 +R 18 +D 4 +L 13 +U 7 +D 6 +U 11 +L 11 +U 8 +R 10 +L 15 +U 4 +D 6 +R 18 +U 17 +R 16 +D 11 +U 5 +R 16 +L 5 +D 16 +U 1 +R 9 +L 10 +U 7 +R 17 +U 8 +L 7 +R 14 +L 11 +R 9 +D 8 +R 9 +U 1 +R 14 +L 15 +U 6 +L 4 +R 3 +L 15 +U 15 +D 17 +U 12 +D 14 +R 13 +U 11 +D 10 +U 16 +L 8 +R 11 +U 6 +D 11 +U 9 +R 15 +L 12 +U 6 +L 13 +U 12 +R 3 +U 16 +L 2 +U 15 +L 15 +R 4 +D 5 +R 8 +D 9 +L 8 +U 7 +R 2 +D 10 +L 12 +R 1 +U 11 +R 17 +U 18 +D 6 +L 12 +U 2 +R 2 +U 14 +D 17 +L 7 +R 12 +U 13 +D 18 +L 8 +R 4 +U 10 +R 10 +L 8 +U 4 +L 1 +U 15 +L 6 +D 6 +L 10 +R 12 +D 2 +R 10 +U 16 +L 12 +D 1 +R 11 +D 10 +U 19 +R 7 +D 18 +U 1 +D 7 +R 3 +U 19 +R 12 +U 5 +L 11 +U 8 +D 12 +R 2 +D 16 +U 14 +R 14 +D 1 +U 17 +L 15 +D 8 +L 18 +D 2 +L 14 +U 10 +L 17 +D 2 +U 14 +L 17 +U 15 +R 18 +L 11 +R 15 +U 4 +L 8 +D 10 +L 17 +U 13 +R 1 +L 10 +U 16 +R 9 +L 4 +D 13 +R 13 +U 10 +R 12 +L 14 +U 10 +D 5 +R 18 +L 8 +D 8 +R 5 +D 19 +U 10 +R 8 +U 12 +R 12 +D 6 +U 7 +L 2 +U 5 +L 6 +R 1 +D 16 +R 16 +U 15 +R 2 +D 15 +R 2 +D 10 +L 4 +D 8 +R 17 +D 6 +R 7 +U 10 +R 8 +D 16 +R 3 +D 17 +R 11 +D 18 +L 3 +R 11 +D 8 +R 14 +D 7 +U 14 +R 12 +L 2 +R 18 +L 6 +R 2 +D 3 +R 18 diff --git a/day9/rope b/day9/rope new file mode 100755 index 0000000000000000000000000000000000000000..20b43671619cab030216fc82b5b8029ebb596201 GIT binary patch literal 16248 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 n=l1aRm!3np?Jjd+R4cC0 +#include +#include + +#define BUFFER_SIZE 64 +#define MAX_LOG 16*1024 +#define FOLLOW_LENGTH 1 +#define ROPE_LENGTH 10 + +void logTailPosition(int, int, int (**)[2]); +void move(char, int*); +void follow(int*, int*, int*); + +int main() { + char buf[BUFFER_SIZE], *p, c; + memset(buf, 0, BUFFER_SIZE); + p = buf; + int moveCount; + // We will keep a log of the tail position just in case it is needed in the second part + int tailLog[MAX_LOG][2]; + memset(tailLog, 0, MAX_LOG * sizeof(int[2])); + int (*tailLogHead)[2] = tailLog; + + + // Relative to the start pos + int ropePos[ROPE_LENGTH][2]; + memset(ropePos, 0, ROPE_LENGTH * sizeof(int[2])); + logTailPosition(0, 0, &tailLogHead); + + int diff[2]; + + while ((c = getchar()) != EOF) { + *p++ = c; + if (c == '\n') { + sscanf(buf, "%c %i", &c, &moveCount); + for (int i = 0; i < moveCount; i++) { + move(c, ropePos[0]); + for (int j = 0; j < ROPE_LENGTH - 2; j++) { + follow(diff, ropePos[j], ropePos[j+1]); + ropePos[j+1][0] += diff[0]; + ropePos[j+1][1] += diff[1]; + } + follow(diff, ropePos[ROPE_LENGTH - 2], *(tailLogHead-1)); + logTailPosition((*(tailLogHead-1))[0] + diff[0], (*(tailLogHead-1))[1] + diff[1], &tailLogHead); + } + + memset(buf, 0, BUFFER_SIZE); + p = buf; + } + } + + // Look at log and find unique places + // Using a bintree would be better but its fine for now + int uniques[MAX_LOG][2], uniquesLength = 0; + for (int i = 1; i < (tailLogHead - tailLog); i++) { + int found = 0; + for (int j = 0; j < uniquesLength; j++) { + if (uniques[j][0] == tailLog[i][0] && uniques[j][1] == tailLog[i][1]) { + found = 1; + break; + } + } + if (!found) { + uniques[uniquesLength][0] = tailLog[i][0]; + uniques[uniquesLength][1] = tailLog[i][1]; + uniquesLength++; + } + } + + printf("%i\n", uniquesLength); +} + +void logTailPosition(int x, int y, int (**tailLogHead)[2]) { + (**tailLogHead)[0] = x; + (**tailLogHead)[1] = y; + *tailLogHead += 1; +} + +void move(char dir, int *pos) { + switch (dir) { + case 'U': + pos[1]++; + break; + case 'D': + pos[1]--; + break; + case 'R': + pos[0]++; + break; + case 'L': + pos[0]--; + break; + } +} + +void follow(int* diff, int* head, int* tail) { + diff[0] = 0; + diff[1] = 0; + + if (head[0] - tail[0] > FOLLOW_LENGTH) { + diff[0]++; + if (head[1] > tail[1]) { + diff[1]++; + } else if (head[1] < tail[1]) { + diff[1]--; + } + } else if (tail[0] - head[0] > FOLLOW_LENGTH) { + diff[0]--; + if (head[1] > tail[1]) { + diff[1]++; + } else if (head[1] < tail[1]) { + diff[1]--; + } + } else if (head[1] - tail[1] > FOLLOW_LENGTH) { + diff[1]++; + if (head[0] > tail[0]) { + diff[0]++; + } else if (head[0] < tail[0]) { + diff[0]--; + } + } else if (tail[1] - head[1] > FOLLOW_LENGTH) { + diff[1]--; + if (head[0] > tail[0]) { + diff[0]++; + } else if (head[0] < tail[0]) { + diff[0]--; + } + } +}