From e57f3fa02c66b86dc97f3aa9a6224c9d12b1e852 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20M=C3=A5rdbrink?= Date: Sat, 10 Dec 2022 14:36:30 +0100 Subject: [PATCH] Day 9 --- CMakeLists.txt | 1 + d9/input.txt | 2000 ++++++++++++++++++++++++++++++++++++++++++++++++ d9/main.cxx | 80 ++ 3 files changed, 2081 insertions(+) create mode 100644 d9/input.txt create mode 100644 d9/main.cxx diff --git a/CMakeLists.txt b/CMakeLists.txt index 9e71fea..4fa57c8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -17,3 +17,4 @@ add_executable(d5 "d5/main.cxx") add_executable(d6 "d6/main.cxx") add_executable(d7 "d7/main.cxx") add_executable(d8 "d8/main.cxx") +add_executable(d9 "d9/main.cxx") diff --git a/d9/input.txt b/d9/input.txt new file mode 100644 index 0000000..2b57957 --- /dev/null +++ b/d9/input.txt @@ -0,0 +1,2000 @@ +L 1 +R 1 +D 1 +R 2 +D 2 +L 1 +D 1 +L 2 +R 1 +L 1 +U 1 +D 2 +R 1 +D 2 +R 1 +L 2 +D 1 +U 1 +L 2 +U 1 +D 1 +U 1 +D 2 +L 2 +D 2 +L 1 +D 2 +R 2 +L 1 +D 2 +R 2 +D 2 +R 1 +L 2 +U 1 +R 2 +U 2 +D 1 +R 2 +U 1 +R 2 +L 2 +U 1 +L 2 +D 2 +L 1 +U 1 +R 2 +U 1 +R 2 +U 1 +R 2 +U 2 +L 1 +U 2 +L 2 +R 2 +L 2 +R 2 +L 1 +D 1 +L 1 +U 1 +R 2 +L 1 +R 2 +L 1 +R 1 +L 2 +R 2 +D 1 +L 2 +R 1 +L 2 +R 1 +D 2 +U 2 +D 1 +R 2 +L 2 +D 2 +U 1 +R 2 +U 2 +D 2 +R 2 +D 1 +R 2 +D 2 +R 1 +D 2 +R 1 +D 2 +U 1 +R 2 +U 2 +R 2 +L 1 +U 2 +L 1 +R 1 +U 1 +R 1 +L 1 +U 1 +D 2 +L 1 +D 2 +U 1 +R 1 +D 2 +U 1 +D 3 +R 1 +L 3 +U 3 +L 2 +U 3 +D 2 +U 2 +D 2 +U 2 +D 1 +L 1 +D 1 +U 1 +D 2 +U 2 +R 3 +D 1 +L 1 +D 1 +R 1 +U 2 +R 2 +D 2 +R 2 +U 2 +R 2 +L 3 +R 2 +D 1 +R 3 +U 1 +L 3 +U 3 +L 2 +R 3 +D 2 +L 3 +D 1 +L 2 +U 3 +L 2 +U 3 +D 2 +L 3 +R 3 +U 3 +D 2 +U 3 +D 3 +U 2 +D 2 +U 2 +D 3 +L 1 +R 2 +U 1 +L 1 +R 1 +U 1 +D 2 +R 2 +U 3 +L 1 +D 2 +R 3 +D 1 +U 2 +R 1 +L 2 +R 2 +U 2 +R 2 +D 1 +L 3 +U 3 +L 2 +D 1 +U 3 +R 3 +D 1 +U 3 +L 1 +D 2 +U 1 +D 1 +L 3 +R 1 +L 1 +U 3 +L 2 +U 1 +R 1 +U 3 +L 2 +U 1 +L 2 +D 2 +L 2 +U 3 +D 2 +L 1 +U 3 +L 2 +U 2 +D 3 +L 3 +U 1 +D 2 +R 2 +D 1 +U 3 +R 4 +U 2 +D 2 +L 2 +U 2 +L 1 +R 2 +D 2 +U 1 +D 2 +R 1 +U 4 +R 1 +U 2 +D 2 +U 2 +D 1 +L 1 +R 2 +D 3 +U 1 +D 3 +R 2 +L 4 +U 4 +L 4 +U 3 +D 1 +R 2 +L 3 +D 4 +U 3 +D 3 +U 2 +D 2 +U 2 +D 1 +U 3 +D 1 +L 4 +U 2 +L 2 +U 1 +R 1 +L 3 +R 4 +L 1 +U 1 +L 1 +D 1 +L 2 +U 4 +R 1 +D 3 +U 3 +L 1 +U 1 +D 4 +L 1 +D 3 +U 2 +L 4 +U 2 +R 2 +U 1 +R 1 +L 3 +R 1 +D 4 +U 3 +L 1 +U 2 +L 1 +D 3 +R 3 +U 4 +R 4 +D 4 +L 3 +U 4 +L 3 +D 2 +R 2 +D 3 +U 1 +D 1 +R 2 +D 2 +L 2 +R 2 +D 4 +U 4 +L 2 +D 3 +L 4 +R 2 +U 1 +D 4 +L 2 +D 1 +U 3 +L 2 +R 4 +U 1 +R 2 +U 3 +L 3 +D 4 +R 2 +L 2 +D 4 +U 1 +R 3 +U 3 +D 5 +L 4 +D 3 +U 4 +R 5 +L 3 +R 1 +D 1 +R 4 +L 1 +D 5 +L 4 +R 2 +U 1 +D 2 +R 4 +U 5 +R 4 +D 2 +R 4 +D 4 +R 2 +L 4 +R 4 +U 2 +D 1 +L 4 +R 4 +U 3 +D 2 +L 5 +R 4 +L 2 +R 2 +D 3 +U 3 +D 3 +L 4 +D 2 +U 2 +L 4 +R 1 +D 2 +L 4 +U 2 +L 4 +U 2 +D 2 +L 2 +R 4 +D 4 +U 3 +L 1 +R 4 +L 4 +R 5 +D 2 +R 2 +U 1 +D 4 +L 2 +U 3 +R 1 +L 3 +R 4 +L 2 +R 3 +U 1 +R 5 +U 2 +L 4 +R 2 +D 4 +U 3 +R 2 +L 4 +D 4 +U 4 +D 2 +U 5 +L 5 +U 1 +D 5 +L 1 +R 1 +L 2 +D 2 +U 1 +R 3 +U 3 +L 3 +D 1 +R 5 +D 5 +L 3 +R 3 +D 2 +L 1 +D 2 +L 3 +U 1 +R 5 +U 2 +R 3 +L 2 +U 1 +D 4 +L 1 +D 2 +U 4 +D 3 +U 6 +L 3 +D 4 +R 6 +U 4 +L 3 +D 2 +L 1 +U 1 +D 6 +R 4 +L 1 +D 4 +L 3 +U 2 +L 2 +R 2 +L 1 +D 2 +U 2 +L 5 +U 6 +L 1 +D 3 +U 1 +L 1 +U 6 +D 4 +R 6 +D 2 +R 3 +L 2 +D 3 +U 1 +D 4 +U 1 +D 4 +R 3 +L 3 +R 2 +L 1 +R 6 +L 5 +R 3 +D 2 +L 6 +R 4 +D 1 +R 4 +L 6 +R 1 +U 5 +D 2 +U 4 +R 6 +D 5 +U 5 +R 6 +L 5 +D 4 +U 3 +L 6 +U 3 +R 5 +U 1 +L 6 +D 1 +U 6 +L 1 +R 4 +L 3 +R 6 +D 2 +L 1 +U 4 +D 4 +L 1 +U 6 +L 6 +U 5 +L 6 +R 5 +L 5 +R 2 +U 6 +R 1 +U 2 +D 6 +U 3 +D 4 +U 4 +L 6 +U 6 +R 4 +D 5 +L 2 +D 5 +R 1 +L 2 +D 6 +U 6 +L 6 +U 1 +R 4 +L 5 +D 6 +L 6 +U 7 +D 4 +L 4 +R 2 +U 5 +L 7 +R 3 +D 6 +R 1 +L 2 +R 2 +U 5 +R 5 +D 3 +L 4 +U 2 +L 6 +R 2 +U 3 +D 2 +R 7 +L 3 +D 6 +L 4 +R 1 +D 7 +R 4 +U 3 +L 4 +D 5 +L 4 +D 2 +L 5 +U 4 +R 6 +D 2 +L 4 +U 4 +L 3 +R 7 +L 6 +U 1 +D 5 +L 6 +D 3 +L 7 +D 5 +L 1 +R 1 +D 7 +U 6 +L 4 +D 6 +U 7 +L 7 +D 6 +L 4 +R 4 +U 5 +D 4 +U 2 +R 4 +U 4 +L 2 +D 6 +U 6 +L 5 +R 7 +L 4 +R 7 +L 4 +U 5 +D 3 +L 6 +R 1 +D 2 +U 4 +L 3 +D 1 +R 2 +U 2 +D 4 +L 6 +U 7 +D 1 +R 1 +L 4 +R 1 +D 6 +U 6 +R 2 +D 7 +R 2 +D 2 +U 3 +L 5 +U 5 +L 4 +D 2 +R 2 +U 5 +R 1 +D 7 +L 6 +D 1 +R 1 +L 2 +D 3 +R 7 +L 2 +U 2 +D 4 +R 6 +U 2 +R 4 +U 2 +R 1 +L 3 +R 7 +U 2 +R 7 +L 4 +U 4 +R 4 +L 4 +D 3 +U 1 +L 5 +D 8 +L 7 +R 7 +D 2 +U 1 +L 5 +R 5 +L 2 +D 1 +U 6 +R 3 +U 2 +R 7 +L 7 +U 7 +D 3 +R 6 +U 2 +L 7 +U 7 +R 4 +D 6 +R 4 +U 4 +D 4 +R 1 +U 4 +R 1 +U 2 +D 6 +L 2 +D 1 +L 6 +D 2 +U 3 +D 4 +U 8 +R 5 +U 8 +R 1 +D 7 +L 5 +U 4 +D 2 +U 6 +D 4 +L 8 +D 5 +R 1 +U 6 +L 8 +R 7 +D 1 +U 5 +D 8 +R 3 +U 3 +D 2 +L 3 +U 3 +R 4 +D 7 +U 2 +D 2 +L 4 +R 6 +L 6 +D 2 +R 5 +D 4 +U 7 +D 6 +U 3 +L 8 +D 3 +R 7 +U 3 +R 5 +D 1 +U 6 +D 8 +L 7 +D 5 +L 6 +R 5 +L 4 +R 7 +L 8 +D 5 +U 5 +R 8 +L 6 +D 7 +R 9 +U 7 +L 8 +D 6 +U 2 +D 2 +R 9 +D 2 +L 5 +R 3 +U 6 +R 6 +L 7 +R 5 +D 3 +R 7 +D 1 +L 1 +U 5 +D 2 +R 6 +D 4 +R 2 +U 1 +L 9 +D 8 +R 2 +U 3 +D 6 +L 3 +D 3 +R 5 +L 1 +U 5 +L 6 +R 4 +L 4 +U 3 +L 6 +D 5 +L 9 +D 7 +R 9 +U 1 +R 7 +U 2 +D 8 +L 6 +U 1 +L 2 +U 3 +D 1 +L 3 +U 7 +L 3 +R 3 +D 2 +L 4 +U 3 +R 6 +L 5 +R 3 +U 5 +R 6 +L 7 +D 8 +L 8 +D 6 +U 4 +R 5 +U 2 +D 9 +L 1 +R 1 +D 9 +U 2 +L 8 +U 1 +L 3 +D 2 +L 6 +U 7 +D 7 +U 9 +R 1 +D 1 +U 4 +L 1 +U 5 +L 7 +U 2 +D 4 +U 3 +R 6 +D 3 +L 9 +D 5 +U 3 +D 1 +L 4 +U 2 +R 6 +L 1 +R 6 +D 1 +L 3 +U 8 +R 2 +U 9 +D 3 +L 8 +R 5 +U 6 +R 8 +L 2 +D 5 +L 1 +U 7 +R 1 +L 7 +D 2 +R 8 +U 5 +D 5 +L 9 +D 6 +R 10 +D 3 +R 2 +D 6 +L 7 +D 8 +R 1 +D 4 +R 9 +L 5 +D 7 +U 2 +R 3 +L 4 +D 7 +U 5 +D 5 +L 9 +U 6 +D 7 +U 5 +D 8 +R 3 +U 3 +D 3 +R 10 +D 2 +U 7 +D 2 +U 2 +R 2 +U 8 +L 9 +U 5 +D 1 +U 5 +D 8 +R 4 +D 2 +R 1 +U 9 +L 2 +D 9 +R 5 +L 10 +R 1 +U 2 +L 3 +D 8 +U 8 +L 3 +U 4 +R 2 +L 6 +R 10 +D 5 +U 6 +L 10 +D 3 +U 2 +L 2 +R 9 +U 5 +R 2 +L 3 +R 4 +L 1 +D 4 +L 8 +R 3 +D 4 +U 5 +R 8 +D 3 +L 5 +D 1 +U 8 +R 4 +U 4 +L 9 +R 3 +L 10 +D 1 +L 10 +D 7 +L 3 +R 8 +L 7 +R 8 +D 4 +R 5 +U 2 +D 6 +U 4 +D 4 +U 9 +L 6 +D 3 +R 9 +U 2 +R 9 +U 10 +R 1 +D 5 +L 9 +R 1 +U 5 +R 3 +D 7 +U 5 +D 7 +L 7 +D 9 +R 11 +D 2 +R 5 +U 1 +D 5 +U 4 +R 6 +L 10 +D 2 +R 2 +U 4 +L 2 +R 7 +U 11 +R 5 +D 9 +L 4 +D 11 +U 8 +L 8 +D 10 +R 4 +L 5 +D 5 +L 1 +D 3 +L 6 +U 9 +D 11 +R 10 +D 6 +R 10 +U 4 +L 1 +U 1 +R 7 +D 6 +R 6 +D 5 +U 11 +R 8 +D 7 +U 10 +L 4 +U 8 +R 11 +L 4 +R 9 +D 3 +L 10 +U 9 +L 8 +U 3 +D 3 +R 1 +L 11 +U 1 +D 7 +L 7 +D 8 +L 11 +D 6 +L 7 +U 6 +D 11 +R 9 +U 11 +L 9 +U 2 +D 1 +L 1 +D 2 +L 6 +R 4 +D 7 +U 8 +R 11 +D 9 +L 8 +D 7 +U 3 +R 7 +D 11 +L 3 +U 5 +L 3 +D 6 +U 2 +L 1 +R 2 +D 7 +R 10 +L 1 +U 1 +R 8 +D 5 +R 3 +L 3 +D 7 +R 10 +U 1 +R 8 +L 7 +U 5 +R 2 +U 10 +L 6 +R 8 +D 1 +U 12 +R 3 +L 6 +D 2 +R 12 +L 5 +R 8 +D 12 +R 8 +D 4 +R 3 +U 10 +D 8 +R 7 +U 3 +D 8 +U 5 +L 12 +U 10 +D 6 +R 5 +L 3 +R 8 +U 2 +R 5 +L 3 +U 7 +R 2 +L 4 +U 12 +R 6 +L 1 +U 3 +L 4 +U 6 +R 7 +U 12 +L 5 +R 8 +D 1 +U 5 +L 10 +D 8 +R 5 +L 10 +D 1 +R 5 +D 8 +U 2 +L 8 +D 11 +R 4 +U 11 +D 10 +U 9 +D 8 +R 9 +U 10 +D 12 +L 3 +D 1 +U 11 +R 10 +L 6 +R 4 +U 3 +R 4 +L 1 +U 12 +D 10 +L 1 +R 9 +L 3 +D 10 +L 12 +U 4 +D 6 +R 5 +U 11 +D 5 +L 8 +R 9 +L 4 +R 11 +D 6 +L 1 +U 10 +R 7 +U 4 +D 2 +L 3 +R 12 +U 7 +D 7 +U 2 +L 11 +R 8 +U 4 +R 1 +U 13 +L 8 +R 2 +D 6 +U 2 +R 2 +U 2 +L 6 +U 7 +D 6 +R 7 +D 7 +L 3 +R 5 +L 1 +U 9 +R 7 +U 4 +L 7 +D 9 +L 10 +R 13 +L 11 +D 8 +R 10 +L 12 +U 12 +R 5 +U 3 +L 1 +R 10 +D 13 +L 1 +R 9 +L 3 +U 11 +L 1 +D 4 +L 1 +R 7 +D 12 +R 11 +U 5 +D 12 +L 5 +D 7 +R 7 +L 12 +U 8 +D 7 +U 5 +R 13 +L 10 +R 7 +D 4 +U 8 +L 10 +R 8 +L 6 +R 5 +D 13 +L 7 +U 8 +D 12 +R 10 +L 4 +D 7 +U 4 +L 11 +R 3 +L 6 +R 6 +D 3 +R 11 +L 10 +R 8 +U 5 +R 4 +U 5 +R 10 +L 4 +D 3 +U 8 +R 11 +D 12 +R 9 +L 11 +R 9 +L 9 +R 5 +U 13 +R 2 +U 4 +D 12 +R 9 +L 10 +D 4 +L 2 +D 13 +L 3 +D 11 +U 10 +D 10 +U 13 +L 2 +U 1 +L 9 +U 10 +L 12 +U 14 +R 8 +U 10 +D 6 +R 13 +D 10 +L 6 +U 3 +R 8 +L 1 +R 2 +D 14 +U 11 +L 4 +D 11 +R 14 +U 7 +R 1 +D 5 +U 12 +R 8 +D 11 +R 14 +U 3 +R 8 +U 5 +L 13 +D 5 +L 8 +R 1 +L 12 +D 5 +R 8 +L 4 +D 1 +R 6 +L 14 +R 1 +U 11 +R 4 +D 12 +L 10 +R 7 +D 4 +U 1 +L 3 +U 13 +R 1 +D 13 +U 2 +R 9 +D 1 +L 5 +R 8 +U 2 +D 9 +L 5 +D 4 +L 3 +D 11 +L 3 +R 14 +D 9 +R 2 +U 3 +D 10 +L 4 +D 14 +L 12 +R 5 +D 14 +L 3 +U 1 +D 13 +U 6 +R 3 +L 9 +R 7 +U 8 +R 9 +D 9 +U 8 +D 3 +R 4 +D 5 +U 14 +L 5 +D 12 +L 1 +R 3 +D 6 +R 10 +U 5 +R 4 +D 3 +L 12 +D 13 +L 13 +D 8 +L 3 +D 13 +L 1 +R 9 +D 2 +L 5 +U 13 +R 3 +D 14 +R 8 +L 3 +U 10 +L 6 +R 2 +L 1 +U 15 +R 2 +D 11 +R 3 +L 11 +D 13 +L 5 +D 2 +U 11 +L 5 +D 6 +U 3 +R 7 +U 14 +R 9 +D 5 +R 2 +L 15 +U 13 +D 14 +L 14 +U 8 +L 14 +D 15 +R 7 +U 6 +D 3 +U 7 +D 10 +L 4 +R 8 +L 13 +U 10 +D 2 +U 7 +D 14 +R 2 +L 6 +R 13 +L 6 +D 10 +U 9 +D 14 +U 5 +D 6 +R 4 +L 3 +R 1 +L 3 +D 9 +U 14 +R 2 +D 15 +L 3 +D 11 +L 4 +U 13 +D 14 +U 12 +D 8 +R 11 +U 14 +R 15 +D 8 +L 3 +D 10 +L 10 +U 14 +D 13 +L 7 +D 8 +U 12 +L 3 +D 6 +L 8 +R 1 +L 5 +R 15 +L 1 +D 5 +U 4 +R 11 +L 14 +D 7 +L 9 +U 5 +R 7 +D 4 +R 13 +L 15 +U 5 +L 3 +R 6 +D 13 +L 11 +U 9 +R 6 +D 2 +R 5 +D 11 +R 2 +U 11 +R 14 +L 11 +U 3 +L 4 +R 14 +D 7 +R 10 +U 6 +R 14 +D 8 +R 15 +D 3 +U 9 +L 14 +R 7 +L 14 +R 7 +U 13 +L 12 +U 7 +R 9 +D 7 +L 2 +D 13 +U 8 +D 14 +U 4 +R 7 +L 3 +R 7 +U 7 +R 15 +D 13 +U 4 +L 15 +D 12 +U 11 +L 16 +D 16 +L 12 +U 4 +D 3 +R 11 +U 2 +L 4 +U 6 +R 3 +D 4 +R 1 +D 16 +U 6 +D 7 +L 9 +U 5 +R 3 +L 5 +R 2 +U 3 +L 8 +R 13 +U 10 +D 1 +L 15 +D 1 +R 7 +L 16 +D 5 +U 8 +R 13 +D 11 +L 9 +D 8 +U 6 +R 7 +D 14 +U 9 +L 4 +R 10 +D 14 +R 13 +U 15 +D 9 +R 2 +D 5 +L 10 +U 11 +D 7 +U 11 +D 4 +U 8 +R 13 +U 15 +L 15 +U 12 +L 10 +D 10 +R 16 +D 14 +U 10 +R 16 +D 3 +R 16 +L 13 +D 5 +R 9 +L 9 +R 10 +D 8 +R 11 +D 12 +L 10 +R 15 +L 5 +U 12 +L 3 +U 1 +R 1 +L 6 +R 7 +L 5 +D 4 +L 10 +U 15 +L 10 +U 7 +L 5 +D 3 +L 11 +U 12 +R 16 +L 17 +U 8 +D 2 +L 13 +U 10 +L 2 +R 4 +D 4 +L 14 +D 6 +U 5 +D 14 +U 17 +D 7 +R 3 +D 10 +L 11 +D 15 +L 4 +D 5 +L 7 +D 3 +R 15 +U 10 +R 12 +L 7 +U 13 +R 6 +L 6 +R 4 +L 6 +D 3 +U 9 +D 17 +R 6 +D 1 +R 5 +L 3 +R 6 +L 17 +D 1 +L 6 +U 9 +L 15 +U 10 +R 7 +U 7 +R 15 +U 8 +R 16 +D 16 +L 3 +U 17 +L 16 +D 8 +L 6 +R 1 +D 10 +L 13 +D 17 +U 10 +D 15 +U 12 +D 1 +L 10 +R 8 +D 13 +L 16 +R 1 +U 1 +D 5 +U 1 +L 12 +R 9 +U 7 +L 7 +D 7 +U 15 +R 6 +L 10 +R 17 +D 6 +R 10 +U 10 +D 16 +L 16 +U 14 +R 13 +U 15 +L 7 +U 11 +L 16 +U 9 +L 5 +D 16 +R 8 +U 17 +D 6 +R 18 +D 17 +L 14 +D 13 +R 2 +U 2 +R 5 +U 10 +L 17 +U 4 +L 7 +U 1 +D 14 +R 11 +L 6 +D 5 +U 12 +D 16 +U 5 +D 3 +R 18 +D 12 +R 3 +U 5 +L 1 +U 1 +D 14 +L 8 +R 15 +U 9 +L 10 +D 3 +L 5 +U 11 +D 7 +R 17 +U 7 +D 1 +U 16 +D 15 +L 11 +U 8 +L 5 +R 5 +D 15 +L 5 +U 1 +R 3 +L 7 +U 11 +D 12 +L 12 +D 14 +U 13 +D 14 +R 14 +D 5 +R 12 +D 7 +L 17 +U 18 +D 13 +L 2 +D 3 +R 6 +U 9 +L 1 +R 3 +U 17 +L 7 +D 5 +U 9 +L 2 +D 8 +U 16 +L 3 +U 10 +D 4 +U 6 +D 11 +L 18 +U 11 +L 18 +R 18 +U 3 +R 11 +L 18 +U 14 +D 7 +L 16 +D 2 +L 8 +D 8 +L 9 +R 5 +U 14 +R 15 +D 5 +U 18 +D 5 +L 5 +R 7 +D 4 +R 8 +L 13 +D 15 +R 10 +U 5 +L 1 +D 8 +L 1 +U 6 +L 7 +D 4 +U 12 +R 4 +D 11 +R 5 +L 6 +R 3 +L 1 +D 14 +L 18 +D 5 +U 2 +R 8 +D 18 +R 11 +U 10 +R 4 +U 14 +D 15 +U 17 +R 16 +D 15 +R 8 +U 14 +R 18 +L 2 +R 3 +L 10 +R 9 +U 17 +R 2 +U 19 +L 7 +D 19 +L 8 +R 12 +U 1 +L 18 +R 7 +L 18 +D 19 +U 9 +L 5 +D 5 +L 14 +U 2 +R 8 +D 19 +R 17 +U 6 +D 4 +R 7 +U 6 +R 14 +U 3 +D 17 +U 14 +R 19 +U 1 +R 17 +L 11 +U 18 +L 13 +R 16 +D 9 +L 3 +U 9 +D 5 +L 2 +D 5 +L 10 +U 10 +R 10 +U 6 +D 4 +R 3 +U 1 +L 18 +U 15 +R 2 +L 2 +U 9 +R 2 +U 8 +R 18 +D 16 +R 3 +D 6 +R 14 +L 15 +D 18 +L 12 +R 7 +L 18 +D 15 +R 13 +D 8 +L 8 +R 9 +L 4 +U 11 +R 12 +L 13 +U 12 +D 5 +L 4 +D 19 +R 10 +L 9 +U 18 diff --git a/d9/main.cxx b/d9/main.cxx new file mode 100644 index 0000000..a0bc1c5 --- /dev/null +++ b/d9/main.cxx @@ -0,0 +1,80 @@ +#include +#include +#include +#include +#include +#include +#include + +typedef std::pair Pos; +struct PosHash +{ + template + std::size_t operator()(const std::pair &pair) const + { + return std::hash()(pair.first) ^ std::hash()(pair.second); + } +}; + +int signum(int n) +{ + return (0 < n) - (n < 0); +} + +int main() +{ + std::ifstream file{"../d9/input.txt"}; + std::string line; + + Pos h{0, 0}; + std::vector knots(9); + std::fill(knots.begin(), knots.end(), std::pair{0, 0}); + + std::unordered_set visited; + + visited.insert(knots.back()); + while (std::getline(file, line)) + { + std::stringstream iss(line); + char dir; + int dis; + iss >> dir >> dis; + + for (int i{0}; i < dis; i++) + { + switch (dir) + { + case 'U': + h.second++; + break; + case 'D': + h.second--; + break; + case 'L': + h.first--; + break; + case 'R': + h.first++; + break; + } + + Pos *prev = &h; + for (int j{0}; j < knots.size(); j++) + { + Pos deltaPos{prev->first - knots[j].first, prev->second - knots[j].second}; + if (std::abs(deltaPos.second) == 2 || std::abs(deltaPos.first) == 2) + { + knots[j].first += signum(deltaPos.first); + knots[j].second += signum(deltaPos.second); + } + prev = &knots[j]; + } + + visited.insert(knots.back()); + } + } + + std::cout << visited.size() << std::endl; + + return 0; +} \ No newline at end of file