From 68552d259d0bc162612011b94c33cf2b4a93fcad Mon Sep 17 00:00:00 2001 From: David Vereb Date: Sat, 17 Dec 2022 14:02:12 -0500 Subject: [PATCH] Part 1 of day 9 complete. --- 2022/9/Makefile | 2 + 2022/9/data.txt | 2000 ++++++++++++++++++++++++++++++++++++++++++ 2022/9/data_test.txt | 8 + 2022/9/main.cpp | 137 +++ 4 files changed, 2147 insertions(+) create mode 100644 2022/9/Makefile create mode 100644 2022/9/data.txt create mode 100644 2022/9/data_test.txt create mode 100644 2022/9/main.cpp diff --git a/2022/9/Makefile b/2022/9/Makefile new file mode 100644 index 0000000..638e325 --- /dev/null +++ b/2022/9/Makefile @@ -0,0 +1,2 @@ +a.out: main.cpp + clang++ -std=c++2b -g -O0 main.cpp diff --git a/2022/9/data.txt b/2022/9/data.txt new file mode 100644 index 0000000..475cb5b --- /dev/null +++ b/2022/9/data.txt @@ -0,0 +1,2000 @@ +R 2 +D 2 +U 1 +D 2 +U 2 +R 2 +U 2 +R 2 +L 2 +D 2 +R 1 +D 2 +R 1 +L 1 +R 2 +U 1 +R 1 +L 1 +U 1 +L 2 +R 2 +L 2 +R 2 +L 2 +R 2 +D 2 +U 2 +L 1 +D 1 +R 2 +L 1 +R 2 +D 1 +R 1 +D 2 +R 2 +D 1 +R 1 +D 1 +L 2 +R 1 +U 2 +D 1 +R 1 +L 2 +D 2 +U 2 +L 2 +U 2 +L 2 +R 1 +D 1 +L 1 +R 2 +L 2 +R 1 +L 2 +D 2 +L 1 +U 2 +D 1 +L 1 +D 2 +U 1 +L 1 +R 2 +D 2 +L 2 +R 2 +U 2 +L 2 +R 2 +L 2 +R 2 +L 2 +R 1 +L 2 +U 1 +D 1 +R 2 +L 1 +R 1 +U 2 +R 1 +U 1 +D 1 +U 1 +L 1 +R 2 +U 1 +L 1 +R 2 +L 1 +R 2 +U 1 +L 1 +D 1 +U 2 +R 2 +L 1 +D 2 +R 2 +D 2 +R 1 +L 2 +D 1 +U 2 +D 1 +L 2 +U 1 +R 1 +L 1 +U 2 +R 3 +U 1 +R 1 +U 3 +R 1 +D 2 +R 2 +U 3 +R 1 +U 2 +L 2 +D 2 +U 3 +L 3 +D 2 +U 1 +L 3 +D 2 +R 2 +U 1 +L 1 +D 3 +L 2 +U 2 +L 3 +U 1 +R 1 +U 3 +R 3 +U 1 +D 1 +U 2 +L 2 +D 1 +U 2 +R 2 +U 3 +R 2 +L 2 +R 1 +D 1 +U 3 +R 1 +U 3 +R 3 +U 3 +L 1 +D 2 +R 3 +L 2 +R 2 +D 1 +L 2 +D 1 +R 1 +D 2 +U 3 +D 2 +L 2 +D 2 +L 1 +D 2 +U 3 +D 3 +R 3 +L 3 +D 2 +U 2 +D 1 +R 3 +D 2 +L 3 +D 3 +L 1 +D 1 +U 3 +L 3 +R 3 +U 3 +R 2 +L 2 +D 2 +R 3 +U 1 +D 3 +R 2 +U 2 +R 1 +U 3 +L 1 +U 2 +D 2 +U 3 +L 1 +U 3 +R 1 +U 2 +R 2 +L 3 +U 2 +D 3 +L 2 +R 3 +D 2 +U 3 +D 1 +U 2 +L 3 +U 1 +R 4 +D 1 +R 4 +D 2 +R 3 +L 3 +U 4 +D 1 +L 4 +U 2 +D 1 +U 1 +L 3 +D 2 +U 4 +D 2 +U 3 +R 2 +L 4 +U 1 +D 3 +U 2 +L 3 +D 1 +R 2 +D 1 +R 1 +D 3 +U 4 +D 3 +L 3 +R 1 +U 1 +D 2 +L 2 +R 1 +D 2 +L 3 +R 2 +D 3 +R 3 +U 1 +D 2 +R 4 +D 3 +L 3 +D 1 +R 2 +D 1 +L 1 +D 1 +L 2 +D 1 +U 1 +R 1 +D 3 +L 1 +U 1 +L 2 +R 2 +U 1 +D 4 +U 1 +L 2 +R 3 +D 1 +U 4 +R 4 +L 2 +D 2 +U 4 +R 2 +U 3 +R 4 +U 1 +D 1 +U 2 +D 2 +U 3 +L 3 +U 4 +R 3 +D 2 +U 2 +L 1 +R 2 +U 4 +D 4 +U 1 +D 2 +L 4 +U 4 +R 4 +U 3 +R 3 +L 1 +R 1 +U 3 +L 2 +U 3 +L 2 +R 3 +D 2 +R 1 +L 1 +U 3 +D 1 +U 3 +L 1 +D 1 +R 1 +L 4 +R 1 +L 1 +R 5 +D 5 +R 5 +D 2 +R 3 +U 2 +D 5 +L 4 +U 2 +L 2 +U 1 +D 3 +L 1 +D 2 +L 2 +D 3 +L 1 +U 2 +L 1 +R 4 +U 5 +L 2 +U 5 +R 4 +L 3 +R 4 +U 5 +L 3 +D 2 +R 2 +L 4 +D 2 +L 1 +U 2 +L 1 +R 5 +D 5 +U 3 +R 4 +U 4 +L 3 +U 3 +D 1 +R 2 +L 5 +D 2 +R 4 +L 2 +R 1 +D 4 +R 2 +L 2 +D 3 +L 4 +D 1 +L 1 +D 1 +U 5 +R 5 +U 5 +L 1 +U 5 +D 5 +R 5 +L 2 +U 5 +L 2 +D 1 +U 4 +R 1 +U 2 +R 2 +U 2 +R 2 +L 4 +R 3 +U 3 +R 5 +L 5 +R 4 +L 4 +U 4 +D 2 +U 3 +L 1 +R 2 +U 3 +D 1 +L 3 +R 4 +D 5 +L 3 +R 2 +U 2 +L 1 +R 1 +D 2 +L 5 +U 2 +L 3 +U 2 +D 5 +R 2 +L 1 +R 3 +U 1 +R 5 +L 5 +U 6 +L 6 +R 5 +L 2 +R 2 +D 4 +U 3 +L 5 +R 4 +D 6 +R 2 +L 2 +U 1 +D 6 +R 2 +D 4 +U 3 +D 4 +L 5 +U 1 +D 6 +R 6 +U 2 +R 3 +L 6 +D 3 +U 2 +L 3 +D 6 +R 5 +D 4 +L 1 +U 3 +L 5 +U 3 +R 2 +D 2 +R 3 +U 3 +D 5 +L 3 +R 6 +U 2 +R 6 +L 3 +U 1 +D 3 +U 1 +R 3 +L 1 +D 3 +R 2 +L 3 +U 5 +R 6 +U 3 +D 2 +U 5 +R 6 +D 5 +L 6 +R 5 +D 2 +R 3 +U 6 +L 6 +D 3 +R 6 +L 4 +R 1 +U 4 +D 5 +L 4 +U 2 +D 1 +R 4 +U 3 +L 1 +D 6 +L 6 +R 1 +D 2 +R 2 +L 2 +U 4 +D 2 +L 2 +U 5 +R 2 +L 4 +U 2 +L 5 +R 1 +L 2 +D 4 +R 1 +L 2 +U 6 +R 1 +U 6 +R 4 +D 3 +R 1 +L 1 +R 1 +L 4 +U 2 +L 6 +R 6 +U 4 +L 2 +U 2 +L 7 +R 4 +L 6 +R 4 +L 7 +U 4 +D 3 +L 3 +R 7 +L 2 +R 6 +L 2 +R 6 +D 6 +U 3 +D 7 +R 3 +U 6 +R 3 +D 6 +U 4 +D 3 +L 5 +U 5 +L 3 +R 3 +D 7 +L 3 +U 3 +R 7 +L 1 +U 2 +L 6 +R 7 +D 3 +L 1 +D 7 +R 4 +U 5 +L 3 +R 3 +U 6 +R 6 +U 1 +D 5 +U 4 +L 1 +U 6 +L 2 +D 1 +R 2 +D 3 +R 1 +U 3 +D 6 +U 7 +D 6 +U 3 +R 7 +U 2 +R 2 +U 1 +R 4 +L 6 +U 4 +D 5 +R 1 +L 1 +D 7 +L 4 +R 2 +U 6 +R 4 +D 1 +R 5 +L 5 +R 3 +D 1 +L 4 +R 5 +L 4 +U 1 +D 6 +L 1 +D 3 +L 4 +R 2 +U 5 +L 6 +R 4 +U 6 +L 4 +U 5 +D 1 +L 4 +D 3 +R 1 +U 3 +R 2 +L 2 +D 6 +R 1 +L 5 +D 6 +U 3 +D 2 +L 6 +D 1 +U 7 +D 3 +U 2 +D 8 +R 2 +D 3 +L 4 +R 3 +U 7 +R 8 +D 3 +R 2 +D 8 +L 4 +R 4 +L 7 +R 1 +U 8 +R 7 +U 2 +D 5 +L 6 +D 8 +U 3 +L 5 +R 4 +D 1 +R 4 +L 6 +U 1 +R 5 +L 8 +D 6 +L 3 +D 6 +L 4 +U 2 +R 3 +D 4 +R 6 +D 6 +U 6 +D 5 +R 5 +L 5 +U 6 +D 5 +L 6 +R 8 +D 6 +R 6 +U 5 +D 6 +U 3 +D 7 +L 8 +R 2 +D 8 +L 5 +R 7 +L 5 +U 5 +L 2 +D 3 +R 3 +D 2 +R 2 +D 8 +R 8 +D 2 +L 2 +U 1 +D 4 +U 6 +R 2 +L 2 +R 5 +L 3 +R 2 +D 6 +R 2 +U 5 +L 7 +D 7 +L 7 +R 1 +D 4 +L 3 +D 1 +R 3 +L 8 +D 8 +R 4 +U 7 +R 2 +L 6 +D 5 +U 4 +D 3 +L 2 +U 5 +D 5 +U 1 +D 7 +L 7 +U 7 +D 4 +U 3 +L 7 +U 6 +L 6 +R 5 +U 5 +D 2 +L 3 +U 6 +L 6 +U 2 +R 3 +U 5 +D 1 +U 8 +D 1 +L 6 +D 5 +L 8 +R 6 +L 9 +U 3 +D 2 +R 9 +U 1 +L 3 +R 8 +U 6 +R 8 +L 6 +R 2 +L 3 +R 7 +D 6 +R 3 +U 2 +R 1 +U 3 +L 4 +R 6 +L 9 +D 4 +L 7 +U 2 +D 4 +L 8 +U 7 +R 7 +U 5 +D 4 +U 1 +L 8 +R 4 +D 5 +R 3 +D 5 +U 9 +D 6 +R 3 +D 6 +L 7 +U 7 +L 1 +R 3 +U 2 +L 4 +R 7 +L 9 +D 3 +L 6 +D 4 +R 6 +D 2 +L 6 +D 3 +L 3 +R 2 +L 7 +D 4 +R 9 +D 7 +U 1 +L 3 +R 9 +L 7 +R 2 +L 2 +D 5 +L 9 +D 6 +R 5 +D 8 +U 7 +D 5 +R 1 +D 4 +R 5 +D 3 +R 4 +D 5 +U 7 +D 5 +U 3 +D 3 +L 8 +U 1 +R 5 +U 3 +L 7 +D 5 +R 4 +D 6 +L 5 +D 7 +R 5 +D 7 +U 7 +R 8 +U 6 +D 1 +U 4 +R 5 +U 4 +D 5 +U 2 +D 5 +L 4 +D 1 +R 7 +L 10 +D 4 +R 10 +U 8 +D 5 +L 4 +R 3 +D 10 +U 1 +R 8 +L 4 +R 7 +L 5 +U 8 +L 3 +U 6 +R 5 +D 4 +L 7 +D 9 +R 10 +U 9 +L 7 +R 1 +D 9 +R 3 +U 1 +L 7 +D 3 +U 7 +L 4 +D 2 +R 5 +L 1 +U 3 +L 1 +D 1 +R 9 +U 8 +L 4 +D 7 +R 5 +U 9 +L 10 +U 9 +R 4 +D 6 +U 9 +R 8 +D 3 +R 8 +D 4 +U 2 +R 7 +L 9 +D 3 +U 8 +L 8 +R 1 +L 9 +D 9 +U 9 +L 9 +R 8 +L 5 +D 6 +L 5 +U 10 +L 1 +U 2 +R 7 +D 7 +U 5 +L 1 +D 5 +U 8 +D 10 +U 10 +R 2 +L 4 +R 5 +U 9 +L 4 +U 10 +D 5 +U 7 +D 1 +U 1 +R 7 +U 2 +L 3 +U 3 +L 9 +U 5 +L 10 +U 7 +L 1 +D 1 +L 2 +U 7 +L 4 +U 6 +D 9 +U 6 +R 4 +L 6 +R 4 +L 8 +R 4 +D 4 +L 11 +U 7 +R 6 +D 2 +L 1 +D 3 +L 2 +R 8 +D 2 +L 7 +U 9 +L 9 +D 1 +U 9 +D 2 +R 1 +L 6 +R 10 +L 2 +U 2 +L 9 +R 8 +L 3 +R 6 +L 9 +U 1 +R 3 +D 7 +U 10 +D 1 +L 1 +D 5 +L 1 +U 2 +L 6 +D 11 +R 11 +L 3 +D 6 +R 6 +D 8 +L 6 +R 5 +U 9 +D 7 +R 2 +U 6 +R 4 +U 11 +D 2 +R 4 +L 11 +D 1 +R 6 +D 8 +L 11 +U 7 +D 6 +R 6 +L 4 +R 5 +L 4 +R 3 +D 2 +R 1 +U 6 +D 9 +R 11 +U 4 +L 10 +R 5 +L 2 +U 7 +R 4 +L 2 +R 9 +D 1 +R 7 +L 11 +R 3 +L 4 +D 7 +L 10 +D 3 +U 11 +L 6 +U 9 +R 8 +U 3 +D 10 +U 8 +D 5 +R 1 +L 5 +R 11 +L 11 +R 9 +U 7 +R 1 +L 9 +D 3 +L 9 +U 1 +L 5 +D 10 +L 8 +R 4 +D 10 +R 4 +D 5 +L 12 +D 2 +U 1 +D 1 +U 9 +R 2 +D 2 +L 2 +D 6 +R 10 +U 3 +R 8 +L 3 +R 11 +L 5 +U 11 +D 5 +U 4 +L 3 +D 11 +R 5 +D 4 +L 11 +D 2 +U 9 +R 10 +L 10 +R 7 +D 11 +R 1 +U 9 +L 4 +U 3 +L 7 +U 1 +L 10 +R 7 +L 11 +U 11 +R 9 +L 4 +R 2 +L 10 +R 1 +U 3 +R 11 +D 5 +U 1 +R 12 +D 9 +R 4 +L 9 +D 8 +R 7 +L 2 +D 7 +R 8 +D 5 +U 7 +L 12 +R 6 +U 3 +R 11 +L 9 +R 8 +U 8 +R 4 +L 10 +U 4 +R 7 +D 10 +U 4 +L 11 +D 1 +U 6 +L 4 +D 2 +L 2 +D 3 +L 7 +U 6 +R 3 +U 9 +L 8 +R 8 +U 10 +R 8 +U 9 +R 4 +U 6 +R 12 +U 8 +L 10 +D 8 +R 10 +L 1 +U 5 +D 7 +L 10 +R 9 +U 2 +D 2 +R 12 +L 1 +D 12 +U 8 +R 4 +L 12 +R 7 +D 4 +U 10 +L 11 +U 8 +L 4 +R 1 +L 10 +U 12 +R 5 +U 2 +R 5 +L 11 +U 6 +D 8 +L 11 +D 1 +U 13 +D 8 +R 4 +D 6 +R 11 +L 10 +R 6 +L 4 +D 7 +U 10 +R 1 +L 8 +U 7 +D 1 +R 5 +D 5 +L 1 +U 7 +L 2 +U 4 +D 13 +R 10 +U 11 +D 13 +L 8 +R 2 +L 2 +D 2 +L 9 +R 10 +U 10 +D 3 +U 13 +R 4 +D 9 +L 9 +U 10 +D 7 +U 4 +R 13 +U 6 +D 1 +U 8 +L 1 +R 13 +U 3 +L 11 +U 12 +R 9 +L 8 +R 9 +L 2 +R 5 +L 7 +D 11 +L 8 +R 13 +D 10 +U 4 +R 5 +D 13 +L 2 +R 9 +L 5 +D 8 +L 13 +U 13 +D 1 +L 4 +U 5 +D 13 +R 2 +L 6 +D 12 +L 4 +U 5 +R 10 +U 2 +L 1 +R 8 +U 10 +L 9 +U 3 +D 3 +U 12 +D 6 +U 13 +L 5 +D 6 +U 14 +L 13 +U 7 +D 2 +U 8 +L 13 +R 10 +U 12 +R 5 +D 10 +U 5 +R 8 +D 2 +L 4 +R 9 +U 11 +R 10 +U 7 +L 14 +R 14 +U 14 +D 13 +U 9 +D 13 +R 5 +D 14 +U 11 +R 7 +U 11 +D 8 +R 11 +U 2 +R 4 +U 6 +L 11 +U 6 +R 8 +L 6 +D 1 +L 1 +D 5 +R 2 +U 11 +D 9 +R 14 +L 13 +U 4 +R 8 +L 4 +R 8 +D 14 +U 3 +L 3 +D 4 +L 4 +D 11 +U 4 +L 5 +U 3 +L 1 +R 2 +D 8 +L 11 +R 7 +U 13 +L 9 +R 14 +D 1 +R 8 +U 10 +R 9 +L 5 +U 7 +L 2 +R 14 +D 6 +U 12 +D 10 +U 1 +L 14 +D 2 +R 14 +U 6 +L 7 +U 3 +L 6 +U 7 +L 6 +D 7 +R 9 +U 11 +D 9 +U 7 +R 14 +U 8 +L 4 +U 8 +R 1 +L 12 +U 1 +R 2 +D 11 +R 8 +D 9 +U 9 +D 3 +U 5 +D 8 +U 8 +D 1 +L 12 +U 15 +L 2 +D 13 +R 4 +U 2 +R 7 +U 1 +R 4 +L 4 +D 1 +R 5 +D 9 +L 12 +D 11 +R 4 +D 14 +L 1 +U 13 +R 6 +D 13 +U 6 +D 10 +L 3 +U 8 +L 12 +D 1 +L 6 +D 5 +R 12 +D 11 +L 10 +U 14 +R 2 +D 4 +U 15 +D 10 +R 12 +D 7 +U 14 +L 14 +R 7 +U 15 +D 5 +U 13 +R 5 +U 6 +D 10 +L 12 +D 1 +U 2 +R 14 +D 9 +U 7 +L 5 +D 9 +R 14 +L 12 +R 2 +L 6 +R 13 +U 11 +L 10 +U 2 +R 2 +L 5 +R 8 +L 7 +U 7 +L 15 +R 5 +U 11 +L 10 +R 11 +L 5 +U 6 +R 4 +D 14 +U 13 +R 8 +L 10 +R 5 +U 8 +L 14 +D 6 +L 5 +D 7 +R 11 +L 15 +R 6 +L 15 +D 7 +R 9 +D 12 +L 3 +R 11 +L 10 +D 6 +L 6 +U 9 +L 10 +R 11 +D 7 +L 13 +D 11 +R 1 +U 4 +L 2 +R 4 +D 6 +U 8 +R 15 +L 10 +U 16 +R 10 +D 1 +U 14 +L 6 +D 1 +R 8 +U 6 +D 11 +L 9 +R 13 +U 12 +R 8 +D 7 +R 15 +U 1 +D 3 +U 13 +L 11 +D 6 +U 2 +D 1 +R 14 +U 10 +R 8 +L 9 +D 12 +U 16 +L 8 +U 10 +D 8 +U 2 +L 4 +D 4 +L 3 +R 3 +D 5 +U 2 +L 11 +D 16 +L 15 +R 15 +L 12 +D 8 +R 1 +D 11 +U 5 +R 10 +U 12 +D 9 +L 16 +U 10 +L 13 +R 10 +L 4 +R 6 +D 15 +U 12 +L 2 +R 15 +U 5 +R 1 +L 8 +D 6 +L 7 +D 13 +L 7 +D 10 +R 11 +L 14 +U 12 +D 7 +R 1 +L 1 +R 3 +U 1 +L 1 +R 14 +U 8 +D 7 +L 4 +D 15 +R 8 +U 1 +L 4 +R 12 +U 6 +L 13 +R 14 +U 3 +L 4 +D 9 +R 6 +U 5 +R 14 +L 6 +D 5 +U 6 +R 14 +L 10 +U 13 +L 16 +R 15 +L 12 +U 10 +L 2 +D 8 +L 7 +D 16 +L 17 +U 16 +R 13 +D 6 +U 8 +L 13 +D 9 +U 13 +D 3 +R 1 +U 12 +D 6 +L 8 +U 15 +R 6 +L 14 +U 15 +D 4 +U 9 +R 6 +D 8 +L 10 +D 3 +R 12 +L 10 +R 2 +D 2 +U 17 +D 16 +R 5 +L 13 +R 12 +L 4 +U 4 +L 12 +U 3 +L 15 +U 10 +L 5 +U 2 +D 13 +R 10 +U 7 +R 9 +D 7 +R 12 +U 14 +L 7 +R 10 +D 11 +U 8 +L 5 +R 4 +U 17 +L 12 +R 6 +L 17 +D 11 +R 17 +U 1 +D 2 +U 14 +D 17 +L 2 +D 14 +R 14 +L 1 +U 5 +D 8 +U 1 +R 12 +U 8 +D 3 +L 1 +D 8 +R 5 +U 9 +D 13 +U 15 +D 3 +R 15 +L 2 +R 2 +U 8 +R 1 +L 17 +U 16 +L 10 +D 2 +R 6 +L 11 +D 14 +R 3 +L 15 +U 16 +R 12 +U 1 +D 2 +U 2 +R 7 +L 4 +D 12 +U 12 +L 12 +U 15 +R 4 +U 8 +R 12 +L 5 +R 3 +L 5 +R 18 +L 4 +D 14 +R 4 +L 17 +R 18 +U 9 +D 18 +R 4 +U 13 +R 3 +D 6 +R 15 +L 1 +U 5 +L 3 +U 2 +R 15 +U 8 +L 7 +D 9 +L 15 +U 13 +L 17 +D 17 +R 15 +D 15 +L 14 +D 15 +R 16 +U 3 +D 6 +L 1 +R 14 +U 16 +L 7 +U 2 +L 14 +D 5 +L 6 +D 12 +R 18 +U 16 +D 7 +L 18 +D 10 +R 1 +L 8 +R 16 +L 5 +U 4 +R 18 +D 18 +R 5 +D 10 +L 18 +R 8 +L 2 +R 13 +L 16 +D 16 +U 17 +L 2 +R 5 +L 12 +D 10 +L 10 +D 6 +R 12 +L 17 +R 8 +L 14 +R 15 +L 18 +D 5 +R 1 +L 8 +U 13 +R 9 +U 14 +L 18 +U 4 +D 16 +L 7 +U 16 +L 14 +D 18 +R 1 +D 2 +R 11 +D 3 +U 12 +D 11 +U 2 +L 12 +U 7 +D 2 +R 8 +D 1 +U 9 +L 5 +D 14 +L 9 +D 5 +L 18 +D 16 +U 3 +R 13 +D 16 +R 18 +D 10 +L 4 +R 2 +L 5 +D 13 +L 15 +U 16 +R 9 +D 15 +R 5 +L 3 +U 5 +R 10 +U 3 +L 11 +R 14 +L 4 +D 7 +R 11 +D 12 +L 14 +R 13 +U 15 +R 14 +D 2 +R 16 +U 3 +D 3 +L 17 +D 11 +U 10 +L 2 +U 12 +D 3 +L 5 +D 9 +U 7 +D 14 +R 5 +L 14 +D 3 +R 11 +L 17 +U 7 +L 8 +U 2 +R 3 +D 18 +L 16 +U 12 +D 16 +R 6 +U 16 +D 10 +R 1 +L 7 +U 18 +R 2 +U 13 +R 15 +D 1 +R 15 +D 9 +U 9 +R 15 +D 6 +L 14 +D 15 +R 15 +D 10 +U 15 +L 17 +D 12 +R 6 +L 1 +R 15 +L 7 +D 11 +R 12 +D 9 +L 17 +D 18 +L 19 +D 2 +L 9 +D 1 +L 7 +R 5 +L 5 +R 1 +D 2 +L 1 +U 19 +L 5 +U 2 +D 15 +L 10 +R 7 +L 18 +D 13 +R 2 +D 18 +U 8 +D 15 +U 14 +R 5 +L 9 +U 9 +D 18 +L 9 +U 6 +R 7 +L 10 diff --git a/2022/9/data_test.txt b/2022/9/data_test.txt new file mode 100644 index 0000000..9874df2 --- /dev/null +++ b/2022/9/data_test.txt @@ -0,0 +1,8 @@ +R 4 +U 4 +L 3 +D 1 +R 4 +D 1 +L 5 +R 2 diff --git a/2022/9/main.cpp b/2022/9/main.cpp new file mode 100644 index 0000000..efa28f3 --- /dev/null +++ b/2022/9/main.cpp @@ -0,0 +1,137 @@ +#include +#include +#include +#include +#include +#include +#include + +void DebugPrint(std::pair &head, std::pair &tail, + std::set > &visited_positions) +{ + int x_min = head.first; + int y_min = head.second; + int x_max = head.first; + int y_max = head.second; + + for(auto &pos : visited_positions) + { + x_min = std::min(x_min, pos.first); + x_max = std::max(x_max, pos.first); + y_min = std::min(y_min, pos.second); + y_max = std::max(y_max, pos.second); + } + + for(auto i = 0; i < 50; ++i) + std::cout << std::endl; + std::cout << "X: " << x_min << " - " << x_max << std::endl; + std::cout << "Y: " << y_min << " - " << y_max << std::endl; + std::cout << std::endl; + + for(auto y = y_min; y <= y_max; ++y) + { + for(auto x = x_min; x <= x_max; ++x) + { + if(head.first == x && head.second == y) + std::cout << "\033[1;30mH"; // head + else if(tail.first == x && tail.second == y) + std::cout << "\033[1;25mT"; // head + else if(visited_positions.contains({x, y})) + std::cout << "\033[1;31mX"; // red + else + std::cout << "\033[0m-"; // default white + } + std::cout << std::endl; + } + std::cout << "\033[0m"; // default white +} + +int main() +{ + std::ifstream ifs("data.txt"); + if(!ifs.is_open()) + { + std::cerr << "Missing data.txt." << std::endl; + return -1; + } + + unsigned long total = 0; + unsigned long total_pt2 = 0; + + std::set > visited_positions; + + std::pair head = {0,0}; + std::pair tail = {0,0}; + + char dir; + int amt; + + for(std::string line; std::getline(ifs, line); ) + { + if(line == "") + continue; + + dir = line[0]; + amt = std::atoi(line.substr(2).c_str()); + + for(auto i = 0; i < amt; ++i) + { + // Move head: + switch(dir) + { + case 'U': + head.second--; + break; + case 'D': + head.second++; + break; + case 'L': + head.first--; + break; + case 'R': + head.first++; + break; + } + + // Follow with tail: + const int x_diff = head.first - tail.first; + const int y_diff = head.second - tail.second; + if(std::abs(x_diff) > 1) // 2 away + { + tail.first += (head.first - tail.first) / 2; + if(y_diff) + { + int to_change = std::ceil(std::abs(head.second - tail.second) / 2.0); + if(y_diff < 0) + tail.second -= to_change; + else + tail.second += to_change; + } + } + if(std::abs(y_diff) > 1) // 2 away + { + tail.second += (head.second - tail.second) / 2; + if(x_diff) + { + int to_change = std::ceil(std::abs(head.first - tail.first) / 2.0); + if(x_diff < 0) + tail.first -= to_change; + else + tail.first += to_change; + } + } + + visited_positions.insert(tail); + // DebugPrint(head, tail, visited_positions); + // usleep(1000000); + } + } + + DebugPrint(head, tail, visited_positions); + total = visited_positions.size(); + + std::cout << " Total: " << total << std::endl; + std::cout << "PT2 Total: " << total_pt2 << std::endl; + + return 0; +}