aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksa Vuckovic <aleksa@vuckovic.cc>2023-12-15 03:57:07 +0100
committerAleksa Vuckovic <aleksa@vuckovic.cc>2023-12-15 04:31:46 +0100
commita06ae0bf475fda36bb1cbc5b0b7bbf355c499bed (patch)
tree8b0b04ee2097fbfe2f1d426081258ae0033200f4
parentb987ec6481ea40e257dc81a8b3ebfc5f0483afe5 (diff)
day13 & day14pt1
-rw-r--r--input/day12.txt1000
-rw-r--r--input/day13.txt1301
-rw-r--r--input/day14.txt100
-rw-r--r--src/day13pt1.rs70
-rw-r--r--src/day13pt2.rs60
-rw-r--r--src/day14pt1.rs23
-rw-r--r--src/day14pt2.rs23
-rw-r--r--src/main.rs8
8 files changed, 2581 insertions, 4 deletions
diff --git a/input/day12.txt b/input/day12.txt
new file mode 100644
index 0000000..c691780
--- /dev/null
+++ b/input/day12.txt
@@ -0,0 +1,1000 @@
+?#?##?#????.?..?? 9,1
+????????#???#? 1,8
+.??????#???#??????? 2,7,1,1
+???.?.?.???#.? 1,1,1,4
+??#???#?##??. 4,5
+??????##??#???????? 1,10,1
+?#?#??.???.???? 6,1,2
+?#?#??..#???#???#? 6,1,4,2
+??????.?.???#?####? 5,1,9
+.#?#??#.????#?#??#? 4,1,1,5,1
+????..????..??? 3,2,2
+.?#??#.??.? 4,2
+???#????#??? 2,4
+#.??#??#??.????#? 1,3,3,1,1
+???.#?????#. 1,1,4,2
+??#?#?.??#??. 3,1,1,3
+?????#???? 2,4,1
+?.??????.?#?#? 5,3
+.?????#???..? 7,1
+.????????.# 1,3,1
+???#.?.?.. 1,1,1
+?.???.??????#??#??? 2,2,6
+??#???.???????#??# 2,10
+?#??#?.????.???? 2,2,1,1,1
+????#?##??. 1,6
+#?#???#???.????? 8,1
+???.?????#???? 1,7
+?????#?????#?...???# 11,1,1
+?.?#?.??.#?#? 2,2,4
+???#.????#??##. 1,1,3,1,2
+??????.????? 2,1
+???#???#?..??.?#??## 1,7,2,6
+?.??#..#???#???.?? 1,1,5,1,1
+?.???###?? 1,5,1
+???.?.#??#?????.?#? 3,2,1,3,1
+???.??.???? 1,1,3
+.?##????????.. 6,1
+????????#???##?#?#. 1,2,2,8,1
+?##?#?????#.????? 4,1,2,4
+?????#??.?#? 4,3
+?##???.#??.? 2,1,1,1
+???.#???#??????# 5,4
+?.?????#.???#..? 4,1,1,1,1
+.?????#??????..#? 8,1,1
+????#??##?? 4,2
+.??##??#?????.. 1,9
+?.?????????? 1,3,1
+?#??..????..??? 1,2
+??????.?.????? 2,2
+?.??##?.?? 1,4,2
+??#?.#?.#. 3,1,1
+??.?##???????#.? 2,5,3
+???.?#?.?#?#?. 1,1,1,4
+??.#???????.# 1,1,3,1
+??###???#? 4,2
+?.?????#??#???? 1,1,1,5
+?..??.?##?????? 1,1,2,1,1
+#??#.#.?.???? 4,1,1,2
+?#?????#???#??#.#?. 6,1,5,1
+?.?###???.????#??? 1,4,1,1,1,4
+???#?.#.##?#?##? 3,1,8
+??#?#?#??????#??#?.? 1,6,7
+##???#?#.???.? 8,1,1
+?..#??.????#?#??.?? 3,5
+?????#?##??. 2,4,1
+??.???###?.?????.? 1,6,1,1,1
+??????????#?#??? 2,4,1,1,2
+?#???#???#???.?#? 2,9,2
+?#??..????? 1,3
+??#?.?.????#.? 3,1,2
+???#??#?#..???? 2,3,4
+?#.##?#?..???#?##.?# 1,2,2,4,2,2
+???.?..#?.???? 1,1,2,3
+????#?#????.? 1,8,1
+?#?????????#?? 1,1,3,5
+???.#??#????? 4,1,1
+.#????.??? 1,1,1
+??.?????#????#?#? 2,1,2,1,4
+.???.????? 3,1,1
+#????#??##???? 1,9
+????#?#?#??.?#?? 4,1,1,2
+??????..?#? 5,3
+??#?#??#????#???#??. 7,5
+??###?.???#??.#. 5,5,1
+?????##??. 3,3,1
+?.??????#????????# 1,1,12
+.????.????? 1,1
+???.??#??..?#?..?#?. 3,4,3,2
+???????.?#??? 3,3,3
+??#???.?????? 2,1
+?#?.?##?#??## 1,6,2
+.????.??#??#?.... 1,6
+.???.#???#? 1,5
+.?#.???#??? 2,2
+#...??.???#? 1,1,1,1
+#.???.?#.??????????# 1,1,1,1,11
+????#??.?? 4,1
+??#???..??? 5,1
+..??????#?? 1,5
+????##?#?.??????.? 6,4,1
+?.?????????????..? 5,3
+??#???????????##???? 5,2,2,6
+.?#??.??#???# 3,4,2
+????#?#????##? 5,3
+?#?.??.???#???#?##? 1,1,12
+??.???#.????????##?? 1,1,2,1,1,8
+.??????#??? 2,3
+?#?????#?#? 2,4
+.?????..????? 2,3
+.?.???#????.???..?. 4,2
+??.??..????????. 2,2
+??##????#???.?#? 1,10,2
+??????#??.?...? 1,3
+??##???#?.????#????? 6,6
+?#?????#?#?????? 2,5,3
+??#???????#???? 5,4,1
+#?.????..?#?. 1,1,1,2
+????????#??#####? 3,12
+????????#??#? 2,1,6
+????##??.?#. 2,3,2
+.?.?##?.????#???. 1,2,8
+?.#.????.#????? 1,4
+??????????.? 1,1,2,1
+??.????#??##?. 1,1,6
+???.?#??..# 3,3,1
+?????#??????.?#.. 10,2
+...??.???????#???#?. 1,11
+??????.#.??.?.? 3,1,1,1,1
+????.#????#?.#?#?? 2,1,2,1,1,1
+???#?#..#???? 4,1,2
+.????..?#?#??.? 2,6
+.??#??###?#?#??#??.. 4,12
+??#???#??# 2,1,1
+????..#???..???? 3,1,2,1,1
+.#??.???#? 1,1,1
+?#??#?.???#. 1,1,1,1
+?....????##?.??..? 1,1,1,3,1,1
+???.#???????#??.#?# 1,11,3
+.?.?#????#? 2,1,1
+?#??#??#.??#?.?????? 7,2,3
+???????????.?. 1,1,5,1
+??#???####?# 3,6
+??#??#.?????????? 1,4,1,1,5
+??####?##??.#.?. 8,1
+?????#??.?#?#?? 3,2,4
+?.???##?#...?? 7,1
+?#?.#?##?#?????# 1,12
+.?????#??#??#???.?#. 1,13,1
+.??##??#?????# 1,6,2
+??.??.?##????.? 1,1,6,1
+??..????#?#. 1,2,3
+?#?.?#..???? 3,1,1,1
+?.##??????? 2,2
+????#?###??.???# 3,6,1,2
+?#??????#???.??????? 11,3
+???..#?##??# 1,1,5,1
+???#?..?????? 4,2,1
+#?#????.??..?# 5,1,2
+?#???.???? 2,2
+???###?###??.#.? 11,1
+????###?#?#???. 11,1
+??#??????#??? 2,2
+#??.#...??#? 3,1,1,1
+.#.?.?##??#???#.?.#? 1,1,8,1,1,2
+?#???????#..#?? 4,1,1,1
+##??#?#.???.?.? 3,3,3,1
+????.??..????????? 1,1,1,3,1,1
+???????#????. 1,1,4
+???????#????# 1,5,1
+..#??????? 2,4
+??#???.???? 2,4
+.???#??.???##?. 5,4
+?.???##.??????..? 2,3
+.#???.?.??#???#??#?? 1,1,1,10
+.??.#???#???? 2,9
+???????##????????.? 1,10,1
+?#.?.#??#?????. 1,1,1,3,1
+???.????#.?.? 5,1
+?.?#???#??????.? 1,1,2,3,1
+??#??..?#.? 5,2
+.??#?.#.#.?? 3,1,1,2
+??#.?#?.???#?? 3,2,3
+??????#???..?.??.?? 8,2
+??..??.?#??? 2,1,3
+??.???#???? 2,2,1
+??????#???.#??# 1,2,2,4
+#??.#?#?...??????## 1,1,4,1,1,2
+???#????#????.?.???? 12,2
+?#?##?.??????? 5,3,1,1
+??????.??????? 1,2,4
+???..??????..??## 2,3,1,1,2
+?.??..????.?? 1,1,2,1
+#?.???.?..??? 1,2,1,2
+????#.#??#??????#?? 1,2,2,10
+?????###??? 7,1
+?#??#?..???.#?? 6,3,1,1
+?#??.?.?##?#??? 3,1,5,1
+??#??#???#???##? 1,2,1,2,5
+?#?#.#?....??????. 2,1,2,1,1,1
+.????##???..?#. 7,1,2
+???..?.??#?#?.?#. 1,4,2
+??.?.????.#.????#?? 1,1,2,1,7
+?#?????#??.? 1,2,1,1
+???#???#?????? 9,1
+??..???.?##..?? 2,2,3,1
+?.#??????????????? 8,1,2
+??#??#?####??.???? 1,7,2
+#.???..#.? 1,1,1
+?????#..????? 4,1,1,1
+??.???##?#???.# 1,5,1,2,1
+????.??.?#?. 3,1
+#??.???????????##?.? 1,1,13,1
+?#.???###?.?.?? 1,1,5,1,2
+??#??????#?????????? 11,2
+???..????. 1,1,3
+.?????????????? 1,4
+?.#????.???#????? 5,5
+???????.#??#?.. 1,1,1,2,2
+?????.????????????? 1,2,2,8
+.???????#?? 3,3
+??.????#??..?.??#. 1,3,1,1,1,1
+?.#??#???.?? 1,1,1,1
+.??????????? 5,2
+.???????#??? 8,1
+.#?..#???#?.#. 1,1,2,1
+.???#?#???.???? 7,2
+??.?????????#????#.. 2,9
+??##???????#????# 5,1,1,1,1
+?#????#??.#??.??? 8,3,1
+?.#??#?.#?. 1,2,1
+#???????#???#? 2,6,3
+??##?#?.?#?? 4,2,3
+???.#????????.?? 1,1,8,1
+##???.??????#???# 4,1,2,2,2
+??###?.?#???? 4,4
+#?#??.?#?.?.?#?##..# 1,1,3,5,1
+.????#?????#?#??. 2,1,7
+.???###??###????.?? 12,1
+??.???####?.??? 1,5,2
+??#????????.?##??## 1,1,1,1,6
+???##????#????????## 1,5,1,5,3
+.??#?#??#?####??.? 5,8,1
+???#??##...#????? 8,3
+.??...##????.? 1,5,1
+.??#????????#? 7,3
+.???.?##.??????.? 3,3,1,2
+????#??##??#?. 3,5
+??##??#???#.? 7,2,1
+#.??#??#??#???.??? 1,2,7,1
+...???.#.??? 2,1
+#???.?##?###??# 1,2,2,6
+????.?#??.? 2,1,1
+???..?#?#??.#???? 1,6,3
+?..?????#?? 1,1,2
+.?##??.?.?#? 5,2
+###???????#?? 3,2,2,1
+????????#?##??.. 1,1,4,3
+??.?.?#????#?..#.#?# 1,5,1,1,1,1
+.#???#?.#???? 1,1,1,5
+?????.?#?.?#?? 2,1,2,3
+?#???????????#?###? 1,1,1,8
+???#???#.#??? 1,3,1,1
+??#?#????????? 3,2,5
+?.???????#???# 2,6
+??##???##??. 4,5
+????#?.??#??#???#. 4,9
+#??.???.?.??## 2,1,1,2
+?#??.????#?.? 3,2,1
+..#?##.?.##??##???? 4,7
+.??.?##???#???#?.?? 8,1
+#.?????#?????? 1,6,1,2
+?#????.#?.??.#?? 5,1,1,1
+?.?.#?#??????.? 1,1,4,1,1
+??.?#????.??#..#?? 5,2,2
+?#??#????. 2,4
+?#????#??#?.#?? 1,1,5,1,1
+#??##??#??#? 2,3,1,2
+??.?.#???#?.??#?#. 2,2,2,3,1
+.##????.?##.?? 3,3
+#?.???.??#?#???.?#? 2,2,2,2,2
+??.????#???????#?? 2,3,1,1,3,2
+??#??#.#??#???#?.? 1,1,1,5,1,1
+??.????###.?. 1,5
+?#???###?.????? 1,5,2
+????#?#???.? 7,1
+.???#???### 3,1,3
+??#..?#??. 3,4
+?????##?.?? 1,4
+?.??#.??????#?#??#? 1,2,1,5,1
+????..??#?? 3,2
+#.????.?#???##??# 1,1,10
+??????????..?.???? 7,2,4
+?#.????????? 2,3,1,2
+.?????.#??#? 2,4
+???#?????#.????.? 1,7,2,1,1
+..???##?????#?? 8,2
+?#????????? 5,1
+????#?#????. 3,2,1
+???..?..#?..# 3,1,2,1
+.????.???????? 1,3,1,1
+.????#?.???#??##?.?? 1,3,7,1
+..??#?#???..#?#???? 3,1,1,4,1
+.??.?????.?#?##??.? 2,1,6
+???#.?#.??#?? 2,1,1,2
+?.??????#?????????. 1,5,1,2,1
+???##?##?.???#?. 1,6,2,2
+.??#....??.? 2,1
+.??????.?#???.??? 1,2,1
+??.??...?##?##????? 2,9
+.#??#?#?????????.??? 11,3,1,1
+???#??#?#????.???? 12,1,1
+???.????#??? 1,1,2,1
+?#.??#???##????. 1,12
+?.????????#?? 1,2
+.??###??????????#?## 5,1,7
+.#?##.???.?.?.???? 4,1,1,1,1,1
+?#??###??##..?##? 1,7,3
+???#.??.?###?#.? 4,1,3,1,1
+???????##?##??#.. 3,1,8
+??#?#.???#?#????? 4,1,4,1
+?##??#??#?##?? 2,1,6
+#?#?.?##?????. 1,1,8
+????????.#? 6,2
+.??#.?#?#??.?. 1,5
+?.?#?.?.????? 2,1,2
+?#????#??????.?????? 2,1,1,3,2,3
+????????#?.##.?.?? 8,2
+?#????#????????#.??? 5,3,2,1,1,2
+#?#????#..???????#? 1,3,1,4,1,1
+.#???#.???????.#???? 5,1,1,3,1,3
+.??????.?#?##???? 5,6
+?.??#.?????#####???? 1,1,9,1
+#???#????#.??.?## 2,2,4,1,3
+#????#????#.?#???#?. 1,1,1,4,5
+?#????.??. 5,1
+????##?????? 7,2
+?#?#??#?#????.?.#?? 9,1,2
+??##.?##?#??.??..?? 4,4,2
+..??.??????? 2,7
+?#??#.#?##????? 4,1,6
+??.?#?.?#?.?????? 3,1,6
+.#??????.?? 4,1,1
+##??.##??.?##?#???? 4,4,6,1
+??????#?????#?? 10,2
+?##??????? 3,5
+.??????????.#?#.? 9,1,1
+..???#????##??#? 2,1,8
+??????#??#???????# 1,1,1,8,1
+?..???.???#?##?#. 2,6
+?#????##.???#?# 2,3,6
+?#????#??? 4,3
+#?.??????????#???. 1,1,2,3,3
+????????????..?.? 1,4
+##?#??#.?#??.#??# 7,1,1,4
+??.?????????#..???. 1,1,8,2
+????#?????.?#? 2,1,3,2
+.?#??..#??? 3,1,1
+?#?#?????#????? 1,1,9
+#???#?#?#?.? 1,7,1
+#??????##??..?#?#??? 2,6,6
+.??###??????#???. 3,3,3
+?????????????##.?? 1,1,8,1
+????????#.??#???# 9,2,1
+???#????????? 1,6,2
+.?????.???.??.. 5,1,2
+?#?.??????.??# 1,6,1
+???#???.????? 2,1,3
+.#.????#..?##?.????? 1,1,2,3,2
+?#?.?#???#?.?. 2,6
+.##?#.#??#???????### 2,1,1,1,1,4
+????#???.????.#.? 7,1,1,1
+#???.????? 1,4
+##??#???#??????????? 5,10,1
+?#??????..??? 5,1
+.???#??#?##? 1,7
+??..#?#??????#. 2,4,3
+?.??????#??.???.?.?? 3,5,1,1,1
+??????#?.??. 5,1
+#??.??#?.?#?##??#? 3,1,1,5,1
+##?#?.?.#? 5,1
+????#???.? 4,1,1
+.??#?#????..?????? 1,1,3,1,1,1
+??#????#?##???????? 1,1,11,2
+#??.?#?#???.# 1,6,1
+??.??????.? 3,2
+???#?.?????#?##?#.# 4,1,7,1
+????##???#?.??.# 2,5,1,2,1
+?.?###????#?#??#???? 11,1,1
+???#.????.?.?#?#??#. 4,3,1,5,1
+?##?###?????.??? 9,1,2
+??#???.????????#???? 4,1,8,1
+#?#????.???.? 6,1
+?????..??.????.??? 1,4
+.??.???.??.?#??.?.? 1,2
+.?.??#?.??#??#??#? 3,7
+?#?????..????? 4,1,2,1
+????????????#?? 4,5
+??.?#???#??.??? 1,3,2,2
+##??#?.????#??? 6,7
+#?????.?###?##? 1,1,7
+?.??#?#??# 2,4
+?#???????# 1,2,3
+????.????..##? 2,4,2
+???????#?#? 1,6
+???#.??#??.? 1,4
+??###?###??..?????? 11,2,1
+?????.?.??.#?.? 1,1,1,1,1
+?#?????#.?#??. 2,5,4
+??.????#?????#???#. 1,1,2,7
+??###????????.? 4,2,1
+?????.?.???.? 1,1,3,1
+.?#??????#??.??##?#. 4,2,3,6
+?##???#???#?? 2,3,3
+????#????##??????? 1,13,1
+???.??????##.... 2,3
+.#??#???.???.?#?? 1,4,3,3
+#??#?????#?#???##?? 2,10,3
+?????##.??#?#??. 7,1,5
+???#????#??? 5,2
+????#???.?#??#???? 1,1,1,9
+#???##???. 2,4
+.#???..#????#??? 2,2,5
+?????????#?? 7,1,1
+?#??#????.???? 7,1,1,1
+??.?#???#????????? 2,3,6,1
+.?..??#?###. 1,7
+???#????.?#?????? 4,1,2,2,1
+.????#.???. 4,2
+.???????.? 4,1
+.?????????.??#? 1,1,2,4
+.??##?##?????.?# 2,2,1,1,2
+??????.#.?#? 2,1,2
+?#???.???.??#????. 4,3,1,1,2
+??#.???.??? 2,3,2
+.????#????#??????? 10,4
+.#.??#..?. 1,1
+????????..?#???# 2,2,2,4,1
+##??????.???.?#.?? 3,1,1,3,1,1
+###???.?#.?#?#????# 3,2,1,4,2,1
+#?.###??#.??? 2,3,1,1
+???.??#..??.??? 1,1,1,2,1
+??#?..?.?..?##???. 3,4
+?..???#?#?? 1,7
+????#?#????##??????? 10,1
+.?????????.??.??##?? 4,1,1,1,6
+?#???..?????. 2,1,1,1
+?#.??#????? 1,3,1
+.???##?#???#?. 1,4,2
+..?????##??????.? 8,1,1
+?????#?..??. 3,1,1
+????#??#?.?#??. 6,3
+????.?.##?????###? 1,1,2,2,4
+?????.?#???? 2,1
+#???#?#??.#.?. 1,6,1,1
+????#.?.#??#??#??## 1,1,11
+??##?#???#?.?.????? 1,8,1,1,2
+.##??#.?#?? 5,1,1
+.?#???.??????..??? 5,1,3,2
+.???.??????.##???? 3,1,5
+???#?#??#??????.???? 13,1
+??.?#??.?# 1,2,1
+??#????????.??.?.#? 1,9,2,1,1
+??#??#..??#.? 4,1,3,1
+#?.#??#???#???.??? 1,9,1,2
+??#?????????? 1,1,3,1
+????..?.?#?.???? 1,1,1,3,4
+?#??.?#???? 1,5
+?##??.??#.??..????? 2,3,3
+.??.?????? 1,1
+?##?#?##????????.?? 3,1,4,3,1,1
+.???#?#?#?????#?? 4,7,3
+?#??#???..? 4,1,1
+...?###????#?#??#??# 3,8,2
+???#????.??????#???? 2,1,7
+#???????##?####.?? 1,1,1,2,4,1
+??#.????#?????. 1,1,6
+#??????#?.#? 1,1,1,1
+#??#????????.?? 1,1,3,1,1
+?#?#??#??? 3,2
+..????.?#?. 1,2
+??????##????. 5,3
+????????.??#??. 6,1
+.#?##????.?#?#.??? 8,2,1,3
+??#?.????#????? 3,5
+????#???????? 1,8
+??.??#???#?? 1,1,4
+???...???..? 1,3
+..??##??#?#.?##### 9,5
+..?#?.???. 2,1
+#?#???#.#???#???? 1,2,2,2,5
+??#???.??.?? 4,1,1
+..???.?????... 2,1
+?..?#???#?..??#????? 7,7
+?.?...???#. 1,4
+?..?#???#????? 6,2
+??#???????#?????#?.. 2,9
+?#??#???###????#. 1,7,1,1
+???#..?#????.?##??# 4,5,3,1
+.??#..#??.?? 3,1
+????.#?.??..??#? 4,2,1,4
+#????????#. 1,5,1
+????#??.#.??? 4,1,1
+.#?#?#??????? 1,1,8
+???#?????.# 4,1,1
+?????#??#.???.?. 7,1
+??????????? 3,1,1
+##??#?#???????# 5,1,4,1
+?#???##?.??#??#????? 3,3,1,9
+#????#.????#.?? 3,1,1,1,1
+.??#.?#.??#?? 1,1,2,3
+?.??##?##????.??.#.? 1,7,1,1,1
+##???????.? 2,2
+??#??.?#????. 2,1,3
+?....#?#??. 1,1
+??##??.?.??#? 4,1,1,2
+??..?.?????# 1,1,1,1
+.??.?????? 1,1
+????#??..?#?#??#. 4,7
+?##????#.??# 3,3,3
+?#?#????.##?#?? 5,1,2,1,1
+.#?#???.##? 1,4,2
+.??????..?#??? 1,3,3,1
+?##??#??.????? 6,1,1
+.???.??... 1,1
+.##???###???#?#?? 14,1
+#?#?????###?.?????. 3,5,3
+???.?#?#??#?????.?? 1,1,7,1,2,1
+???#?.??##?? 1,4
+#?#.???#???. 3,4
+???.?.???.#???#? 1,1,2,1,2
+..#??????#???? 4,4
+.#???????????#??.. 1,3,6,1
+.????###???#? 1,1,5,1
+?.??????#???...?? 2,5
+?????#??????.??#???? 7,1,3,1
+??#?#..#??.#??? 2,1,2,1,1
+.?#?.?#??#? 1,5
+#???##??????????? 1,10,1
+????#?###?#?.??.?.# 3,8,1,1,1
+??.##????##. 3,1,2
+.??##.?.??? 2,2
+?#?#???????????##??? 11,4
+?.?????#?.????#?? 1,1,1,1,4
+?#?##?????##??????? 2,12,1
+?????????#????.??? 10,1
+???.#???.? 2,4
+?#????.?#.?#?..#?## 2,1,2,2,1,2
+???.#?#?#.?????? 5,2
+.##??#?#??#?? 7,3
+#.????#?#?#????.?? 1,3,7,1
+??##???#???#??.?#?? 10,3
+????#?????#. 4,1
+?????.???? 4,1
+?##??????#?##.? 2,7
+.?##?????#?#?? 6,1,1,1
+???????.???##?? 1,2,5
+.?.??#????#??#??###. 1,1,12
+??#??#???#.????. 5,3,2
+?##??#??.???#??? 8,6
+?##??.???????? 5,1,2,1
+?.???.?.????#???# 1,3,1,2,5
+??#?#????#???#??#. 3,2,9
+?#.??????.??????? 2,1,1,1,4
+?????#?????. 2,1,2,1
+???.??#?#..???# 2,1,1,1,1
+?#????????. 2,1,1
+???#??..??.??#??. 3,3
+????????..?? 2,1,1,1
+.??..??#...?#.???# 1,3,2,3
+?????###??.?? 4,1
+????#?????? 6,1,1
+.???????#??## 3,6
+.?.???#???????#? 1,10,1
+?#.???#??#?#???? 1,4,8
+.??????##??? 1,4
+#??##.?????#???##??? 1,3,1,8,1
+????#????#?###????# 3,1,7,2,1
+??.????###?????? 1,1,7
+?#?#?.???.##? 4,1,2
+????.?..???#?#? 4,1,1,5
+?#???.?#??. 1,2
+#??#????????????. 1,7,1,1,1
+.?#..#?.##?#.??? 2,1,4,2
+??.???.??#????#??#? 1,1,1,6,1,2
+?..#??#.##?.#. 4,3,1
+???###??##????# 1,7,2,1
+###?????###?#??#..?? 13,1,1
+.#?????#??? 1,6
+?#??#??.??.?.? 6,1,1,1
+.#??.?#..?#??? 3,1,4
+??#??.?##??? 1,1,4,1
+.#????#?#.?#?#?##??? 8,7,1
+?#??#?#.???????. 7,3
+#?.??#??##??????. 2,6,2
+.#??#?#??.? 1,5
+.????#??????#??? 2,7,3
+.???#?#????.? 1,4,1,1
+?#..???.#? 1,2,2
+.#??????###????? 6,7
+?.????.???#?? 1,1,1,2
+??..??????.##?##???. 2,6
+.#?#..?#????.?? 3,5
+.#?#?????????? 5,1,1,1
+.?.???#?#??.? 1,3
+???#.?#?..????#?###? 2,2,8
+.?#???.?.???##?.?.? 2,1,5,1,1
+???????..#?##? 2,1,1,2
+.?#?????.??#. 3,1,1,1
+???#????#??.?.#?? 1,8,1,1,1
+?????.????#??#?#? 3,11
+#..?.#????#??#?..? 1,9,1
+#.?.?#??.??? 1,1,3,2
+????.????.?##???? 1,1,2,3,1
+..??.?..???.?.?? 1,1
+.???.##??#??#???? 1,1,6,1,1
+#.#?????????# 1,1,3,2
+#??#?#???.?????.? 1,5,1,1,1
+??.###???..? 5,1
+?#?#??##??#??.??. 4,7
+??#?????????? 5,3
+?#???#???. 2,2
+??#??#?#??#?? 6,1,1
+?.???#.?#?# 1,3,3
+???#??????#???#?. 1,10,1
+?.?#?##?.?? 1,4,1
+#??##??.????#??. 1,3,6
+#.???????#? 1,2,2
+?#?#??.?.?#?#.?#? 3,1,1,3,2
+??#???.?#?????? 2,1,6
+.??#???##???# 1,2,7
+??#??#???#?#?.?.?. 1,1,8,1
+##???.?..??#?? 2,1,1,2
+?#..????.????????#?. 2,2,10
+??##?..?##????###.?? 4,10
+?#?..??.?? 1,1,1
+??????#??..??????.#? 8,1,1,1,1
+???????.#?????..??.? 2,1,5,2,1
+#?#????????##??? 4,1,1,6
+.???#?..?????? 1,2,1,4
+.#..???.??##??. 1,3,3,1
+????#??????#???????? 1,1,5,2,1,1
+?.?###?#?#?#?#?#?.?? 14,1
+?.?.?#??????? 1,3,2,1
+?##????????#?#??.# 5,1,3,1,1,1
+???.???#????? 1,6
+?????####?????#?#? 1,11,3
+?#?.???#??? 1,2,1
+..#??##??? 6,1
+??????.??.. 2,3,1
+.????#?.#???.?? 1,2,1,1,1
+.??##?##??..??###??? 7,5
+#???#??.??.?#.#.?. 1,2,2,1,1,1
+??????#?#??.?? 5,1,2
+#?#??#??????.????.?? 9,1,1,1,1
+#?#..????#?????###? 1,1,1,4,7
+.?.?????#.?# 1,1,2,1
+?.???#?##?????#????? 5,2
+#?????.??? 2,1,2
+?????#??#?#????#?? 13,1
+?.??#????#..?? 5,2,1
+????#??##?.?.? 1,3,3,1
+?.????.?##???#? 2,7
+#?#?????#??.??##?? 6,1,1,1,2
+???#?#??????#???.?.? 4,4,1,1,1
+???#???#?#?.#? 4,5,1
+??.?#???????????. 1,5,4
+.?#.?????#.? 2,2,1,1
+????.?#?###???#?.#.? 2,11,1
+??#??????##?#?? 2,9
+???????#?#?##??????? 3,1,7,1,1
+???##?....??????? 6,6
+?#.?#?.##?#?#. 1,1,2,3
+??????????#? 4,2
+#.?###?#???#?##?#?.? 1,13,1,1
+??#?#?.?.???.??##?? 6,3,4
+???.#?????##?.# 1,1,8,1
+??????#?#?? 8,1
+?#??????#??#?. 6,1,1
+.#?#??#.#?#?#?.? 6,5,1
+?????????#??.??#?#? 7,2,3
+.????#??#????.??#? 8,1,3
+??.?#???##?#??##??? 2,12,1
+?#???###?.???.?? 7,3,2
+#????.#???.???#..# 1,1,1,1,4,1
+????##?.#? 6,2
+??????####?.# 7,1
+????#??.#. 1,4,1
+.????#?????????##?? 15,1
+???.????#?# 1,4
+???????###. 1,5
+#?.?????#??#?? 2,6
+?????##????.#??#.?? 8,2,1
+??####????##???.# 13,1
+?..??#??#.?#?????? 1,3,1,1,1,1
+.#???#???????#??#?? 6,1,8
+??#?#..???? 4,2
+.?#?.?.???? 2,1
+.???????????? 2,1
+????????#?.??? 1,1
+??#???#???. 2,4,1
+#??.????#.?. 3,3,1,1
+?????#.?.?.????. 5,2
+???#???.???? 1,5,1,1
+#.?.?????#????? 1,6,1,1
+?#?..#?#.??.??#?. 2,3,3
+#????..???. 5,1,1
+?#??#?????#???#. 1,3,1,1,3
+???#?????????????.?? 4,2,1,5,2
+????...?..??.????? 2,1
+??.?..?####?#?#????# 1,14
+???###?##??#?# 9,1,1
+??.#??.???##? 1,3,5
+??#??#???????? 1,2,1,2
+?.###??##??.?#.. 9,1
+?????#???? 1,1
+#??????#?#???.?##?. 1,8,3
+.?.??###?# 1,7
+?????????##???.???# 1,2,1,4,2
+?.?#???#???#.???? 2,1,2,2,1
+#????#??????.?? 4,3,1,1,1
+??????????.? 3,3,1
+?????.??#?## 2,4
+?###?#??.????..? 8,2,1
+?????.##???.?? 3,4,1
+#??????.??# 1,3,2
+?#?????????#?.?? 7,3
+????#??#?.??????. 5,1,5
+.?#?#??#?.???### 8,1,3
+??.?#???.???????.? 2,4,1,5,1
+??.??#????.#?#???? 1,1,2,1,1,3
+????????.???# 1,1,1,2
+???#??#?#??.????#. 5,2,5
+??.??.?#?.#?#? 2,2,1,4
+.#????.#???????.?? 1,1,1,5
+???###??????????.?? 15,1
+???????##.??.??# 6,2,1,1,1
+???????.??? 6,2
+????????.?#?#.??#??. 3,3,3,4
+????#?..?.. 3,1
+?#??#?###???##?#?? 2,13
+????###??? 2,4,1
+??.?#??####?.??##??? 9,6
+?#???..???.????? 4,2,1,2
+??#??##???? 3,2
+?#??#?##?????# 1,2,6,1
+..????..???? 4,1,2
+?#????.???..#???? 2,2,2,2,2
+?#????????#??#??? 1,13
+#???..#???????# 1,1,1,7
+#?#.#????.?? 3,1,1,1
+?.???????..?.?? 1,4
+?.#??.????? 1,1,1
+??#?.?????#. 3,3,2
+.?.#??##?##???#? 1,12
+??#????#??.#? 8,1
+??#???..####?#??#? 5,7,2
+???.#?#?????#?????? 1,6,2,2
+??.???????#??##?#.. 1,2,4,4
+#.??????????#???? 1,1,11
+???#?#???#???. 1,4,2,2
+?????.????? 1,1,4
+??????#??##??. 9,1
+??#???#?.??? 6,1
+????.???##?.??.#??? 2,5,1,2,1
+??.#?.?..?#????.?? 1,3
+?#?#.??#.? 3,1
+##??#?.#?????#?????? 3,1,3,1,1,4
+????.?#???#??#?? 1,1,5,2,1
+?????..?????? 4,5
+??#..?#.?.????????#? 1,2,6,1
+?#??#?##???#???#???. 2,8,1,1
+????#????#.????.#? 1,5,1,1,1,1
+?????????# 1,1,2
+??#???##??. 3,4
+?#?????#???#?? 1,1,6
+??#??.#?#???#?????? 2,1,5,3
+??????????#???#. 2,6,1
+?????#?#??????#????? 11,1,1,1
+?????#.?.?...??.?# 1,3,1,1,1,1
+??#.#???#???????? 1,1,10,1
+???#?.????.??#??# 1,3,1,1,6
+#??????#.??#?.? 2,1,1,1,2
+?.???????.??? 5,1
+???#...?#?? 1,1,2
+????.?????????.? 1,8
+?##?#?##?#???###??? 3,14
+??????#???#?#?#???#? 1,16
+?.?????????????? 1,2,1,4,1
+?..?.?#??##?..?????? 1,1,6,2,1
+.?###?#?.??# 7,2
+???#.#????.???? 1,2,3,1,3
+?#.????#????? 2,1,5,1
+#.##?????.#..??#???? 1,2,2,1,5
+??#?##????.#???.?.?? 3,2,1,4,1,1
+?.??#.?????#?#.. 3,6
+????##??#??? 1,1,7
+??.#?##??.? 1,6,1
+??.???#?.??##????? 1,1,6,1
+?#??.????###??.? 2,9
+?????#??#???#.??. 1,7,1,1
+?????????#? 2,3,1
+#?????????.???? 8,4
+??.#?.#?.?? 2,1,1
+.????##?????#?#? 6,4
+#??????.?#????? 1,2,6
+?#???????. 3,4
+???.???##???.??#? 1,8,2
+.#???#??#????#??? 1,13
+?.?????#????? 1,2,1,4
+??.??????? 1,3
+.????#??#?????# 8,1,1
+.??#???#????????? 3,4,3
+#?????#???#?#?.????? 7,4,1,1
+???#.?.#??.??????? 4,1,1,1,4
+???????#?? 3,3
+??#???#???? 3,6
+?????#????.?? 5,1,1
+.???#?#..##.? 2,3,2,1
+?#?.?????#?#?? 2,1,5
+#.????.?????? 1,4,2,1
+???#???..?#??#???. 6,6
+#???.#?#?????#?? 4,10
+#????????? 2,1,3
+?#??#?#.?#?#???# 1,1,1,4,2
+???????##?#?? 2,7
+..??#?????.?#??? 5,3
+..????????.???.? 1,1,2,1
+?.??#????#?? 4,1
+???.??.????.??. 1,2
+.?????????###.?#?? 5,1,3,1
+???.?#????#????? 1,8,1
+??.??.???.??? 2,1,3,1
+?.??###???????.. 4,3
+????????????.#??? 3,3,1,2
+???#?.#?###??#??? 1,3,5,1,2
+?#??#???..??#?.. 7,4
+#.??##?????. 1,1,4,1
+?.??.#????#?#??#? 1,1,12
+????#??#?.? 7,1
+????#??.?? 2,3
+?..??#?.????# 3,1,2
+?.#?#???#???.#? 1,5,3,1
+##??#?#???###?? 2,11
+???#####??????? 2,10
+??#?#?#?.?. 6,1
+????..????..#?#. 1,1,3,1,1
+.#?????#???##?#??? 14,1
+#.??.?.??#.?.?? 1,2,3,1,1
+?#??????.????.???.? 3,1,1,2,3,1
+?.?.???#?? 1,1,2
+??#?##????? 4,1
+?.?#??.??. 2,1
+??.???#.?? 1,1
+##.?.?#?????.#? 2,5,1
+?##?#.???????. 5,1,4
+..?##???#.???? 6,2
+.???.??????#?#?. 1,7
+?????#.??#? 2,1,2
+.#?.#?????????? 1,1,1,5,1
+???.?????##??..? 2,1,1,4,1
+?????##..? 5,1
+#?????????#???? 1,3,1,3,1
+?#????..???????##? 1,1,10
+???#????#.??.????#? 1,2,1,1,2,6
+??##.?.???.??..#? 3,3,1,2
+?.?#?#?.???#?#??? 4,4
+?##???.??#?.? 2,1,1
+#?.??##??.?.#?????? 1,6,1,1,1
+???#??#???.?##?? 7,3
+?##??.?.?#????????#? 3,2,1,1
+?..?#?.##?#?.? 2,5
+?..??????? 1,2,2
+??#?????.#???#??. 4,7
+????.?????.. 2,4
+.??#?.??.??..??????# 3,1,1,4,1
+#???#?###??##?.? 1,11
+??#??.???????#??#? 5,10
+?.??#?..##?. 1,3,3
+??.???.?.? 2,2
+#??????##?##.?? 4,6,1
+???????.?#????.?? 2,1,2,3,1
+.??#???#???#?##.#.?? 13,1
+??.??#?#?? 1,5,1
+?#?#?#.?????.?? 2,3,2,2,1
+????.???#????#? 1,1,2,4
+.?????.????#. 2,1,1,1
+.???.????.?? 1,1,1,1
+?.????.?#.??#. 4,2,2
+??????.?.???#?? 1,1,5
+????????.?#???#?? 5,5
+????####??##?? 7,5
+.??##??????.???.? 10,1
+#??#???#??#??? 1,3,4,1
+.#???.????? 2,3
+..??#??#??#??#?? 2,8
+??????##??.???? 2,1,4,1
+??????##??????????? 1,5,5,1,1
+??#?.??????.?????? 3,1,1,1,1,2
+???#.?#??? 2,2
+##.??????#????# 2,2,8
+?#????????? 5,3
+?#?..????.?# 2,1,2
+#??.?.#???#????# 1,1,1,3,1
+?..??.??????? 1,1,1,2
+?#?.?######?#???? 2,7,1,1
+??##???.?###? 5,3
+??#.??##..???????? 2,4,4
+??????.#.??##?. 2,1,5
+????#?.??? 1,2,1
+.???????.?.? 2,2,1
+?????#???????? 2,3,2,1
+?.??.#?#?# 1,5
+??.???.?????.?? 1,2,1,1,1
+???.?..??? 1,1,2
+????.?.??.? 1,2
+?.????#??? 2,3
+?????#???????.?? 7,2,1,1
+???????.?## 1,4,3
+?.?#?????? 4,1
+??????#????#..?????? 11,3,1
+#?##????##???##.? 4,1,7,1
+?#???##??????##?#? 2,3,1,4,1
+??..#?????#??.?? 1,9
+?###.????.???#???? 3,2,1,6
+???#????.????##??. 3,1,4
+????#???.?##?. 1,1,2
+.???#??##?#?# 1,6
+#??.?????.?.? 3,4
+?.??#?#?#????? 8,1
+?????.????? 1,1,2
+?.#???#????????#.#? 1,8,4,2
+???#???#??#??????#.? 6,1,2,2,2
+????.???.??????#? 2,1,7
+??#.?????.?. 1,2,1,1
+?#?##???.?#???????# 1,5,1,2,1,1
+??????#?#.??? 3,3
+??##??????..#??. 7,2
+????.?.??.? 1,1
+?????#??#? 2,1,2
+???#?.???????# 4,1,3
+??##????#?#?? 5,1,1,1
+??##?.#?.#????????. 1,2,1,1,1,4
+?.??.???.#. 2,1,1
+???#??#?????###???.. 9,6
+???????.???#.?# 1,2,3,2
+???#?.####??????. 1,3,6,1,1
+#?#??#?????###?#. 1,8,3,1
+???#?????? 1,3,2
+#?#??????#??#?.?? 13,2
+.?????#.??#? 1,1,1,2
+.###..?.???#??.?? 3,1,6,1
+#??#???#?..?????###? 1,6,3,3
+.??????#???. 1,3,1,2
+#????#??.??????#?? 1,1,1,1,1,5
+?????.??#??#???#?? 4,11
+????#???#??????? 6,1
+.??##?.?..?.#??#. 4,1,1,1,1
+???#?????#??? 2,5
+#?????.?????.?#? 3,1,5,3
+??.#??#?#.? 2,1,1
+?#.?????????.?. 1,7,1
+###???#?????#????#.. 13,1,1
+..???????.?.#.?? 1,4,1,1,1
+??.#?#????????? 3,1
+.????????.??#?#??? 5,7
+?#.????????#???.? 1,2,1,4,1
+?#.??##????#??#####? 1,6,8
+???.?#?#???#?#. 2,5,3
+##..?#????.# 2,6,1
+#??#.#???##.. 1,1,1,4
+.?.?##?????.?? 3,1
+.#..#.??#??#?##?##.. 1,1,11
+.?.?????##???#?. 1,7,3
+?#???#????#???# 2,3,2,1
+?##?#????.?# 7,1
+?..??#?????? 1,1,1,4
+..#?.?#?.???#???#? 1,2,4,3
+????????.????? 3,2,4
+???.???#?.?...# 1,1,2,1
+#??###???#??? 6,2
+?.?.?.?.#.?? 1,1,1,1
+.?##?#??.??#???##?. 5,7
+??.?????#?????? 2,9,1
+.?#..?##??..#??# 2,4,4
+????.??????#?????? 1,9,2
+.????.##???? 1,2,4
+.???.??.#?? 2,1,2
+..???#???? 1,3
+.??#???..?? 2,2,1
+?#?#?????????.???? 13,2
+???.??#??... 2,3
+???.?#????#??. 1,6
+?.??##??##????? 8,1
+?.??#?###??#.?#?? 9,1
+??###.?????#????##? 1,3,8,2
+?????#??#.#.???###? 1,5,1,7
+?...?#????. 2,2
+????.??#?.???? 2,3,2
+??.?????#.. 2,3
+#??#??????.. 2,2,2,1
diff --git a/input/day13.txt b/input/day13.txt
new file mode 100644
index 0000000..10b98c7
--- /dev/null
+++ b/input/day13.txt
@@ -0,0 +1,1301 @@
+#....#.
+#....##
+.####..
+.####..
+#....##
+#.##.#.
+.####.#
+
+.#...####.##..#
+..#.###...#.##.
+..#.###...#.##.
+.#...####.##..#
+.####..##.##..#
+.####.#.###.##.
+####..#.#######
+#.......####..#
+####.#.#.......
+..#....##.#####
+.##.##...##.###
+..#.#.#.##.....
+.....##.#..####
+##..#.###..####
+.##..#...######
+
+..#..#.
+#....#.
+...##..
+.##.#..
+.####..
+..#.#.#
+....###
+#..#.#.
+#..#.#.
+....###
+..#.#.#
+.####..
+.##.#..
+
+##.###...#.##
+##.###...#.##
+###.#####..##
+##....#.##.##
+#....#.#.####
+.#....###....
+#....#...####
+.##.##.####..
+..#.##.###.#.
+
+#.#...#...##...##
+#.#...#...##...##
+#....##....#.....
+##...##...##.##..
+#..##..####....##
+.....#.##..#.###.
+#.......###..#...
+..####.#.#.###..#
+#..###.#.#.#####.
+.....#.###....###
+.....#.####...###
+
+##....##.
+##.##.###
+.#.##.#.#
+..#..#..#
+........#
+........#
+..#..#..#
+.#.##.#.#
+##.##.###
+##....##.
+.##..#...
+
+##..#..
+...####
+..#...#
+..###..
+##.####
+##.#.#.
+......#
+....#.#
+##.#.#.
+
+##.#.##.#
+...#..#..
+.##...#..
+.##...#..
+.#.#..#..
+##.#.##.#
+.#...####
+..#.#..##
+...#...##
+.#....#.#
+.#....#.#
+
+#.######.#..###
+.#..##....#..##
+####..####.##..
+###.##.####....
+####..#######..
+.#......#.#.#..
+.#......#..#...
+#..#..#..#...##
+#.#.##.#.##.###
+
+.......##
+#####.#..
+#..##.#..
+#######.#
+....#####
+.##......
+####.#...
+######.##
+.....####
+#..#.#...
+.##.#..##
+
+#.######.#.#.
+##.##.###...#
+#.....#....##
+.#.......###.
+.#.......###.
+##....#....##
+##.##.###...#
+#.######.#.#.
+#.#.##.#.#.##
+..#.########.
+..#.########.
+#.#.##.#.#.##
+#.######.#.#.
+
+#.#.##.
+..##..#
+.#.##..
+#..##.#
+#...#.#
+....##.
+.#..##.
+..#.#.#
+..#.#.#
+.#..##.
+....##.
+#...#.#
+#..##.#
+
+...#..#.##..#
+..#.#..#.####
+..#.#..#.####
+...#..#.##..#
+###..#..###..
+...##....####
+##..#..####..
+##..#.##....#
+#..#..#.#.#.#
+##...#..#...#
+...###..#.###
+
+.##..#.##
+##.###.##
+##.###...
+##..#.###
+..#.#..##
+##.###...
+...######
+###..####
+..#...#..
+..#....##
+..####.##
+
+......###..##
+###.######.#.
+..###...#..##
+...##..#.....
+...##.##.####
+###..#.##.#.#
+###..#.##.#.#
+...##.##.####
+...##..#....#
+..###...#..##
+###.######.#.
+
+#..#.####
+.#.#.###.
+.###.###.
+#..#.####
+#...#...#
+#...#...#
+#..#.####
+
+#.#...##.
+##.##....
+..#.##..#
+..#.#.##.
+#.##.#.##
+###.##..#
+####.....
+##..#....
+##.##....
+##.##....
+##..#....
+####.....
+###.##..#
+
+#.#.#.##.
+...#.#.##
+...###.##
+#.#.#.##.
+#####..##
+.#..##..#
+####.#.##
+....#.##.
+.#...#.#.
+.####.#.#
+#..#.#.#.
+..######.
+..#..#...
+#.#.#####
+#.#.#####
+
+.#.######
+#...#....
+#....####
+#....####
+#...#....
+.#.######
+##...#..#
+###..#...
+#.#.#####
+..#.#....
+.#.#..##.
+.##.#....
+.####.##.
+#.##.####
+#..######
+
+###....###...
+...#..#....#.
+..........###
+.###..###.#.#
+...#..#...###
+###.##.####..
+###.##.###..#
+#.#....#.#.#.
+...####.....#
+##......####.
+##......##.#.
+#.#.##.#.##..
+#.##..##.#.##
+#.#....#.#.##
+#.#.##.#.##..
+##......##.#.
+##......####.
+
+#...#.##..###
+.#.#####.####
+#..#..#######
+#....##..#.##
+.#.###..##.##
+.##...##.....
+.##.####.####
+.##.####.####
+.##...##.....
+.#.###..##.##
+##...##..#.##
+#..#..#######
+.#.#####.####
+
+..#..####
+#...#..#.
+..#.##.#.
+.#####...
+#.##....#
+#.##....#
+.#####...
+..#.##.#.
+#...#..#.
+..#..####
+..##.####
+
+.#.#.#..##.##
+.#.####.....#
+..##......#..
+###.#..##..##
+###.#..##..##
+..##.#....#..
+.#.####.....#
+.#.#.#..##.##
+.#.#.#..##.##
+
+....#...###....##
+.#.#..##..##..###
+.#.#..##..##..###
+....#...####...##
+####.#..#...##...
+......#.#..##...#
+#....##.#.##...##
+#..####.#....##.#
+#..####.#....##.#
+#....##.#.##...##
+......#.#..##...#
+
+#.#.#.#.##.##
+#.#.#.#.##.##
+.#..#.#.##.##
+####.##.#...#
+.###.##..###.
+.###.#.#.##.#
+#......##.##.
+.##.#..###.##
+####....####.
+####....####.
+.##....###.##
+#......##.##.
+.###.#.#.##.#
+
+######.......
+######.......
+......#######
+#####.##.#..#
+####..#..#.##
+##..##..#####
+##..#####.###
+#..#...##.#..
+.###.##..#.##
+
+#....##..
+#######.#
+#....#.##
+.#..#..#.
+##..##.#.
+##..###..
+##..###..
+#....###.
+......#.#
+##..##...
+##..##...
+......#.#
+#....#.#.
+
+.........####
+#..##..#.#...
+.........#...
+........##...
+.#.##.#..####
+#......######
+#.####.#.####
+.#....#.#.#..
+...##....##..
+#.#..#.##..##
+#..##..#.....
+.........#...
+..#..#.......
+.######.##.##
+##....#.#....
+
+....########.....
+#..##......##..#.
+#..##......##..#.
+....########.....
+..#.#..##..#.#..#
+###.#......#.###.
+#..#.##..##.#..#.
+.....#...##......
+#...###..###...#.
+...##########...#
+......####.......
+...#...##...#....
+##..########..##.
+
+#..#####..#
+###.#######
+######.....
+....#.#####
+........##.
+#..#..#.##.
+######.#..#
+
+###.###
+##.#.#.
+##.###.
+..##.#.
+...#...
+####.#.
+..#...#
+######.
+##....#
+..####.
+##.#...
+##.###.
+..#####
+..##.#.
+###..##
+###..#.
+..##.#.
+
+.#.##.#.#
+...#.....
+...#.....
+.#.##.#.#
+.#.#.#..#
+..#..#.#.
+#..##.##.
+.#.#..##.
+##.....#.
+###.#...#
+###.#...#
+##.#...#.
+.#.#..##.
+#..##.##.
+..#..#.#.
+
+...#.#..#
+###.#####
+.#.#.....
+###.##..#
+.##.#.##.
+.#.#.#..#
+.#...#..#
+###..####
+###.#....
+###.#....
+###..####
+.#...#..#
+.#.#.#..#
+.#..#.##.
+###.##..#
+
+..#..#...#.
+##....##...
+.##..##.#.#
+#......#.#.
+##....###.#
+#.#..#.##.#
+.#.##.#..#.
+#.####.#..#
+#.####.#.##
+
+#.##.##
+.#..#..
+#.##.##
+.####..
+..##.##
+.####..
+##..###
+.####..
+#....##
+.#..#..
+..##...
+
+..#.#.#..
+#...#..#.
+#...#..#.
+..#.#.#.#
+..#.#.#.#
+#...#..#.
+#...#..#.
+..#.#.#..
+.###.....
+.####.###
+..#.###..
+...#.#...
+#.##....#
+..####...
+#####..#.
+.#.##.#..
+##..##.#.
+
+.###.###..##...##
+...####..#.##..#.
+..#.#..##...###.#
+#..#.##..####...#
+.#..###...#.##.#.
+.##..##.#.##.#.##
+.##..##.#.##.#.##
+.#..###...#.##.#.
+#..#.##..####...#
+..#.#..##...###.#
+...####..#..#..#.
+.###.###..##...##
+..####...#..####.
+..####...#..####.
+.###.###..##...##
+
+..##..###
+##..##.#.
+#######..
+......#..
+..##...##
+#.##.##.#
+......###
+
+#######.#.###.##.
+..##....##..#.#..
+..##....##..#.#..
+#########.###.##.
+#..#####........#
+.#....###.####...
+.....####.##..#..
+#..#.#.##...#....
+#..#.#.##...#....
+
+########.####..
+#......#.#..###
+#......#.#..###
+########.####..
+#.#.#.####..#..
+..#...##...####
+##...#.#..#.###
+#.#.#.#......##
+.##....##...###
+####..#.##.###.
+.#..###.#..#.##
+
+.####....
+.#...#.#.
+.#...#.#.
+.####....
+##.#...##
+#.##....#
+#..#..#..
+###..###.
+###.###..
+#.###.#.#
+#.###.#..
+
+##..##.#.
+.####.###
+#....###.
+.......##
+#.##.#..#
+##..###..
+......##.
+.####.###
+##..##...
+#....###.
+##..###..
+#.##.#..#
+#.##.#.##
+
+#.....#..##
+#.....#..##
+.#.#..###..
+..#.#..##.#
+..##.######
+#...#...#..
+#.##.#.....
+...###.#...
+#.#...#.###
+..#.##.#...
+#..#.###.##
+.##...##...
+#.#..##..##
+###.#######
+..###...#..
+..#.##.##..
+##..##...##
+
+#..##..
+..#.##.
+#.#.#..
+#.#.#.#
+..#.##.
+#..##..
+.#...#.
+.###..#
+.###..#
+
+..##....#..##.###
+.####....#.##..#.
+.####....#.#...#.
+..##....#..##.###
+.......#.##.#####
+.####....#####.##
+##..##.###...##..
+.......##...#.#.#
+##..##..####....#
+.####..##.##.####
+########......###
+.#..#...#.#.###.#
+#.##.###.##......
+..##...#.##.##...
+#.##.##.#.#...#.#
+
+#.#.#.###
+..##....#
+..#..#...
+###.#.##.
+.####....
+#.####.#.
+##.####..
+..###.###
+..##..###
+#..####..
+#..####..
+..##..###
+..###.###
+
+.#.....
+#..####
+.##.##.
+###.###
+.....##
+.....##
+###.###
+.##.##.
+#..####
+.#...#.
+.#...#.
+#..####
+.##.##.
+
+....##....#.##...
+#........##......
+..#.##.#...#...##
+##......##.###.##
+##.####.##...####
+..##..##......#..
+##.#..#..#..#..##
+..#....#..###.###
+.#......#..##.#..
+
+#..#..###...#
+#.#.##.######
+#.#.##.######
+#..#..###...#
+####..#..##..
+...#.#.#..##.
+#...#.##...##
+###.###.##..#
+#..##.#...#..
+#..##.#...#..
+###.###.##..#
+#...#.##...##
+.#.#.#.#..##.
+
+###.#.####.
+####.#####.
+##########.
+###.#.####.
+....#.#.#.#
+...#.......
+....#.#####
+#####.#.##.
+##.....###.
+....#...#.#
+##.#.##.#..
+##.....####
+..#.#...#.#
+##......#..
+.....#.#.#.
+
+###....#..##.
+####...#..##.
+###.......#..
+#..##....##..
+##.##...#..#.
+.#...#.##..#.
+.#...####..#.
+#...#..##.###
+##..######.##
+#.##.........
+####..##.##.#
+###...##.###.
+###...##.###.
+
+.#..###..##..
+.#..###..##..
+###....#....#
+...#.####.#..
+#.#..###...#.
+..#.##.#.##..
+..#.#..#.##..
+#.#..###...#.
+...#.####.#..
+###....#....#
+.#..###..##..
+
+#..####..##
+.########..
+.#..##..#..
+####..#####
+..#....#...
+.#.####.#..
+#..####..##
+#...##...##
+.###..###..
+.#.#..#.###
+.#.####.#..
+
+.#..##.
+.#..##.
+##.#.##
+##.##.#
+.....##
+#.#.#.#
+.#.###.
+.#.###.
+###.#.#
+.....##
+##.##.#
+##.#.##
+.#..##.
+
+#.....#..#.
+####.#....#
+.##...#..#.
+#...#.#..#.
+#.###..##..
+##.#...##..
+###.#..##..
+#.#.###..##
+###...#..#.
+.##.#......
+.####......
+
+###.###..##
+###.###..##
+##.#..##.#.
+.#.#.#.#..#
+..#....#.##
+###.##..#.#
+......#####
+..###....#.
+#.......#..
+#.#.#.###..
+.#.##.###..
+..#.#....##
+###..###...
+#...##.##.#
+#...##..#.#
+
+####..######..#
+.###..#.##.#..#
+....##..##..##.
+#.#....#..#....
+..##..#.##.#..#
+#.##..#.##.#..#
+#...#..#..#..#.
+####..##..##..#
+.###..######..#
+
+.#.####.#..
+.########..
+.##.#..##..
+#.#....#.##
+#..#..#..##
+#.#.##.#.##
+.###..###..
+#.#.##.#.##
+..##..##...
+.#.#..#.#..
+.###..###..
+
+####.##
+.#....#
+##.#.#.
+..##.##
+...#.##
+#####..
+.#.####
+.#.####
+#####..
+...#.##
+..##.##
+
+#..####
+.###.##
+#..##..
+#..####
+.#...##
+.###.##
+####.##
+
+.........##....
+###..####..####
+.#....#..##..#.
+.##..##.####.##
+.##..##......##
+..####...##...#
+.######......##
+##.##.###..###.
+.##..##.#..#.##
+#..#...######..
+..####........#
+.##..##.####.##
+.######..##..##
+
+....#.##.##..
+#.##.#.......
+#..##.#.#.###
+.##....###.##
+#..###..#...#
+....###.#####
+#..##....##.#
+####.#...####
+.##.##...##.#
+.##.##...##.#
+####.#...####
+
+#......##
+.#.######
+##.#.#...
+#.###.###
+..#####..
+#......##
+#......##
+..#####..
+#.###.###
+##.#.#...
+.#.######
+#....#.##
+##.#.####
+
+###....#.
+#..####.#
+....##.##
+.##.##.#.
+.##.#...#
+.##....##
+.......#.
+.......##
+.##.##...
+####...#.
+.##.#.#..
+.##..###.
+.##..###.
+
+#.##..#..#.
+....###..##
+#.#....##..
+##.##..##..
+##.#.#....#
+..#...####.
+..#...####.
+##.#.#....#
+##.##..##..
+#.#....##..
+....###..##
+#.##..#..#.
+.#.##.#####
+#....##..##
+..#.###..##
+
+..#..##.#
+....####.
+...#...#.
+#..##..#.
+.#.##...#
+#.#.#....
+#...#.###
+#..##.###
+#.#.#....
+..##.##..
+....#####
+....#####
+..##.##..
+#.#.#....
+#..##.###
+#...#.###
+#.#.#....
+
+##########...
+###...#..#...
+###.#.#..#...
+##########...
+##.#######.##
+##.....#...#.
+#####..#..##.
+##.###.......
+...#..##.#..#
+..##...##.##.
+####.#.#.##..
+
+####.###..#
+####.##.#.#
+....###..##
+##...#.#.#.
+###.#..#..#
+###.#..#..#
+##...#.###.
+
+..###...##...
+...##.######.
+##..###....##
+...#.#......#
+...###......#
+##.###.####.#
+.#....######.
+.....#..##..#
+..###########
+###.#.######.
+###..#......#
+
+###.###.###...##.
+##.##.######..##.
+.#####..#.#.##..#
+.##.#..##.##.####
+..##..##.#...####
+.###..##.#...####
+.##.#..##.##.####
+.#####..#.#.##..#
+##.##.######..##.
+
+....##.
+#.#.#.#
+..##...
+.#.#.##
+.#.#.##
+..##...
+#.#.#.#
+....##.
+##..#..
+.#..#..
+....##.
+
+..###......
+.#.##...##.
+##.#..###..
+##.#..###..
+.#.##...##.
+..###..#...
+..####..#.#
+.##...#...#
+.##...#...#
+..####..#.#
+..###..#...
+.#.##...##.
+##.#..###..
+
+..##..#.#..#.#.
+##..#####..####
+##..####....###
+.#..#..######..
+##..####....###
+.#..#.########.
+##..##........#
+..##....####...
+#.##.#.#.##.#.#
+######.#....#.#
+.####....##..#.
+.......#....#..
+.####.#.#..#.#.
+
+..#...#######
+.#..##..####.
+....#..#.##.#
+.....##.####.
+#...##.......
+##..##.######
+#.#.#....##..
+.###.##.#..#.
+.##..#.#.##.#
+.##..###.##.#
+.###.##.#..#.
+
+.###..#...##..###
+##...#.#.#....#..
+##...#.#.#....#..
+.###..#...##..###
+#.###..##....#..#
+#..##.#######.#.#
+..####..#.####...
+.#...#.##...##.#.
+.#...#.##...##.#.
+..####....####...
+#..##.#######.#.#
+#.###..##....#..#
+.###..#...##..###
+
+####.#...
+.....####
+#######.#
+....#...#
+.....#.##
+....##.##
+####.#..#
+....#.#.#
+.....#...
+.....###.
+......###
+.##...#.#
+....#..##
+
+##.#.######.#
+....#..#..##.
+..#####.###.#
+###.###..#.##
+###.####.####
+..#.##.#..#.#
+#####...#..##
+####.#....#.#
+###..#....#.#
+#####...#..##
+..#.##.#..#.#
+###.####.####
+###.###..#.##
+
+.#.#..##..#.#..
+..###.....##...
+...###..###....
+#.##......##.##
+.##........##..
+.#...#..#...#..
+####.#..#.#####
+##.###..###.###
+.#.#.#..#.#.#..
+.#.#.####.#.#..
+....######.....
+.###..##..###..
+##..#.##.#..###
+.##.######.##..
+.#..........#..
+##..######..###
+.#..........#..
+
+#.....#.###..
+..##..##...#.
+###.##.#..#..
+.#.###.####.#
+.#.###.######
+.#.###.######
+.#.###.####.#
+
+##.##....##
+##.##....##
+#.###....##
+##..#.##.#.
+#.###.#####
+.#.#.#..#.#
+#.##.####.#
+..##.#..#.#
+###.##..##.
+#...######.
+##..#.##.#.
+#....####..
+....#....#.
+.#.#..##..#
+#...#....#.
+
+#..####
+#...###
+.#..#..
+#....##
+.#.....
+.##..##
+..#.#..
+.....##
+#.##.##
+.#.##..
+.#.####
+#....##
+#..#...
+
+##...#...
+.###.##.#
+#.###.#.#
+###..####
+###..####
+#.###.#.#
+.###.##.#
+###..#...
+###..#...
+.###.##.#
+#.###.#.#
+
+....####..###
+...#####..###
+.#.#..######.
+...##..#..#..
+#.#####....##
+#.....##..##.
+#....########
+.#.#....##...
+....##..##..#
+.##...######.
+#.##.#.#..#.#
+......######.
+#...#...##...
+
+##.#.#.#...
+..#.###..##
+##....#..##
+#.#.##.##..
+#.#.##.##..
+##....#..##
+..#.###..##
+##.#.#.#...
+.......###.
+.......###.
+.#.#.#.#...
+..#.###..##
+##....#..##
+
+##.#..#
+###...#
+#...##.
+##.....
+..#....
+.##....
+##.####
+##.####
+.##....
+..#....
+##.....
+
+#..##..##..#..#..
+#.########.#..#.#
+.#...##...#.##.#.
+..###..###......#
+.###.##.###.##.##
+.#.######.#.##.#.
+##..#..#..######.
+.###.##.###.##.##
+.#..#..#..#.##.#.
+.#..####..#.##.#.
+...#....#........
+....#..#.........
+....#..#.........
+..##.....#......#
+.#.#.##.#.#.##.#.
+#.#..##..#.####.#
+###..##..###..###
+
+##.##.#######
+..#.....#..#.
+#.###....##.#
+.##.###......
+..#.###.#..#.
+..#.###.#..#.
+.##.###......
+
+##..#..##..
+###.#.#..#.
+#.####....#
+.....##..##
+#####..##..
+....#.#..#.
+..##.######
+##.##.####.
+#.#.#..##..
+.####.####.
+#.....####.
+#...#.####.
+.####.####.
+#.#.#..##..
+##.##.####.
+
+##.###....####.
+####.#.###.##.#
+.##.###....##..
+.##.#.###.#..#.
+.....###.######
+......#.###..##
+.##.##.#.......
+#####..####..##
+#..#...########
+####.######..##
+....#..########
+
+..#..#.###..#
+.###.#...#..#
+..#.###.#####
+.##..##.#.##.
+.##..##.#.##.
+..#.###.#####
+.###.....#..#
+..#..#.###..#
+.#..##....##.
+##.##.#...##.
+#.##.#...####
+
+..###.#####
+.#.########
+.#####..#.#
+.#....##.#.
+.#....##.#.
+.#####..#.#
+.#.########
+#.###.#####
+#.###.#####
+.#.########
+.#####..#.#
+
+.#..#.#.#
+......##.
+##..##.#.
+##..##...
+......##.
+.#..#.#.#
+##..##..#
+##..###..
+######.##
+#######..
+#.##.###.
+
+.######
+#......
+#......
+.##..##
+.##..##
+#......
+#.#..#.
+
+.#.....
+#.....#
+..##.#.
+#.##...
+..####.
+#.#.#..
+#.#.#..
+..####.
+#.##...
+..##.#.
+#.....#
+.#.....
+...#...
+...##..
+#......
+#......
+.#.##..
+
+.....#.
+#.##...
+#.##...
+..#..#.
+..#..#.
+#.##...
+#.##...
+.....#.
+##..#.#
+
+...##....
+#.#..##..
+#..###.##
+###......
+.#..#..##
+#....#...
+.##.#####
+..#......
+.#.....##
+#.#..#.##
+..##.####
+..###.###
+..#.#.###
+
+.##..#.###.##
+.##..#.###.##
+.#...#..##.##
+...#.#.#.##..
+#..####.#...#
+#.##.#...##..
+.##.#.#..#.#.
+....#.#####..
+#.##.###...#.
+..###.#####.#
+..###.#####.#
+#.##.###...#.
+....#.#####.#
+
+.##.##.#.###.
+#..##.##..#.#
+#.#######.##.
+.....#..###..
+.#######.#.#.
+.#####.#.#.#.
+.....#..###..
+#.#######.##.
+#..##.##..#.#
+.##.##.#.###.
+##.#.###.####
+##.#.###.####
+.##.##.#.###.
+
+###..###.
+.#....#..
+.#....#.#
+.#....#.#
+.#....#..
+###..###.
+.#....#..
+##.##.###
+...##....
+########.
+#.####.##
+#.####.##
+.######.#
+..####...
+.#.##.#.#
+#......#.
+..#####..
+
+..#..#..###
+#.#.#...###
+#.#.#...###
+..#..#..###
+#...#..##..
+#..##.#....
+.#.###.#.##
+#.....#....
+##.##.##..#
+#..##.##..#
+#.....#....
diff --git a/input/day14.txt b/input/day14.txt
new file mode 100644
index 0000000..5ad82d9
--- /dev/null
+++ b/input/day14.txt
@@ -0,0 +1,100 @@
+.O.....##O.O#..O#....##O#.#.#..##O#..O.....#.OO..O.O.O.O...O....#O...OO....##.O..OO.O......O..O.....
+....O..#O....#...#OO..#..#..O.....#O......O.O.#..OO..O....#..#.OO....##O...O..##...#.O...O.#...#.O#.
+.O.O#.O...O...O....O...O#....#.#O#...O...#.#..........O#...O#O..O..#.OOO..O.O.....O#.........#O...O.
+.O....O.OO.#.....#.#O......##O..O.O.##.#..O##O.O.#OO....O.O..O#.OOO..O..#..##.#...#.O.#O.#.#.....O..
+..O......O..O.O.#.OO.OO...#.O....#...#O..OO.#.O......O....O.O.....O.#.OO..O.OOO.......O.O...##O...O#
+.O.O.........#.O#.#OO##..#OO..OOO#....#....O.O..#.O......#.OO..#..O.O..O.O..#....#.O#..OO###.....#..
+.O..#.#.OO.#...........#..O#....O..O.O#.......#.OO.#OO....O.#O.#.....#.OO.#...#..O..O##.O.O##..#.#.O
+..O..#...#..OO.#O.#.O.O#O...O.O..O..O#..#..#..O..........O.O#.....O...........O.###..#.#..O#.#.O...#
+#..O...#.O..O.O......#O.O##...##...OOO....#.O.O#OO.##...OO.OOO..#.O..##.....O..O.O.#O.O..#.O#O...O.#
+OO....#.#...O...O.#...##O..###O.......OO...#.#...O.#..#.O......O....#.O#..#O..O...OO...#..O#..O....O
+O#..#O...##O.....#.O.#.O...##......#...#OO#...O.......#.#.OO#.#..#..O#OO...O.......O.#...#.##....O..
+#............O#....##.O.O..#O.#.OO.O...OOOO#.......O#O..O.......O#OO#...O.O....#.....#O.#.#..#.OO.O#
+#O.O.....O....#O..OO.#O.#....#.##O.O...........O.##.#O##O...O#..O.O.O#......O...O.#....#OO#.#..O..##
+.O..#O.O.#....O.........#.....OOO.......O.#O.....#OOOO#.O##O.#.O...O..#OO...O.....O..#.#......OO.O.#
+O..O...O......O.O...#..#...#.OO.#.OO.O..O...#...#...O.###....#O#.O..O..#O..#.O.##.......O#..#O......
+#..O...#...#OOO.#.###.#....#..O.O.#.#......OO.#.#...#....#.OO.O..#.O...#.#.....O.#O.O.#O..O....O.O..
+OOO.#...##.OO.O....#.O.###.#.....O.OO#..#....OO...O#.#.O..#O.#..#.O..O....#O.OO#...O..#.....#O...O.O
+.#.#...........#.............O.#..##.#O.#.O......#..O..OO.##O.O##.....#..O.O..O.OO..OO.#O.O.##O.O...
+..O......O..##O.O...##......##OO..#O.#..#..OO...#...O.O..O..O.O.O##.#O.O#.#.O#....##.O.....O..#.O...
+.#...#O.#.#....O..O..O#.O.....O..O.#.O....O.O...#.O#......O..O.O...#.#...O..##O...#.#...O.##..#..O#.
+.O#..O.#....#.OO.#.....#O....O#O.#..#.O.....#......#O....O.........#.#O.OOOO#O.OOOO.#.....O.#.O..#OO
+#..#.....O.....#.....##.O....##.O.O#OOO..O....O...#....O.O.....#.O#.O....O.O....#..O....O###.#..O#O.
+...O...#..#O.O.O.......O.....O#O....#.#OO#......#..OO.....#.#...#...OO.O#O#O.#.#O....#..O....O...OO.
+..#.##.#.#..............#O...#O#..##O.#.....O.#.#......O.....O#..O.O.O.#OOO####O.....O..##.O.OO.#..#
+O...O#.O....#.O...........#......##.O.O#.....#.O..OO#...O#.##O..##.....#.O.O.....O#.#O.O..O...OO#...
+OO.........##....##.O.O.OO.....O...........O.....O..#..#.OO........#O...OO.....#.O.........#........
+#..#.##O#.O#O..#..O...#.#.O.OO...##O..#..O.O........#.#O#..#..O..#.O.....O...O..O.O....#...O#....#..
+O.#.......O..O#O...OOOO#OO..O..#....#O..#...OO..#....O......#..#....O.O#.#....O.OO..O....O....OO..#.
+O.OO..........#..O.#O#.#.#O...##..#..O##..##O#.OO......O..#.O.O.O.OO....#.....OOO#.O.#.O.#O##.#OO.#O
+#..O....##...#.O.OO.O.O......#.OO...#......O........OO.#O..#.......OO..O..O...#.O......O.#O#O#...#OO
+#...#..#OOOO#.#O#O.O#.O.#.###...O..#.....O..............O.....O.#.O....O.O....#...........O...O#.O..
+.#O.O.OOO.....O...O...#.........#..O..O.#..#.O#....O#O..OO.........OO#.........#..OO.O.......#...O..
+..#...O...#O...O..#.....O..O.#.......O...O.O.O.....O......O...#.....##.O.O#..O.#.O..#.O..O..OO......
+.O.O..O..#O..O#OO#OO.#....O...#.O#.O.#...###........O.....O..O.OOO.O...#....O.O....O..OO.###...O...O
+.#.....O..OOOO..#...#.#.O......O..O..#.##.#...O#..O.#.#.O#.....##...##O.......##..O.O.O.......#..OO#
+...O...O...O..O...#..O#....O....#......O..OO#...O...#.#O.##.#..O..#.##O..#.#...O.....#.#O.O..O.O##..
+.#OO#.....#O...O.#.OO......OO...O..O..O...#............#.OO##..OO..O.O......O..O...O...O...O...O....
+...O....O..#.O.O###..##.O..O.O.#...#.OO.O..O.O.O.O.#.O..#.O##.......O..#......O.O..O.OOO..##O....#..
+O...O.#..........O..OO.O#...#OO.OO..#O#.......O..#....O.......O.#OO.O.O.O.O##.OO..##...O#..OO#..#.#.
+.O....#.#O............OOO.......#.O..#.#...#O......#....#.##..O.#.##OO..OO.#.#......O.O.....#.OO...O
+..O...O#...O..O..#..#O..O#..O#..O.OO..O#.#...O####..O...O#..##......O#....O....O..O...O........O..O.
+O.O.#..#.#..##..#.#....#..#..#.###.O#.O....OO...#....O#.....#.........#.###..#.#OO..#O...O...O.#....
+..OO.#.O.....O.O..#.......O...O..##.#.#O..#....#OO.O....O......#.OO#....O..#O.O...#.OO#O.#....O..O.#
+#...O#.O...O..O..O.O#...O.O.......OO....OO..O#.O..............O..O#.#...O#....OO..OO..O....#.#O.O..#
+O.O.##..O#...#O......O...O...OOO.....#....O#...O#.#.#........O..##..##.O..##O.O..O..#............O.#
+.....#....O..O.O...####...#.O.#..#.#..#....#...#.OO.#..##...OOO.#..#......O.OOO.....#O#.......OO....
+...#.O#.O...#.OOO#.......OO.#..O..O##.#OO.O.#.O.O.O#.....#.O.........O...O....#.O#....#.#O..O..#..#.
+...#..O......O..#.O...#.....#....O.....OOO..O..O##O#...O...O.#...O....#OOO##..........O....#O.......
+...O.O.#.#...O.O#O#.#O#O....#....O..O....#.O.O#.....#....O..O..............O...##O.O....O..#....#..O
+O.....O..#O....O..O##O..#..#.O.OO..#...##........#.#.#.O..###...#O.##..##..#O..O.OOO...O.O.....O....
+..##.......#...O.O.O#O.#...O..OO#OOO.#..O....#...O..#....#.....OO..OO.#....O.....#.##...O.#..O...#O#
+O##....O.O..##OO.#.#.O#..##............OO.O.O.#.....#..OO...#...O..##O..........#.......O..OOO...O.#
+#OO.......O.O..O...#...O#.#...O..O.....O..OO.O...#OO...O....O...O.O...O....O......#.#.O.OO.....#....
+...#..#OO..#..O.OO.#..#.....O..#O..#....#..#...O...O...OO..O#..O...O.........#...OO.O.#OO#.#.O..OO.#
+..O#.O.O.#.#.....#...O..O#O..#..#..#.#...O..O.#.O.OO..OOO.#..OO.#.#.....OO...OO#O#.#..........O.##O.
+...O#..O..O..O..#OO.###..O.........O#...OO.....O..O#....#O.O.O..O#.#...O#OO.O..#..O.O.O...O.OO.....O
+.....O.#.O..O...##..#.O#O.#.......#O.OO#...O...##.OO#...OOO....#..#..#O...O.O#O.O..O.#OO...#..#.O#.O
+....#...#O.O...##.#...#...##.O....#.#.O.O..##.O...#O...O#OO#..#.O.....#O#O.O.O#O...#.#.O.O..#...O..O
+.O...O....O.....#.#O.#.##.##..O#..OO#O..#..O.#..O..O#....O#..#..OOOO.#.O..OO.O.##......#...#......#O
+O....O.O...O#.OOO.#..O.......#..#....O#O........###..O..#.O.O.O.......#....O.O.O.##.O..#..O....O..#.
+..O..OO...................OO...#........#.#...O..#.O.......#...O.......O..O#...O.#.O#....O#.O...#...
+.O..#......O#O#..#......OOO........OOO........O#....O#.OO.#.......O#.OO.......##.....OO.O......O.O..
+.#O..#O#O#..###.............##....#..O...#.O#O..O###.O..##..#..#OOO#.#...O.#.O.....O.#...........#..
+.....O..O..OO.O.......OO.O.....#..##.##OOO#.#O..O.#....OO#OO...#...##...#.O...O....OO.O.##..O#..###.
+OOO#.....#..#.O......O...O...#O..#....O.OO.#...O..........O.....O..O.....OO...#..O..O.#OO.O..OO.#...
+O.OO.#...#.#...#...OOO.......O#....O....#....O.#...O.#.##.#OO.O..##......O.##OO#.......#.O...O.OOO..
+.....#.........#.............O##.##..O..OOOO....#....O..#..O..#...O...OO.#O....#O.....O#O#......#..#
+.#.O#O#.O#OOO.......O.O......O.#.#....#O..O..#..#.......#O.O#.....###..O.#.O......#.#.O#......#O....
+..#O#.#.O.#O.OO.#O.O####.#..##.O.....#...#O#..#O#O#....O....OO#....O#.O...O.........#O##.O.O....#...
+.OO..#O..O#.....OO....#O.O.....OO#...O.....OO.......#..O#...OO.#.O..O.O.#O.OO#.#O.....O...O..O.O.O..
+..##OOO.O.....##..O.#.#.##..#...##.O..O....OO...##O..#.OO....#.O#.......O..O..O.#.#.#....O.O.O#O..O.
+O#.#..#.##.O..O.O.....OO#....OOO.O.O.OO.....O...###.......#O...#....#.OOO.#O..OO...O..#..O.O.O.....#
+OO#.....OO.O.#OO...#O...O.....O..O.#....O............#O.O.O....#.......O.O..OOO...#...#...#.........
+......#..O.#.....O....OO..##..##........O.#O..........#OOOO......O......O.O##..O#O#O.O..#.#O.....#..
+..O..OOO.........#.O..O..#..O..O###..O..##...O..#.O.O..#.............O.....##O.OO..#.#..O.##O.##O.O.
+..#...#..O........O.O.#..##.O.#O......O.O.#OO..O..#..#O.O.....#.##..##..#......OO..#.O...#..#.O.O#..
+..#...#..O......#......#..O.##.#....OO..#...#.....O.O.O..#.##...##..OO......#.OO....O..O..O.O.#.O...
+......O...#O......O.O..OO.O...#O..##..#...#..#....##........##O.O......O.O...#O....OO...............
+.....O..#.##....OO.O...O..O..O.O...#....O.#.O....#.#..OO......OO#...#.###..#O...O....O..##O.#..OO.O.
+...OO...#...##.##.#..#...#.O..#OOO.....#.#..O...O.##O.#.#..#O.#O.#......O#......OOO.O#.....#......O.
+OOO.O.O...###...#...#.#...OOO.O...O..O...#....O.OO...O..##..O........#.O.#....#......##.#O..#.#O#O..
+....OO#.#.....O..O..#......OO.........O....O.....O..O#.#..##O.....#.#.#....#..O#..#OO.O...#.OO##O.OO
+O.O..#..O.......O.O....O..OO.O...OO.O.......O###OOO##.O...O...#O#OO......O..O..O...#....##...O..O...
+O#.O#.....O...O.O...#.##.#.......###....O.O.##......O....O..#O..#O#.O..##OO..O.###..O.OO#...#....##O
+O..O..O............OO.....O.O..O...#............#O..O..O#...O..O.O##........#.#.....#....O#O.......#
+............O....O#.OO...##..OO#O...#.....#OO..O#.......##O.O#...OO....#..O.....#..O...O.OO#O.O...O.
+.#...#...OO...###.OO.OO....#..O...#...O.O...O....#........O.#..O#.OO..#....#O..O##.......O...#..##..
+#.O.O#.O..#....#...#O#...OO..#...O.O#.OO.##...............O.#......O.....#..O..#..O..#O..O..##.##.O.
+O..##.....OO.O##.O..#.O........OOOO...#..##.........#.#..O.O.OO#..O##O#....O.O#.....O.....O#..#...##
+O......#.O...#...O#.#...O#........O..#....#..#.O.......O.......#.....#..O......#..O#..O#...#.#O.O...
+..........OO###.#.O.O..#...##..##.#.........O#O..O.#O.......O..O#...#..O.O..#.O....#..O..OO.O......O
+.OOOO..O....O.....#.....#.#.O.#O.#.O....##...O.O#O.OO.....O.O#.#...#..#.#O.O.##...O...OO..O....OO#O.
+O...###O...###O...#...#O...#....#..O#..#O#....O.##..#.....#.#OO#.O...O.##O#...O.....#.......#.O.....
+O...#.OO.O##.O.....#.....O..O...#.O...O.#.....#.O....O.#...#OOOO..#.#O...O...##..##..........O....O#
+..OOO..O..#...OO....##....O....O...O....#..O..##.O...O.O.....#.#.O.#.#..O#O.#.....#.O.#.#.....O.O#..
+#....O.OO##OO....#...#.....#....###.#..O..O.O...#.....#..O.........#O#...#............OO....#.OO..O.
+.O.O#.#O#.O..O........#..O#...O.#..##O....O#O..O#O...#.O...#.....#.#......#......O...#...#..O..#....
+.#..O..O..#O..OO....OO#.#...O.....O....#....O..O#...OOOO#.#...#..##.O.....O.....#..O.O..#...OO#OO..#
+....#O.##.O.....#..O..OOO.#.O..#.O.....#O.O.##..#OO.......O..##...O#.#.OO..O..#...#......#...O.O....
+#......#.#.....#O...O..#..#..###..O...##.OOO.O...#.O..#..##.O...#..O..O....O.......#OO.....#....OO..
diff --git a/src/day13pt1.rs b/src/day13pt1.rs
new file mode 100644
index 0000000..bc71c44
--- /dev/null
+++ b/src/day13pt1.rs
@@ -0,0 +1,70 @@
+pub fn f(input: Vec<Vec<char>>) -> u64 {
+ for x in 1..input[0].len() {
+ let mut ind: bool = true;
+
+ for i in 0..input.len() {
+ if !ind {
+ break;
+ }
+
+ for j in 0..x {
+ if 2 * x - 1 - j >= input[0].len() {
+ continue;
+ }
+ if input[i][j] != input[i][2 * x - 1 - j] {
+ ind = false;
+ break;
+ }
+ }
+ }
+
+ if ind {
+ return x as u64;
+ }
+ }
+
+ for y in 1..input.len() {
+ let mut ind: bool = true;
+
+ for i in 0..y {
+ if !ind {
+ break;
+ }
+
+ for j in 0..input[i].len() {
+ if 2 * y - 1 - i >= input.len() {
+ continue;
+ }
+ if input[i][j] != input[2 * y - 1 - i][j] {
+ ind = false;
+ break;
+ }
+ }
+ }
+
+ if ind {
+ return (y * 100) as u64;
+ }
+ }
+
+ panic!();
+}
+
+pub fn main() {
+ let txt = std::fs::read_to_string("./input/day13.txt").unwrap();
+ let input = txt
+ .split("\n\n")
+ .map(|s| {
+ s.lines()
+ .map(|s| s.chars().collect::<Vec<char>>())
+ .collect::<Vec<_>>()
+ })
+ .collect::<Vec<_>>();
+
+ let mut sum: u64 = 0;
+ for i in input {
+ sum += f(i);
+ }
+
+ println!("{}", sum);
+}
diff --git a/src/day13pt2.rs b/src/day13pt2.rs
new file mode 100644
index 0000000..5af732b
--- /dev/null
+++ b/src/day13pt2.rs
@@ -0,0 +1,60 @@
+pub fn f(input: Vec<Vec<char>>) -> u64 {
+ for x in 1..input[0].len() {
+ let mut cnt: u32 = 0;
+
+ for i in 0..input.len() {
+ for j in 0..x {
+ if 2 * x - 1 - j >= input[0].len() {
+ continue;
+ }
+ if input[i][j] != input[i][2 * x - 1 - j] {
+ cnt += 1;
+ }
+ }
+ }
+
+ if cnt == 1 {
+ return x as u64;
+ }
+ }
+
+ for y in 1..input.len() {
+ let mut cnt: u32 = 0;
+
+ for i in 0..y {
+ for j in 0..input[i].len() {
+ if 2 * y - 1 - i >= input.len() {
+ continue;
+ }
+ if input[i][j] != input[2 * y - 1 - i][j] {
+ cnt += 1;
+ }
+ }
+ }
+
+ if cnt == 1 {
+ return (y * 100) as u64;
+ }
+ }
+
+ panic!();
+}
+
+pub fn main() {
+ let txt = std::fs::read_to_string("./input/day13.txt").unwrap();
+ let input = txt
+ .split("\n\n")
+ .map(|s| {
+ s.lines()
+ .map(|s| s.chars().collect::<Vec<char>>())
+ .collect::<Vec<_>>()
+ })
+ .collect::<Vec<_>>();
+
+ let mut sum: u64 = 0;
+ for i in input {
+ sum += f(i);
+ }
+
+ println!("{}", sum);
+}
diff --git a/src/day14pt1.rs b/src/day14pt1.rs
new file mode 100644
index 0000000..9b68f62
--- /dev/null
+++ b/src/day14pt1.rs
@@ -0,0 +1,23 @@
+pub fn main() {
+ let txt = std::fs::read_to_string("./input/day14.txt").unwrap();
+ let input = txt
+ .lines()
+ .map(|s| s.chars().collect::<Vec<char>>())
+ .collect::<Vec<Vec<char>>>();
+
+ let mut sum: u64 = 0;
+
+ for j in 0..input[0].len() {
+ let mut off: u64 = 0;
+ for i in 0..input.len() {
+ if input[i][j] == 'O' {
+ sum += input.len() as u64 - off;
+ off += 1;
+ } else if input[i][j] == '#' {
+ off = (i + 1) as u64;
+ }
+ }
+ }
+
+ println!("{}", sum);
+}
diff --git a/src/day14pt2.rs b/src/day14pt2.rs
new file mode 100644
index 0000000..9b68f62
--- /dev/null
+++ b/src/day14pt2.rs
@@ -0,0 +1,23 @@
+pub fn main() {
+ let txt = std::fs::read_to_string("./input/day14.txt").unwrap();
+ let input = txt
+ .lines()
+ .map(|s| s.chars().collect::<Vec<char>>())
+ .collect::<Vec<Vec<char>>>();
+
+ let mut sum: u64 = 0;
+
+ for j in 0..input[0].len() {
+ let mut off: u64 = 0;
+ for i in 0..input.len() {
+ if input[i][j] == 'O' {
+ sum += input.len() as u64 - off;
+ off += 1;
+ } else if input[i][j] == '#' {
+ off = (i + 1) as u64;
+ }
+ }
+ }
+
+ println!("{}", sum);
+}
diff --git a/src/main.rs b/src/main.rs
index 11d3ec1..ed80bc3 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -1,7 +1,7 @@
-mod day11pt1;
-mod day11pt2;
+mod day14pt1;
+mod day14pt2;
fn main() {
- day11pt1::main();
- day11pt2::main();
+ day14pt1::main();
+ day14pt2::main();
}