advent-of-code

Perserverance, or the lack thereof

git clone git://git.shimmy1996.com/advent-of-code.git
commit 60e9733da663c06745f7e79347079eb91386a101
parent 5244c3d41077b81a909346e430b580d921bea748
Author: Shimmy Xu <shimmy.xu@shimmy1996.com>
Date:   Wed, 21 Dec 2022 18:20:15 -0500

Add 2022 day 18

Diffstat:
A2022/day18/Cargo.toml | 8++++++++
A2022/day18/input.txt | 2145+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
A2022/day18/src/main.rs | 103+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 2256 insertions(+), 0 deletions(-)
diff --git a/2022/day18/Cargo.toml b/2022/day18/Cargo.toml
@@ -0,0 +1,8 @@
+[package]
+name = "day18"
+version = "0.1.0"
+edition = "2021"
+
+# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
+
+[dependencies]
diff --git a/2022/day18/input.txt b/2022/day18/input.txt
@@ -0,0 +1,2145 @@
+11,11,18
+13,12,16
+12,11,3
+14,3,6
+15,12,4
+4,8,10
+9,2,13
+4,5,10
+12,17,6
+7,4,9
+8,16,11
+13,13,15
+11,13,15
+2,13,8
+8,2,11
+12,5,14
+12,17,7
+7,18,8
+4,4,11
+4,4,6
+6,14,4
+13,11,14
+13,4,15
+4,6,9
+8,13,2
+18,7,7
+7,5,4
+12,6,15
+4,5,9
+13,4,6
+5,14,11
+9,2,8
+15,12,15
+11,1,9
+9,6,16
+5,4,12
+15,13,9
+2,9,4
+3,6,12
+8,13,3
+3,10,3
+3,6,6
+14,13,13
+14,11,15
+6,15,14
+14,10,16
+14,14,12
+11,13,2
+8,16,15
+6,15,4
+4,5,8
+16,11,4
+3,14,8
+11,17,7
+7,15,15
+6,7,15
+12,2,13
+17,7,12
+12,8,1
+4,14,6
+9,1,11
+13,10,3
+6,16,6
+9,16,3
+11,9,18
+8,18,9
+7,10,17
+16,12,8
+14,5,15
+13,16,10
+7,12,2
+5,3,11
+8,4,14
+16,12,10
+1,8,8
+18,12,9
+4,5,11
+10,16,15
+14,4,5
+12,13,16
+15,13,8
+8,8,16
+11,16,9
+10,16,12
+14,4,14
+6,1,8
+16,11,6
+8,4,4
+1,6,8
+6,4,12
+2,11,11
+17,6,10
+16,7,11
+8,6,17
+17,12,6
+14,15,14
+16,5,11
+8,15,13
+12,9,16
+3,7,11
+12,12,2
+10,12,1
+16,12,4
+14,8,2
+15,3,11
+7,1,8
+6,2,11
+3,10,4
+15,7,12
+4,5,5
+7,3,15
+3,11,13
+16,5,6
+2,12,9
+5,17,8
+11,11,2
+5,3,6
+17,14,9
+14,17,7
+8,12,17
+15,14,11
+11,16,13
+16,14,7
+9,16,7
+7,7,16
+16,11,8
+8,14,17
+6,5,14
+12,3,8
+3,5,9
+13,2,10
+11,5,14
+6,15,15
+16,7,13
+15,13,4
+15,5,7
+10,15,8
+5,4,10
+4,15,14
+5,10,4
+5,12,16
+13,2,8
+10,17,6
+5,11,15
+4,5,14
+11,12,1
+9,2,11
+2,6,9
+2,13,13
+13,5,6
+12,17,10
+8,11,1
+11,12,3
+8,17,13
+10,2,8
+18,11,8
+11,7,3
+5,14,5
+8,11,2
+13,4,12
+4,5,7
+9,8,4
+6,4,11
+16,12,7
+18,8,10
+14,3,8
+9,13,17
+2,6,8
+13,11,16
+7,2,11
+12,14,4
+6,6,16
+5,2,11
+16,15,8
+10,2,13
+4,13,4
+15,5,8
+16,14,13
+9,5,15
+16,8,9
+18,9,11
+15,11,15
+11,13,17
+6,15,8
+3,5,12
+10,9,3
+13,15,4
+5,7,14
+16,8,4
+8,4,3
+17,8,9
+6,17,6
+5,15,14
+9,1,9
+12,7,2
+16,9,5
+9,16,11
+4,15,12
+6,17,7
+16,7,12
+3,12,9
+17,9,10
+8,4,8
+7,8,1
+9,13,4
+5,3,9
+17,10,5
+11,9,3
+6,4,14
+7,9,17
+15,6,15
+12,6,17
+3,4,9
+10,16,7
+16,11,9
+2,9,10
+13,8,1
+1,11,8
+6,3,12
+7,13,5
+5,12,4
+13,2,9
+2,11,7
+12,3,15
+15,5,11
+17,11,8
+16,6,5
+5,6,5
+18,11,12
+16,7,8
+3,7,8
+6,15,5
+6,6,5
+14,15,6
+16,7,7
+10,2,10
+15,5,12
+7,4,10
+16,9,8
+8,10,3
+3,11,5
+12,10,17
+5,5,9
+6,7,16
+18,6,8
+8,13,4
+10,10,2
+9,0,9
+3,4,8
+10,9,0
+5,3,12
+8,17,7
+8,8,1
+10,10,17
+11,17,13
+6,5,6
+4,7,14
+10,2,11
+2,10,9
+3,13,10
+7,15,3
+9,12,17
+10,9,1
+10,13,16
+13,11,4
+13,5,14
+15,15,10
+2,8,10
+14,15,5
+12,5,17
+9,10,16
+11,4,16
+13,14,14
+6,13,13
+8,3,4
+2,7,14
+16,8,15
+15,11,7
+17,9,6
+3,10,14
+14,14,13
+14,6,6
+14,14,6
+1,8,11
+17,9,5
+6,4,4
+9,17,12
+7,11,17
+17,6,12
+15,16,8
+16,8,14
+16,9,12
+15,12,7
+3,8,13
+13,13,17
+13,9,3
+13,10,2
+16,6,12
+13,13,3
+15,4,12
+12,17,9
+12,15,14
+4,4,9
+12,14,5
+16,14,15
+6,11,15
+8,16,7
+7,15,7
+15,11,5
+17,11,11
+3,7,5
+14,16,12
+6,10,16
+13,6,3
+12,1,10
+11,16,11
+5,15,8
+5,8,2
+3,13,7
+6,8,2
+8,7,2
+15,8,8
+11,2,12
+4,11,15
+7,13,16
+3,14,9
+13,4,5
+7,15,16
+7,16,9
+5,9,2
+1,9,9
+7,13,18
+12,4,15
+5,13,16
+7,9,2
+17,13,6
+13,9,17
+11,17,11
+16,8,11
+4,16,12
+5,5,13
+2,8,9
+9,18,7
+16,6,9
+4,13,6
+16,5,14
+17,6,6
+8,3,14
+17,12,12
+4,16,11
+7,8,2
+14,14,14
+10,6,2
+15,8,15
+6,2,9
+14,7,16
+13,16,8
+16,4,10
+7,3,13
+6,12,2
+11,16,15
+10,15,4
+8,6,12
+8,3,10
+17,7,11
+13,6,13
+7,3,14
+8,14,3
+16,11,16
+8,15,16
+15,3,10
+7,15,13
+9,5,17
+2,14,9
+5,15,7
+3,6,3
+4,4,7
+13,3,13
+12,16,9
+12,4,10
+9,16,15
+15,16,13
+3,9,13
+4,7,13
+18,7,11
+6,16,12
+17,5,7
+4,16,8
+3,13,13
+5,14,6
+15,15,6
+14,17,9
+7,3,7
+11,3,13
+10,2,6
+12,11,2
+4,14,13
+17,8,7
+11,2,11
+9,2,9
+14,15,7
+10,4,13
+9,14,3
+11,3,15
+12,3,6
+11,1,11
+10,5,17
+15,7,10
+10,8,2
+14,9,4
+17,9,8
+4,9,4
+14,12,4
+10,17,7
+15,11,16
+7,13,3
+11,16,14
+10,13,17
+3,15,12
+16,13,8
+18,10,11
+16,15,11
+2,11,12
+12,8,17
+4,3,8
+9,15,4
+15,16,11
+14,4,15
+11,16,6
+6,4,8
+11,4,15
+8,14,15
+12,16,5
+12,7,17
+6,2,10
+6,16,13
+10,15,6
+2,12,7
+11,2,9
+11,3,6
+12,2,8
+10,2,7
+14,15,12
+2,8,14
+4,11,16
+15,8,16
+16,15,7
+4,15,10
+13,6,14
+16,11,11
+4,11,5
+3,6,14
+16,9,4
+17,10,8
+2,14,8
+12,8,18
+15,9,16
+9,17,10
+10,4,4
+12,10,16
+5,4,9
+13,15,14
+3,7,7
+15,14,5
+15,12,14
+6,10,4
+9,16,10
+8,16,12
+2,10,11
+8,6,16
+7,1,11
+13,14,4
+5,13,15
+8,13,16
+12,15,15
+15,11,4
+1,12,10
+13,7,17
+4,13,14
+10,17,10
+4,4,14
+13,3,9
+14,4,10
+5,5,5
+9,17,6
+10,10,1
+3,5,7
+14,4,7
+12,6,2
+6,16,9
+8,14,16
+9,15,15
+12,2,14
+4,10,9
+10,17,9
+12,16,13
+18,13,9
+12,2,10
+9,12,16
+9,6,3
+6,15,13
+2,11,6
+4,10,15
+4,8,4
+15,7,4
+15,15,9
+12,4,7
+2,8,3
+9,5,6
+10,6,16
+15,9,3
+10,17,5
+5,6,4
+7,16,8
+9,12,18
+8,5,15
+7,6,2
+13,5,5
+13,14,3
+15,14,13
+18,10,8
+12,9,3
+9,4,13
+11,7,1
+9,14,16
+14,3,7
+10,7,17
+11,15,17
+13,3,14
+14,14,4
+8,10,18
+5,16,9
+15,11,6
+2,5,8
+16,9,14
+13,10,17
+5,3,15
+8,2,13
+2,10,10
+2,9,5
+7,15,6
+5,15,13
+5,14,14
+12,5,15
+13,12,2
+18,9,10
+13,4,14
+9,5,3
+7,5,3
+7,3,9
+12,3,14
+7,12,3
+17,7,6
+5,16,7
+2,10,8
+11,14,4
+15,14,7
+4,14,10
+6,12,17
+6,4,10
+7,6,3
+14,16,5
+5,3,8
+3,13,12
+7,3,6
+6,17,9
+10,15,16
+8,4,5
+17,14,7
+13,14,12
+3,15,9
+11,17,5
+3,9,5
+15,8,5
+9,16,8
+4,14,7
+14,5,3
+16,13,7
+15,4,11
+5,12,12
+3,12,14
+11,4,3
+13,6,15
+6,3,6
+14,15,8
+16,6,7
+7,4,15
+9,11,17
+7,10,2
+17,9,12
+13,10,18
+6,6,4
+17,6,11
+17,12,11
+9,16,5
+13,5,4
+9,7,3
+15,8,6
+7,7,15
+7,16,13
+5,4,14
+10,13,2
+9,8,16
+17,6,7
+17,9,9
+13,15,13
+14,4,11
+15,8,3
+5,6,8
+3,8,5
+1,10,12
+14,4,9
+8,16,5
+15,4,10
+8,5,14
+4,6,13
+11,12,2
+13,14,5
+4,7,16
+4,8,11
+17,10,12
+3,8,14
+10,12,4
+8,15,6
+12,4,14
+2,5,7
+8,4,16
+14,8,13
+10,5,15
+11,9,17
+6,6,15
+5,13,13
+2,9,11
+9,13,2
+8,16,9
+9,16,13
+15,13,15
+13,2,13
+4,9,8
+4,14,11
+1,9,10
+16,10,14
+16,12,13
+11,7,2
+16,8,6
+11,3,7
+13,7,4
+8,8,15
+9,11,18
+10,17,8
+2,12,8
+5,6,16
+16,4,8
+10,16,5
+2,8,8
+4,10,12
+16,14,12
+11,4,7
+10,8,1
+13,6,16
+16,12,12
+17,11,12
+15,9,4
+5,7,3
+4,7,8
+7,16,10
+9,12,2
+14,4,8
+10,3,12
+5,9,4
+4,10,16
+7,14,15
+6,10,2
+17,13,12
+13,14,16
+3,12,10
+11,8,17
+10,14,17
+4,15,9
+3,6,15
+10,14,5
+12,11,17
+12,17,12
+3,11,11
+8,11,17
+7,6,14
+13,3,7
+4,12,10
+6,7,3
+6,3,9
+8,15,7
+2,11,5
+8,2,12
+13,15,15
+7,16,6
+10,17,13
+11,18,9
+9,18,10
+16,13,12
+3,10,13
+14,6,15
+4,13,5
+16,8,3
+11,18,10
+12,8,16
+17,13,13
+4,4,13
+6,13,14
+10,7,15
+11,10,1
+14,14,10
+8,11,16
+14,12,15
+15,5,15
+16,10,15
+7,6,16
+16,6,6
+16,10,8
+6,7,17
+12,7,5
+11,5,3
+15,15,7
+16,10,3
+15,6,10
+6,8,16
+4,11,13
+5,10,3
+5,2,7
+10,14,4
+13,10,16
+9,12,15
+9,15,14
+10,11,2
+13,7,5
+6,10,3
+14,5,10
+17,5,12
+16,9,15
+12,8,3
+7,15,14
+10,4,3
+8,12,2
+15,15,12
+5,3,10
+8,3,6
+4,7,3
+8,3,7
+3,4,10
+17,12,9
+10,12,3
+3,13,5
+16,13,9
+17,8,10
+13,16,12
+3,14,7
+8,18,11
+14,17,11
+9,5,16
+12,6,4
+12,8,2
+11,8,2
+4,8,7
+14,6,4
+9,7,17
+3,7,12
+9,7,2
+3,11,12
+3,12,8
+14,3,12
+12,13,15
+14,15,4
+14,7,4
+3,7,13
+15,2,8
+11,6,3
+7,8,17
+16,15,10
+10,13,14
+9,13,15
+8,7,4
+13,17,7
+5,2,10
+6,2,8
+5,2,8
+4,15,6
+10,16,8
+2,13,10
+10,2,5
+11,9,1
+15,11,3
+7,9,18
+10,9,2
+11,10,3
+16,5,10
+9,4,7
+10,4,11
+15,5,10
+7,2,10
+3,9,3
+7,3,5
+2,7,12
+14,8,17
+15,5,4
+4,10,13
+12,2,11
+15,12,9
+13,12,3
+18,8,9
+15,11,13
+7,16,11
+10,18,10
+5,11,14
+14,14,7
+15,4,14
+15,10,5
+17,8,13
+3,3,9
+12,6,5
+8,5,3
+11,16,7
+1,11,12
+2,13,11
+10,11,17
+3,10,7
+14,8,18
+16,6,11
+12,16,7
+15,16,12
+17,7,8
+7,16,7
+4,8,5
+11,13,4
+8,17,5
+7,5,14
+8,4,7
+16,6,14
+10,1,8
+15,6,13
+14,14,5
+14,16,7
+8,18,10
+11,2,13
+15,7,14
+12,3,10
+1,9,13
+13,11,2
+16,8,13
+5,2,12
+9,6,17
+2,9,7
+14,10,17
+9,14,5
+4,7,11
+9,2,12
+6,12,15
+14,15,13
+13,12,17
+10,17,11
+7,14,13
+3,9,7
+12,15,5
+7,11,15
+10,16,16
+12,4,8
+2,9,8
+1,8,9
+14,7,5
+3,5,6
+13,8,18
+2,14,10
+14,11,3
+4,11,14
+8,17,14
+13,2,7
+11,3,4
+5,11,4
+5,12,2
+10,9,17
+3,4,6
+7,16,14
+16,10,9
+12,3,4
+8,2,6
+16,6,13
+12,12,17
+14,14,15
+6,12,5
+13,6,4
+3,9,16
+10,6,17
+3,14,5
+3,5,10
+3,13,11
+8,7,17
+17,7,9
+7,1,7
+16,11,13
+2,8,12
+3,5,8
+7,17,12
+4,8,15
+5,15,5
+18,9,12
+10,14,16
+3,6,8
+11,11,17
+7,12,16
+7,17,7
+13,5,2
+9,4,14
+5,5,6
+18,8,11
+13,6,5
+11,18,8
+4,16,10
+8,5,2
+13,14,7
+15,17,12
+14,15,10
+12,1,8
+6,8,17
+12,9,2
+12,16,12
+3,8,12
+9,11,16
+10,14,2
+16,8,5
+14,16,13
+8,9,17
+6,12,16
+15,14,6
+14,13,14
+13,15,6
+15,6,14
+15,15,14
+17,8,11
+5,5,8
+10,15,12
+14,10,4
+13,13,16
+7,17,10
+11,8,18
+11,14,15
+4,13,7
+11,3,9
+15,7,5
+11,3,5
+10,5,3
+4,14,9
+14,5,16
+6,15,12
+12,4,13
+11,17,15
+9,7,18
+8,17,11
+12,2,9
+4,17,11
+6,11,4
+3,12,7
+12,5,4
+6,14,16
+10,2,9
+4,14,5
+4,7,4
+9,9,17
+12,17,11
+7,2,8
+3,15,11
+4,3,12
+11,16,5
+5,8,3
+14,8,16
+16,12,14
+12,14,15
+4,6,6
+15,8,14
+10,3,6
+7,17,9
+15,14,16
+14,13,4
+8,15,3
+11,5,2
+4,5,12
+13,7,3
+12,12,3
+2,7,7
+9,10,3
+5,3,5
+13,18,11
+5,2,9
+4,4,8
+14,12,5
+5,13,14
+7,4,14
+13,8,4
+13,9,2
+16,10,11
+15,6,6
+11,4,6
+5,13,5
+12,17,5
+4,12,13
+10,10,18
+6,18,11
+12,16,11
+3,14,12
+6,14,15
+5,12,18
+5,14,9
+3,12,4
+10,7,3
+3,11,3
+6,11,17
+17,12,8
+8,17,9
+5,5,7
+14,13,3
+6,16,5
+9,10,17
+15,10,14
+14,16,9
+7,8,14
+12,3,9
+13,12,14
+3,7,6
+8,16,4
+16,12,11
+2,6,12
+9,15,16
+8,6,3
+16,9,7
+13,3,5
+7,4,13
+6,14,3
+7,5,16
+6,17,12
+3,11,16
+11,10,16
+5,16,14
+18,10,12
+9,15,2
+9,4,4
+15,9,6
+14,9,3
+11,2,10
+8,9,2
+13,17,13
+11,2,4
+7,3,8
+7,8,3
+8,15,5
+6,16,14
+2,8,4
+15,13,10
+6,16,10
+1,7,11
+4,9,17
+11,4,5
+13,5,3
+11,12,15
+3,13,9
+15,4,6
+14,10,13
+7,11,16
+10,16,9
+5,4,6
+7,16,12
+10,3,10
+15,12,3
+9,10,18
+17,12,7
+12,7,3
+12,3,5
+9,15,6
+6,3,10
+9,3,4
+18,10,10
+7,14,2
+15,4,7
+12,17,8
+14,11,4
+7,14,14
+3,5,11
+7,4,16
+4,6,5
+17,14,11
+13,15,5
+11,5,12
+9,3,15
+15,3,8
+9,16,12
+7,2,6
+7,17,11
+5,9,15
+16,4,5
+14,8,15
+16,13,11
+10,3,4
+10,11,18
+10,15,5
+9,1,10
+17,10,14
+4,11,4
+4,6,14
+11,14,3
+15,10,15
+14,6,14
+14,7,17
+3,14,6
+4,2,9
+15,9,15
+4,11,3
+8,12,18
+11,17,9
+7,10,3
+17,9,7
+5,11,3
+14,5,13
+11,12,18
+14,13,9
+18,7,10
+10,12,16
+10,4,7
+9,17,8
+4,10,3
+12,7,16
+6,6,17
+10,15,3
+15,13,14
+11,10,15
+14,4,13
+15,13,5
+14,9,14
+8,11,3
+11,16,12
+13,16,13
+4,17,10
+5,3,13
+4,7,12
+11,7,16
+7,5,15
+2,13,12
+3,10,12
+12,10,1
+2,8,11
+7,15,4
+6,13,15
+11,5,15
+15,5,5
+6,13,3
+9,3,11
+17,8,8
+10,13,4
+7,13,2
+6,3,8
+10,4,14
+8,8,18
+3,6,7
+6,6,3
+14,10,2
+18,10,9
+10,16,3
+4,10,14
+16,14,9
+5,5,12
+17,12,13
+6,17,10
+11,7,17
+15,3,9
+6,11,16
+17,12,5
+10,8,17
+14,11,16
+7,7,3
+4,15,8
+5,15,9
+8,16,10
+14,12,16
+12,3,12
+13,14,13
+3,11,9
+11,2,7
+3,14,13
+9,6,2
+12,18,12
+3,12,6
+16,4,11
+9,16,4
+13,16,6
+13,16,14
+11,5,4
+15,14,9
+11,9,16
+12,4,12
+13,1,11
+5,16,11
+18,8,8
+15,7,6
+4,11,6
+16,7,15
+11,2,8
+14,9,15
+6,16,7
+2,6,13
+7,10,18
+5,7,17
+14,6,17
+3,10,11
+13,11,17
+13,15,12
+5,14,15
+12,16,14
+18,10,6
+6,9,17
+15,2,9
+2,10,7
+9,15,7
+9,12,5
+9,16,14
+3,6,9
+8,15,4
+3,12,11
+3,10,6
+14,8,4
+11,3,14
+5,7,4
+4,7,15
+15,13,13
+13,17,12
+9,17,11
+6,4,6
+6,13,16
+16,6,4
+13,16,7
+12,15,13
+3,13,8
+7,5,6
+15,16,10
+5,16,12
+8,13,5
+17,12,10
+7,17,13
+2,5,6
+4,6,12
+16,3,9
+13,16,11
+11,5,17
+13,10,1
+10,1,12
+2,7,11
+16,8,8
+7,13,1
+3,12,12
+10,13,15
+13,3,6
+15,12,13
+17,6,9
+17,11,7
+8,10,2
+15,11,12
+8,10,1
+3,8,4
+9,17,13
+14,5,12
+11,17,6
+8,17,8
+5,6,3
+5,13,3
+16,14,10
+2,5,10
+11,15,14
+5,10,17
+16,13,14
+4,5,13
+3,9,12
+5,4,11
+10,18,8
+13,8,2
+3,10,5
+8,17,12
+7,2,9
+16,9,6
+8,6,2
+4,6,10
+3,9,6
+3,10,9
+14,16,6
+11,6,16
+8,4,15
+11,18,12
+5,15,10
+11,18,11
+2,6,10
+12,12,5
+10,16,4
+10,1,9
+14,12,3
+5,7,15
+9,9,16
+18,12,10
+9,16,6
+15,13,11
+9,6,6
+7,14,4
+10,14,3
+18,13,11
+9,2,5
+4,13,12
+7,12,17
+13,8,16
+12,9,17
+15,14,14
+6,3,11
+11,4,14
+16,9,16
+6,4,5
+6,11,3
+13,17,11
+8,14,2
+6,14,5
+4,6,15
+8,6,1
+15,14,12
+18,12,13
+16,5,9
+12,14,14
+5,16,6
+2,8,13
+15,13,16
+14,5,5
+11,2,14
+2,8,7
+9,4,15
+9,9,1
+16,11,10
+2,9,14
+1,7,9
+8,17,6
+15,4,4
+14,13,6
+8,1,10
+10,3,13
+17,11,14
+18,6,9
+7,3,11
+9,11,3
+1,9,11
+8,12,15
+17,8,12
+9,12,0
+15,8,12
+1,11,11
+13,14,15
+5,14,4
+9,4,5
+2,6,6
+7,13,15
+10,1,10
+17,6,8
+12,3,11
+9,17,7
+8,15,14
+9,2,6
+7,4,12
+6,3,14
+12,4,5
+2,14,12
+9,2,7
+16,12,6
+11,4,13
+8,16,13
+4,6,4
+3,12,5
+16,4,6
+11,14,16
+14,13,16
+1,10,10
+7,2,13
+4,15,11
+9,3,6
+12,15,3
+6,9,4
+8,16,14
+4,3,10
+10,17,14
+2,7,9
+9,4,11
+1,6,11
+8,12,3
+4,9,10
+4,8,13
+8,14,4
+5,15,6
+15,13,6
+11,6,15
+17,9,13
+5,4,13
+13,2,5
+14,15,15
+13,4,4
+2,12,11
+5,9,16
+10,9,16
+12,13,17
+14,15,9
+17,10,9
+5,10,16
+9,14,15
+11,17,12
+2,12,12
+15,17,11
+8,16,8
+12,14,16
+7,18,10
+6,6,14
+10,1,7
+12,14,3
+6,9,5
+5,13,4
+8,8,3
+16,5,12
+14,2,10
+15,5,14
+17,10,11
+10,14,15
+12,5,16
+11,15,3
+3,11,8
+6,8,5
+3,6,13
+8,9,18
+15,13,12
+2,5,9
+4,8,6
+12,3,13
+4,9,13
+6,12,4
+11,15,15
+5,5,16
+7,16,15
+7,7,4
+6,17,13
+13,13,4
+4,10,7
+5,14,3
+13,8,3
+13,15,16
+5,7,16
+11,18,6
+10,5,6
+11,8,4
+7,13,4
+10,3,5
+8,12,16
+9,9,3
+17,11,9
+16,5,7
+11,3,12
+7,4,5
+3,7,14
+7,14,5
+17,11,6
+11,14,17
+14,13,2
+7,9,3
+9,1,6
+12,13,3
+17,13,8
+8,7,15
+7,3,12
+5,6,9
+14,16,8
+14,13,15
+11,16,10
+17,6,13
+8,13,17
+8,10,17
+13,15,3
+17,13,7
+13,9,16
+10,17,12
+12,13,5
+7,8,4
+6,8,4
+11,3,11
+7,16,5
+6,4,13
+16,11,12
+19,10,9
+5,12,14
+7,11,2
+1,10,7
+10,15,15
+16,10,5
+13,7,14
+15,6,5
+3,10,10
+12,16,6
+14,5,14
+2,4,11
+12,15,7
+18,10,13
+2,12,6
+5,6,7
+12,16,8
+13,15,7
+17,7,10
+4,5,6
+16,14,8
+6,12,3
+12,8,6
+15,14,15
+7,15,5
+3,8,11
+9,6,4
+11,11,3
+10,15,2
+15,11,14
+10,18,9
+14,16,10
+14,7,15
+8,15,12
+13,5,15
+16,13,10
+16,6,10
+9,14,6
+9,11,1
+16,14,6
+17,14,10
+4,3,13
+6,17,11
+12,15,16
+17,5,8
+15,14,4
+2,7,4
+2,8,6
+5,15,4
+13,18,10
+14,5,4
+9,8,18
+8,2,4
+10,7,2
+12,5,3
+15,6,7
+9,7,15
+15,15,8
+13,17,10
+14,10,15
+1,6,9
+12,2,12
+3,6,11
+3,9,11
+5,4,8
+15,10,16
+4,6,8
+3,11,7
+5,5,15
+14,14,3
+6,8,15
+13,1,8
+13,11,15
+9,18,9
+10,14,14
+12,10,3
+12,12,16
+7,5,17
+14,3,11
+10,17,4
+7,11,3
+11,15,4
+3,9,15
+17,5,11
+12,18,8
+11,16,16
+15,4,13
+9,10,2
+5,12,3
+12,9,1
+7,16,4
+10,1,11
+8,7,3
+15,9,13
+18,10,7
+14,12,9
+13,14,17
+9,3,7
+14,4,12
+8,3,12
+14,10,14
+7,4,2
+13,7,2
+4,12,5
+8,14,14
+4,4,10
+8,3,5
+12,11,4
+2,6,7
+5,11,16
+6,1,10
+16,16,8
+5,17,10
+8,2,5
+4,13,15
+8,8,17
+15,7,15
+16,8,10
+16,10,6
+1,11,10
+1,13,11
+10,3,14
+16,11,5
+16,7,5
+2,9,9
+10,18,11
+16,13,13
+9,3,5
+15,10,13
+8,12,4
+9,13,1
+14,3,13
+16,9,9
+17,11,13
+9,14,4
+10,16,11
+5,4,7
+18,9,9
+10,5,14
+6,9,15
+14,2,9
+5,4,5
+1,12,8
+6,13,2
+11,6,2
+1,8,6
+2,7,10
+15,15,13
+3,9,9
+16,13,5
+14,7,8
+14,3,5
+15,8,4
+4,14,8
+1,14,9
+15,12,16
+5,15,15
+7,6,17
+14,4,16
+4,14,15
+6,9,3
+6,5,15
+11,9,0
+1,6,6
+15,17,10
+12,10,2
+13,3,12
+10,2,12
+3,8,7
+13,16,9
+4,9,11
+13,9,18
+4,8,14
+4,12,9
+12,14,6
+11,16,4
+17,15,13
+10,4,17
+11,10,17
+15,15,5
+1,7,10
+10,12,18
+7,16,16
+1,13,7
+12,12,18
+16,13,15
+10,11,3
+2,15,9
+13,3,8
+9,5,4
+11,1,8
+7,7,2
+1,13,9
+5,12,5
+3,6,10
+8,18,7
+16,8,7
+16,7,14
+7,10,1
+10,13,18
+16,4,7
+7,8,15
+3,13,6
+3,4,12
+2,10,12
+10,15,7
+13,11,3
+16,8,12
+14,14,9
+16,6,8
+4,13,13
+13,7,15
+16,7,10
+14,13,17
+3,2,11
+8,9,3
+15,9,11
+6,2,7
+9,4,16
+13,13,2
+3,15,10
+11,9,2
+16,9,13
+4,11,7
+15,5,9
+8,1,11
+2,14,11
+17,13,11
+4,5,4
+2,11,9
+15,12,6
+12,4,3
+14,6,16
+17,10,6
+2,5,12
+12,2,7
+13,4,13
+5,12,17
+6,5,9
+15,14,3
+3,15,7
+13,5,12
+9,15,3
+8,13,14
+10,12,5
+8,2,15
+13,14,6
+16,16,9
+17,11,4
+11,6,17
+13,4,7
+10,15,11
+13,16,5
+6,15,10
+4,8,3
+6,4,7
+10,16,13
+7,6,4
+10,5,4
+3,8,6
+2,12,10
+9,11,2
+10,18,6
+3,11,6
+15,15,11
+1,11,9
+9,3,12
+6,7,18
+1,12,11
+11,17,10
+8,7,1
+8,4,12
+14,7,3
+4,12,17
+2,9,6
+14,16,11
+9,4,9
+4,9,15
+16,10,4
+9,8,1
+7,4,8
+12,6,3
+3,14,10
+3,11,14
+15,7,13
+17,13,9
+5,7,2
+13,3,10
+3,12,13
+6,13,4
+9,1,12
+7,13,7
+13,2,11
+11,15,13
+16,14,11
+7,12,5
+8,5,16
+10,12,2
+8,7,16
+8,4,13
+5,5,4
+12,5,7
+17,15,8
+12,3,7
+4,15,13
+15,5,6
+11,5,1
+11,5,6
+3,8,9
+15,11,11
+5,8,11
+14,2,7
+12,6,16
+9,3,14
+6,3,7
+13,7,13
+14,5,7
+12,14,18
+10,3,11
+8,14,18
+15,6,12
+5,9,17
+5,6,11
+15,9,14
+5,9,14
+2,13,9
+14,12,2
+5,14,12
+7,9,1
+9,7,16
+4,10,6
+6,16,11
+13,13,9
+14,12,13
+5,10,2
+5,15,12
+11,10,2
+3,12,15
+5,3,7
+11,13,3
+8,2,8
+16,4,13
+2,6,11
+13,16,4
+2,9,13
+5,5,14
+11,15,16
+4,15,5
+15,6,3
+10,6,3
+13,5,16
+4,16,9
+16,13,6
+7,17,5
+4,13,9
+16,12,9
+9,2,10
+11,4,4
+11,16,8
+13,13,5
+19,10,10
+10,14,7
+16,10,7
+4,4,12
+4,10,11
+14,13,7
+12,15,8
+11,2,6
+17,7,13
+10,7,16
+2,10,13
+0,10,10
+14,12,6
+12,11,19
+3,8,10
+4,9,16
+5,10,15
+6,15,9
+11,3,3
+14,8,3
+9,5,2
+17,10,13
+18,6,12
+4,3,7
+13,3,11
+15,7,9
+15,13,7
+17,11,10
+10,16,10
+10,6,4
+8,12,1
+8,13,15
+12,9,18
+4,5,15
+15,9,5
+15,8,2
+8,11,18
+11,17,14
+6,12,14
+7,8,18
+6,17,8
+17,9,11
+6,14,14
+14,6,5
+6,5,3
+11,17,8
+2,12,13
+14,14,11
+4,3,9
+5,14,16
+10,9,4
+6,9,2
+13,8,17
+10,4,16
+15,8,11
+10,15,14
+5,16,13
+11,8,1
+4,12,4
+10,18,7
+5,8,4
+4,9,12
+14,17,10
+8,14,5
+6,9,16
+16,7,6
+17,7,14
+12,4,6
+5,6,6
+10,8,18
+6,18,8
+4,12,15
+7,13,14
+13,17,8
+8,1,8
+4,14,14
+8,8,2
+14,11,17
+10,11,0
+7,4,3
+6,3,5
+15,7,3
+14,7,2
+16,10,12
+5,8,14
+7,4,6
+14,3,10
+12,16,10
+5,8,15
+15,17,9
+7,1,9
+12,10,4
+8,1,9
+6,8,18
+12,13,4
+14,12,12
+6,6,6
+7,12,18
+14,5,11
+6,7,14
+1,8,13
+15,8,17
+7,4,4
+4,12,14
+11,11,4
+6,7,2
+9,15,5
+11,13,16
+5,10,14
+17,4,11
+7,16,3
+10,17,15
+12,1,11
+11,12,16
+3,3,8
+8,2,7
+12,4,4
+9,1,7
+16,15,12
+13,12,5
+10,3,15
+12,4,17
+10,7,18
+10,4,2
+13,15,8
+9,4,10
+8,16,6
+13,7,16
+10,12,17
+10,9,18
+6,10,5
+15,11,10
+4,14,12
+2,13,7
+10,6,1
+3,9,14
+6,15,11
+6,11,18
+18,14,11
+2,5,11
+3,7,15
+2,11,13
+10,10,3
+3,15,8
+13,15,11
+11,15,6
+4,12,3
+11,1,10
+14,15,11
+1,8,12
+16,5,5
+15,4,8
+11,4,8
+15,16,9
+4,9,7
+13,6,2
+16,10,13
+8,2,10
+5,16,8
+4,7,6
+3,3,12
+1,13,8
+10,2,14
+3,9,8
+11,12,17
+15,10,3
+7,11,4
+2,10,14
+5,11,5
+14,13,12
+10,9,15
+11,18,13
+17,12,4
+7,7,17
+15,7,8
+18,7,8
+8,10,16
+17,8,6
+12,1,13
+14,16,14
+5,6,10
+8,14,13
+3,6,5
+14,8,5
+15,10,8
+4,15,7
+9,12,3
+9,8,17
+15,5,13
+10,15,13
+1,8,7
+7,10,16
+6,6,7
+10,4,15
+3,7,9
+10,4,6
+7,1,12
+16,7,4
+6,8,3
+3,7,10
+15,9,9
+7,5,10
+10,8,4
+12,7,15
+18,8,12
+6,13,7
+8,17,10
+4,8,16
+10,3,9
+16,11,7
+13,2,6
+4,8,17
+16,15,9
+7,6,15
+13,10,4
+15,3,13
+9,10,1
+13,12,4
+15,9,7
+12,11,18
+12,5,5
+14,11,6
+3,10,15
+3,13,4
+3,8,16
+1,10,11
+9,17,14
+1,10,9
+12,2,6
+9,6,1
+5,6,13
+10,5,5
+13,6,17
+11,8,15
+3,5,13
+1,10,6
+5,4,15
+13,17,14
+15,4,9
+6,4,15
+5,6,15
+14,13,5
+16,10,16
+6,10,1
+13,9,14
+6,13,5
+7,10,15
+16,5,8
+17,9,14
+14,4,6
+7,9,16
+8,3,16
+18,9,8
+15,14,8
+9,17,9
+9,1,13
+18,12,11
+6,5,5
+7,2,12
+17,14,8
+1,7,8
+8,1,12
+2,11,10
+12,18,10
+0,8,8
+9,13,16
+16,11,14
+8,9,16
+11,7,18
+14,3,14
+2,15,10
+3,7,4
+12,18,7
+12,11,16
+13,14,8
+14,9,2
+9,7,14
+10,18,12
+6,12,18
+11,5,16
+6,14,11
+7,17,14
+10,10,16
+17,15,11
+16,16,11
+9,18,8
+10,4,5
+9,12,4
+4,3,11
+10,16,6
+6,16,8
+16,4,12
+5,12,15
+6,7,4
+13,12,18
+6,9,1
+11,14,5
diff --git a/2022/day18/src/main.rs b/2022/day18/src/main.rs
@@ -0,0 +1,103 @@
+use std::collections::{HashMap, HashSet, VecDeque};
+
+#[derive(PartialEq, Eq, Hash, Debug, Clone, Copy)]
+struct Pos([i32; 3]);
+
+impl Pos {
+    fn from_str(s: &str) -> Self {
+        let tmp = s
+            .split(',')
+            .map(|x| x.parse::<i32>().unwrap())
+            .collect::<Vec<i32>>();
+        Self([tmp[0], tmp[1], tmp[2]])
+    }
+}
+
+fn main() {
+    let input = std::fs::read_to_string("input.txt")
+        .unwrap()
+        .trim()
+        .split('\n')
+        .map(|s| Pos::from_str(s))
+        .collect::<Vec<Pos>>();
+    // 3526
+    println!("Part 1: {}", part_1(&input));
+    // 2090
+    println!("Part 2: {}", part_2(&input));
+}
+
+fn part_1(input: &Vec<Pos>) -> i32 {
+    let mut filled = HashSet::new();
+    let mut empty = HashMap::new();
+    for c in input {
+        empty.remove(c);
+        filled.insert(c);
+        for axis in 0..3 {
+            for delta in [-1, 1] {
+                let neighbor = {
+                    let mut tmp = c.0;
+                    tmp[axis] += delta;
+                    Pos(tmp)
+                };
+                if !filled.contains(&neighbor) {
+                    empty.insert(neighbor, *empty.get(&neighbor).unwrap_or(&0) + 1);
+                }
+            }
+        }
+    }
+
+    empty.values().sum()
+}
+
+fn part_2(input: &Vec<Pos>) -> i32 {
+    let mut filled = HashSet::new();
+    let mut empty = HashMap::new();
+    for c in input {
+        empty.remove(c);
+        filled.insert(c);
+        for axis in 0..3 {
+            for delta in [-1, 1] {
+                let neighbor = {
+                    let mut tmp = c.0;
+                    tmp[axis] += delta;
+                    Pos(tmp)
+                };
+                if !filled.contains(&neighbor) {
+                    empty.insert(neighbor, *empty.get(&neighbor).unwrap_or(&0) + 1);
+                }
+            }
+        }
+    }
+    let mut reachable = HashMap::new();
+    let mut queue = VecDeque::new();
+    let starter = filled.iter().max_by_key(|p| p.0[0]).unwrap();
+    queue.push_back(Pos([starter.0[0] + 1, starter.0[1], starter.0[2]]));
+    while let Some(reached) = queue.pop_front() {
+        // only needed if pushing back to queue (BFS)
+        // if reachable.contains_key(&reached) {
+        //     continue;
+        // }
+        if let Some(faces) = empty.get(&reached) {
+            reachable.insert(reached, *faces);
+        } else {
+            reachable.insert(reached, 0);
+        }
+        for axis in 0..3 {
+            for delta in [-1, 1] {
+                let neighbor = {
+                    let mut tmp = reached.0;
+                    tmp[axis] += delta;
+                    Pos(tmp)
+                };
+                if !filled.contains(&neighbor)
+                    && !reachable.contains_key(&neighbor)
+                    && (empty.contains_key(&reached) || empty.contains_key(&neighbor))
+                {
+                    // queue.push_back(neighbor);
+                    queue.push_front(neighbor);
+                }
+            }
+        }
+    }
+    reachable.values().sum()
+}