diff --git a/Cargo.lock b/Cargo.lock index 9739af8..9e33264 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -38,6 +38,20 @@ version = "0.1.0" name = "day_11-2" version = "0.1.0" +[[package]] +name = "day_12-1" +version = "0.1.0" +dependencies = [ + "regex", +] + +[[package]] +name = "day_12-2" +version = "0.1.0" +dependencies = [ + "regex", +] + [[package]] name = "day_2-1" version = "0.1.0" diff --git a/day_12/input copy.txt b/day_12/input copy.txt new file mode 100644 index 0000000..4c0a08d --- /dev/null +++ b/day_12/input copy.txt @@ -0,0 +1,1000 @@ +??????#??#?? 1,1,5,1 +?#?#??##?#? 2,5,1 +????????.?#???#??##? 2,1,2,1,1,6 +#???#?????.?#?. 2,1,2,1 +?##..?#?#?? 2,4 +..#??##????###????#? 6,8 +???#..?#?? 1,1,2 +.#????#?.??? 3,2 +.?#??##?.? 1,3 +????????#? 2,1,1 +.?##???#?##????.? 7,4,1 +?##??.?#.????? 5,1,4 +?????.#??#?? 1,1,1,1 +?#.???.???.##?#?. 1,1,1,1,5 +.#??.??.???.???. 1,1,2,1,2 +.?.????.??? 1,1,3 +?????#??????????# 6,1,6 +#?????#???? 1,8 +.???.??#?.#????#?.?? 1,1,1,7,1 +.??#????##??#.# 12,1 +?#????##.#.?? 2,4,1,2 +??.??#?#.#? 1,3,2 +??#?.#????#?#? 2,9 +#??#????#????? 4,3,1 +?##????.???? 3,2 +?##??#?.#??#??#??#.? 2,2,10 +??#?#??????#.#?#.? 11,3,1 +??##.???????#??????. 2,1,2,4,2 +????.?#.???#.????.? 1,1,1,4,1,1 +???????????#???.#?? 1,10,2,2 +#???#???????#???? 1,1,7,1 +??.??#?#???.??? 1,5,1,1 +?.?.?#..## 2,2 +??????.?#??#???.? 4,1,4 +???????##?? 3,2 +?????????#?.?#?# 8,1,1 +???????.#???.?#??. 1,1,2,2,1,3 +?#????????????#????? 2,12,2 +..?##??#???.???? 8,3 +#??.?.????#???????? 1,1,2,1,7 +????#?#?##???. 2,6 +??#????....#???? 1,5,2,2 +.?????#?????? 1,5,4 +????..???.???#??##?. 1,1,1,1,1,6 +?.??#?...??? 2,3 +#?#??????##?# 3,2,2,1 +#?##?????????? 10,1 +??#?#?#????#???#??? 13,2 +?#?.??#???#.?? 3,3,2,1 +??????#????????#?? 4,1,5,1 +#?????#.?. 3,2 +??#?#?##?.???? 1,7,1,1 +#?#??#?.##???.???#? 1,5,2,1,4 +?????#???#.#??# 1,1,5,2,1 +.?#?#...??#?#??#?# 1,1,6,3 +???#??#????#?#. 1,9,1 +#????#???.? 1,1,1 +?#?#??#??.#. 1,1,3,1 +..?.???#.????? 1,2,1,2 +.??#???#??????#.??.? 7,4 +.????????? 2,2 +?.??.???.?? 1,1,2 +???.?.???#..??. 1,4 +.?..?.????#???? 1,1,3,2 +??????##??#????.# 1,1,8,1,1 +.?#?.#??.??#?#???#? 3,1,1,9 +??###??#??????#?#?? 1,6,1,1,1,3 +?#??.??#?? 2,1,2 +.???#????#??? 4,1 +??.#?##??? 1,2,1 +?????.???.?#.##?? 4,2,2,2,1 +???#???????#.#???.?? 4,1,1,1,3,1 +?..????#??##?#? 1,8,1 +#???#?##??? 3,1,4 +??.???.?##.?..?#? 3,3,1,2 +????.??????#? 1,1,3,1 +?????#?#?##??. 4,6,1 +.?????????# 2,4 +??.?.?????#?#. 1,7 +.#?#??.??????????? 1,3,7,1 +????##?#?##?? 1,2,4 +??.??????#?#???. 1,2,5 +?#.?#??#????.?? 2,1,1,1,1 +???##?.?.???#..?#?#? 1,2,1,1,1,5 +.??.#??????#?#### 1,1,1,9 +?#?#?.???##????# 1,2,1,3,4 +##?#.#??#?? 4,5 +????..#??. 3,2 +??#????.??##??# 4,1,5 +??.???.#???????????? 2,1,6,1,3 +???#?.?.????#?????? 4,10 +#?????#?????. 1,1,1,5 +.?#??.??#???. 2,6 +?#.?????#??##???. 1,1,2,1,5 +.#?.???????##?.#.. 2,2,3,1 +??#??#??.?#????? 1,1,3,3,1 +#.????.???.??.????# 1,1,1,2,1,5 +??#??.???#?? 5,1,1,1 +?##?????????? 5,1 +??.??#??.?. 4,1 +.?.##????.?.? 1,5,1 +.#.?????????.?????? 1,7,1,2 +?##?..?????#??##?##? 3,12 +#?#?##?#?????#??#??? 1,9,1,1 +????#?##???#? 1,8 +??.?##?????????.? 1,11 +??#???#?#.? 2,2,1 +.????#???.???#?#? 1,5,5 +????.??.##??? 2,4 +?#???.???.#????#?? 1,1,1,1,1,4 +??######?#????????. 8,1,1,1 +????.?????? 2,3 +.???#????? 1,1,1 +??????#?#?#??# 10,1 +#?#????????? 1,6,1 +???.?.?##?#?.????. 1,6,2 +?.??????#.#.. 1,1,3,1 +???.?????#?.? 1,2,2,1 +#..???.?.#?? 1,3,1,3 +?#????.#?????#. 2,2,1,2,1 +..#?????????..??## 1,1,1,1,1,3 +??????????#??#? 1,12 +#?#?.?#??????. 4,1,2,1 +???#????#?#???..?# 9,4,1 +.??????#..?. 1,1,1,1 +?.??#????#? 5,1 +#?.?.??#?#.?? 1,1,3 +?#.????.?? 1,3 +#??#??##?#.?..?? 1,6,1,1,2 +.???#??????.?#?.? 5,1,1,1,1 +.??.?.????? 1,1,2 +..?##?????#????? 5,5 +?..?#??#?????.? 2,4 +???#.#????.# 3,2,1,1 +??.??#.?.???? 2,2 +????????##??.??.? 7,3,2,1 +.???#????????????? 10,2 +.?#??.???.???# 3,2,1,1 +?##???#.?? 2,2,2 +??.??#?.?? 1,4,1 +??#?#.??#? 1,3,3 +?#??????.?????#??.#? 2,2,1,1,4,1 +???????.???.#?.?? 7,2,2,1 +.????????#????###?# 1,4,1,3,1 +????????#??.?#?..#.? 2,6,2,1,1 +?#???.?????#?.????? 2,1,1,3,1,1 +???#??.??.. 4,1 +.????.?.??. 4,1,2 +?????????.#? 1,1,1 +?#??#?####??. 9,1 +???#??????#?.#?#???? 1,1,3,1,3,1 +?#?#???#??#?? 9,1 +????#???.?? 3,2 +..#??##???.#?. 1,4,2 +??.?????.?? 3,2 +?#?..???##??.? 1,7 +?????#??????#????? 13,1,1 +?#??#?##.?.?#???# 1,4,1,2,1 +??..??..???.?## 2,1,2,2 +??#??.???#????????? 1,1,1,1,8,1 +???.?..?#. 3,2 +??#??.#.??.#?????? 2,1,1,1,4 +##??..?#??? 4,3 +?#.?.????.##??#? 1,1,4,2,2 +?#???#?????##??? 2,3,5 +??#?????.#?##??? 6,1,5 +??#?..??????? 3,3,1 +?.?.?????###???. 1,10 +#????###???#???.?#? 1,6,3,1 +?.?#?.???##???##??. 2,10 +???.?.#??# 1,2,1 +..#????##?#??????? 1,9,1 +#?#.????## 1,1,4 +???.??#?.#.. 1,1,1,1 +?#?.#.?#.?????#? 1,1,1,2,3 +?#???.?#????#? 1,1,1,4 +???##?????#????##. 1,14 +?..??#??..#? 4,1 +?????????#??##??. 3,8 +?.?.????????#??. 4,2 +?#??????#???#????#? 3,5,1,6 +?#?#?#?.????#?#??.#? 7,9,1 +?#???????#????.?? 6,1,4,2 +##.??????.??####.? 2,2,6 +##??#...#?? 5,3 +????????.#?#?#??? 1,1,4,5,1 +.??.?#?.???.??#? 2,2,1,3 +???#?#..??#? 5,3 +???#?????.?? 4,1,1 +?????#.?###??????? 6,6,1 +??#???###????#?.?.? 2,8 +??#?..###??##???#?. 2,12 +???????#?#?#?? 5,2 +....?#?.?????###???. 2,1,3 +#?????#?#??#?#????? 2,14 +??####???#??#??.. 12,1 +#?#????#???? 3,6 +???#?..????? 1,1,4 +?.?##????.???# 4,1,3 +?#?##????#???##????? 5,3,5,1 +?.?#?#???##? 1,9 +.?#???.??##? 4,2 +?##?##????.###.?? 8,3,1 +??.??????#.?.? 1,6 +?..?#?????.. 2,1 +.??.????##?#??# 1,9,1 +.???#.#.?.??.. 3,1 +?????#?????.???#.? 4,1,4,1 +???#??#???????#???? 8,5 +??#####???#?????.? 10,1,1 +???#????#??????#?# 4,11 +?????#??#??#??# 1,1,5,1,1 +??##????.?.?.??.? 4,1,1,2 +???.?.?#.?????????#? 1,1,1,1,8 +?#???????.? 4,2,1 +??#??#????#..??????? 10,4,2 +?.??.??.??. 1,1,1 +???.???..#? 1,1,1 +???????????.?##?? 4,2,1,5 +#.?????????#???#???# 1,11,3,1 +???#??.??#? 1,2,3 +.?.?#?????????#?.. 3,9 +??.???#?.????#. 1,2,5 +#??#??.??#?#??? 5,5,1 +.???????#?????? 4,1,1,1,1 +.#????#?????#?? 1,2,2,1,3 +??#?#??.?? 7,1 +??????#?.? 2,3 +????.#??##???.?? 1,1,5,1,2 +.??###????.#?#? 7,3 +????.??????..?. 2,1,1,1,1 +???#?????##?.?.??. 9,1 +???#?#????.?#? 5,1,1 +??????????? 5,1 +?#???.?.???..#??##?? 1,2,1,2,2,3 +.??????.??#?#??? 1,2,6,1 +??#?????#??.. 1,2,1,1 +??#????????##??## 2,10,2 +?#???##???? 2,5,1 +..??.#????.???? 2,1,3,2 +.?##??#??#.?#? 4,1,2,3 +.?#??#????##?.? 6,3,1 +??.#.?###?????? 1,1,4,4 +?.??#.##?##??#?. 3,5,2 +.?.???#.?#??.. 1,1,3 +??.??##.?#. 1,2,2 +??..??##?#. 1,5 +??????????..??? 1,2,3,1 +???#?????.? 5,1 +?????##.??.??? 1,2,2,2 +???.?#??#??? 2,7 +?#.?#???.???#??.?#?. 2,1,1,6,3 +???.???#.?#?????#?. 4,7 +#?##?#?#??#??.? 4,4,2,1 +#????#?###??. 1,8 +????????..#???? 5,1,1,2 +?#???????#.?.#? 6,1,1 +??????#?????.#?.#??? 1,6,1,1,1,1 +.??#?#??.???????? 5,1,1,1,1 +???.?.?#????##?## 1,10 +????##?###?#???#? 10,1,2 +??.##?.???#???#?#? 3,9 +??#??????? 1,1,1 +??????.?##??##?# 1,2,7,1 +.??####?????????# 7,7 +????.#???? 2,3,1 +???#????????? 2,1,1,4 +?.??#???#??##????#? 1,1,5,5,2 +?##????.??.??#?.?. 5,2,2 +????????.?# 1,2,2 +??#???.???## 1,1,3 +..??.##?.#?? 1,3,2 +?????????..#??#???# 3,2,4,2 +?#???????.? 2,2 +#????#????#??????#? 1,1,1,5,1,1 +#????.?#?.## 1,1,1,2 +?#??#???#?# 8,1 +.?##?????.???? 2,1,2 +???????#??#?????##.? 1,1,4,2,2,1 +.?#.?#.?#?#.???? 1,2,4,1 +.?..#???????... 1,7 +??..#??#??#.?#???# 1,1,1,1,4,1 +?#.??????.?#. 1,1,2,1 +?.#??##???.??.#??? 1,2,3,1,1,3 +#???#.???#?.???. 2,1,1,2,1 +?#??#??????#????##?? 5,1,8 +?????#?##???????.?.? 2,12,1 +..?#???##?.?#??#???? 2,4,7 +??.#??##??#??? 1,1,2,4 +???.?#??.???????#? 1,5,1 +?.??????..???.???# 6,3,2 +?#???.?#.? 1,1,1 +.?.?????#?.????## 1,4,2,1,2 +#??#???#.???#?.? 8,1,2,1 +?.??#?#?#???#???? 11,1 +.#..???#??.#? 1,6,1 +.###??#??? 3,4 +??#??????#????#??? 1,8,4,1 +??.??...#?..??..? 1,1,2 +#??#???????#????? 8,4 +?#?.??#????? 2,1,1,2 +?????????..#? 2,1,1,2 +?????#?????#?#????. 3,5,1,1,2 +.#????#????#?? 1,7 +#.#.????????? 1,1,5,1 +???#??#?#?#?#????? 1,2,12 +?#????.??.?## 2,3,1,2 +???#??????..?#. 5,1,1,1 +#???###???.?#?#?.? 1,5,1,5,1 +?.?.?#?????? 1,7 +????#????###.??? 1,2,1,3,1 +?..?##???#?.?.??.?? 7,2 +?#?#??#.?#????.#.? 3,1,1,3,1,1 +.???#?.???#? 2,3 +?###???.?##??. 4,4 +.#??#???#?#?#??#? 5,1,6 +##?##??#??#?????. 13,1 +??#??#?.?? 1,4,2 +#??##?.??# 1,3,3 +??.???.??#???##?? 1,1,8 +?.??????#?????..?? 6,1,2,1 +?#??.??#.??.??#?#? 4,2,1,5 +.???#????# 1,7 +#???????#??#??? 3,1,4,1 +.??##?????...?#.... 7,2 +?.#???#..?.?#?? 2,1,4 +#?????#.?.??# 4,1,1,2 +?#?#????#????#? 9,2 +?????#????.??#?#??? 1,1,1,3,6,1 +.??...???.???? 2,1 +????#?.#??????? 5,3,1 +??????#???????#??# 1,2,3,1,6 +?#??.?#??#??.??? 4,3,1,1,1 +??..????#??#? 1,8 +..#?..?.?. 1,1 +?..#?..?..#???#???? 2,1,1,7 +?#???????? 2,1,3 +?.###????#?##??#.? 11,1 +??????#?.. 3,2 +.????#????#???#?# 2,8,1,1 +?.???.???#.?????#??? 1,1,1,2,9 +##??.????##?.?##?. 4,1,4,3 +???#.??#??????#???? 3,8,1 +?#??#????#.???? 6,2,1,2 +#??#????#??#?? 1,10 +#?????????#????. 1,1,8 +#?.?.#.??????# 2,1,2,3 +?#?#???????#... 8,1 +???.????.?? 1,2 +...???#??# 2,2 +??##.????#? 4,1,1 +.?#??#??????##?? 1,4,6 +??#?????.????? 4,1 +?.#.?????#?? 1,2,1,3 +.##????#??.?#?? 9,3 +?.?#???#??#.?.??.? 1,1,4,1,2 +?...?#?#????? 2,2 +????.#???????? 1,8 +?????#.?.????#??#??? 6,1,1,1,1,1 +??#????.???. 3,1,1,3 +?.???.?.??#?????? 1,1,1,6,1 +#?.?#..?????##?#?#. 1,2,2,8 +??##??..??.?. 3,2,1 +??????.?##.? 3,3 +??????##???????.?? 14,1 +??.??????###??.##??# 1,1,2,4,2,1 +????#???#??? 4,1,1 +#?.#??#?##.??..#???? 2,1,1,2,1,5 +??.##???#??# 1,2,3,1 +??#?#??.???#?#. 2,2,1,2,1 +?#.??????????#?? 2,5,1,1 +??.?.????? 1,1,1 +..#???.???? 4,1 +???????????# 3,1,1 +.???##?#??????.?.?#. 2,9,2 +????#????#???? 5,7 +.??##????.???#?.#??? 8,5,1,1 +?..????????##???#??# 1,1,1,2,10 +.??###?.??# 5,1,1 +???##??.?.??? 7,1 +##????##?#? 4,2,1 +?#?#??#???####????? 3,12,1 +??###??#??.?#. 9,1 +.?##?.??#?#????#?? 3,4,3 +.?#???#???.?.???. 8,1,2 +.?.??#?????#?#???? 1,11,1 +?????#??#?? 3,1,2 +?.??..????.#. 1,2,2,1 +?.????#??????#.#?. 1,1,2,2,3,1 +????.?#??#??.#???#.? 1,1,6,3,1 +.??#?.???????? 3,5,1 +???#????.? 1,1,1 +????#??###???#?##?#. 1,1,2,7,2,1 +..????#?.?.??????? 5,6 +??#??.??.###?#??.?? 3,7 +????????????? 1,6 +#.?##???#?? 1,4,2 +.???????.#?#?#??#?? 2,1,8,1 +..?.#.?##.??? 1,1,2,2 +?????????#.??? 1,7 +?..???#????.#??#??? 4,5 +??..???#????.?# 1,5,2,2 +.???#????#????????? 7,2,1,1,1 +??..???.?#??? 2,1 +.###?????..###?###? 6,7 +?.#.??.???#???# 1,1,3,1,1 +???.?#?????. 2,3,1,1 +.?#..???##????.????. 2,8,1 +???.#..#???? 1,1,2,1 +???#?##?.??#?##.?# 2,4,1,1,2,1 +???#????????#?.??# 1,1,1,3,1,1 +??##.????##??. 3,2,4 +???????#???????###? 12,3 +.???.?.?.?##???#?? 1,1,1,7 +.?#???..?#?? 2,4 +?.????#????## 7,2 +.??.?????..??? 4,1 +????#??????? 1,4,3 +?#?#???.?????????.?? 1,1,6,2 +??????#?#?????#????. 8,6,1 +#??????..????# 5,4 +?#??#?????#??.??##?# 2,9,5 +.?????..??? 4,3 +????????#???? 1,2,3 +????#???#.???####.?? 3,1,3,7,1 +?.???..???#?????.? 1,8 +?#?#?#??????.??#? 2,6,2,3 +?????##.#?. 1,4,1 +.#.??????##?#. 1,1,6,1 +?#?.????##?#??#???? 1,1,1,4,3,1 +??????????..? 3,1,1,1 +#.????##??.??????? 1,1,4,2,1 +?#????.?????#??##?.. 5,3,7 +.??.????#??????# 9,2 +???##??.??#??#.?. 4,3,1,1 +.????#??.? 1,3 +?#??#?????#?##?????? 8,7,1 +?????#??#??#.???#?#? 1,5,2,1,4 +?#?????#?#?##???? 1,9,1 +..???#.???? 2,1,2 +??##?#?#????#.? 6,1,3 +?#???###?.??#?? 8,4 +.##?#?????. 6,2 +.?.??##.???#?????? 3,2 +.??.??#??.????.?? 4,1 +????????..?? 6,1 +.?????#?#?#?? 1,9 +#?.?##?#?#??? 1,7,1 +??#???..?. 3,1 +#??.#??????#???. 3,2,5,1 +??#???..?##?#??.?? 5,4,2 +?...????..????#.??? 4,1 +??????#???#?. 1,8 +???.?????#?#?#?????? 1,1,1,1,2,8 +???.????.??. 2,1,2 +?.?.?????? 1,5 +.?.????#.? 1,3,1 +..?##????#???????## 5,2,2,3 +#?????#??.??.#??? 9,1,1,1 +?.##???.#? 4,2 +?#?.??##?????#.???? 1,1,4,1,1,3 +??????.??#??.#. 1,1,2,1,1 +?##?#??#..????..??# 5,1,1,1,2 +?#?#???#????????. 3,2,5 +??????#???##????? 1,11 +?#.??##??????.????#? 2,9,5 +?##???.?#??.???#? 5,2,4 +#?.?#.??##?..? 2,1,4,1 +?.?????.#??#???? 1,1,1,1,6 +????.??.?## 2,2 +??.#??#????# 5,2 +??#?.???#??#???? 3,5,1 +???..??#?.. 3,1 +??#?.????? 1,1 +##???.??.??#. 5,1,1 +.??????.?#????? 4,2,3 +???????.?????? 3,1,1,3 +.?.?????##??#??.#??? 1,9,1,2 +?????###??? 1,6,1 +????.###?? 2,4 +.?????###??.??????? 7,3 +?.#????#?... 1,2 +?.?#?.???#.?????.?? 1,1,4,4,1 +??????#??. 1,1,2 +.?.???##??? 1,5 +??????????#????? 4,1,3,1 +?##????#?###????? 12,2 +???????#????? 1,1,2,1 +???.#.?????.? 1,4 +..??#???##? 3,2 +??.?????#???????#.# 1,1,3,1,5,1 +??.???..?.???? 2,1 +???###?..?#??. 4,1 +?.???.????? 1,3 +#?#?????..??#..???? 5,1,3,2 +##??.???## 4,1,2 +?????..???.??? 3,2,1 +??#?#????.#?##?#. 4,1,6 +#.??#.##?#??????? 1,1,1,10 +.???##?#?#?????????? 13,2 +????.#..?#??#????.. 1,7 +?##??..??.?? 4,1 +?#?#?????.? 8,1 +.#???????????? 3,6,1 +???#?#????????#? 12,1 +.?#??.####? 2,4 +?#???##?..? 1,2 +?.??.?.?#???????.?# 1,2,1,6,1,2 +??????.?#. 1,1,1 +???.?????????.#. 9,1 +?#?###??#?#?? 10,1 +#.?.?#??#??? 1,1,5,1 +???????????#???##. 1,4,5,3 +?#.???????????? 1,1,4,1 +.????#???.????#?? 7,1 +.??????#????#?? 4,2 +..???????#?.? 1,4,1 +????????## 1,4,2 +??.?.?#??.????##??# 1,1,1,1,1,7 +#?..??#.???????? 2,3,7 +??#?#?#???????? 3,3,1 +?..??.?????#? 1,1,7 +#.??#???????? 1,10 +????..???#??.??? 2,4 +????????????.?#? 1,2,1,1,2 +???#???.?. 1,2,1 +??????????#??? 1,7 +???#?##?????? 6,4 +??##??.??#?#??.?? 3,6 +.?.#?#???..??# 1,3,1,2 +???????#?##??????#? 2,5,6 +?#..????.???#? 1,4,1,2 +.??#?.???#? 4,1,2 +?##????.?#??.??# 6,2,2 +????#?.???.???#??? 2,3,1,2,1,1 +?.?.?###???#.?. 1,5,1 +#?#?.??###?#??? 1,1,8 +???????????? 1,1,5 +??.???#???#? 1,2,1,2 +?#?.?.?#??.???#?? 1,4,5 +.#??????????##??#??? 1,1,10 +???.???.??..?##? 1,1,1,1,3 +??.#????#???#????? 1,2,1,1,6,1 +????????#??????? 3,3,1,1 +#??.#?.???. 2,1,3 +?????????.??#?? 1,5,3 +??#?.?#?#?.????? 1,2,5,2 +.##????##???#? 3,6 +.???????.? 1,3 +??.#..##???.#?#? 1,1,3,1,1 +?.#??#?.?#??# 1,5,4 +??##??.?????#??. 3,7 +#?#?????#?.#??.###?? 4,1,1,2,4 +#?????.????.?##? 3,1,1,1,3 +?#??#???.????? 8,3 +?.?#??#?..?#?# 5,4 +??#?#???#.????.. 9,1 +???#??##?##. 1,9 +.#..?.##????? 1,1,3 +??????..??#? 5,2 +.?.?????##??##??? 1,9,1 +?????.#??#?#??#?.? 2,9 +?????#???#?#?? 4,4 +??#.#????.##????#. 2,3,1,2,1 +??#?#.??.##??#????# 2,1,2,2,1,2 +.?.#?????#??.?????.? 1,3,3,1,2,1 +#????????#?? 1,7 +#?.??????#..?#??#? 2,1,1,1,1,6 +??#.?????#?#?##?. 2,11 +.#????#?.?? 2,2,1 +??????#?.?#.?#???..# 1,4,2,1,1,1 +??##??#.???#. 5,1,1,1 +.?#.?#?#?.?#? 1,4,1 +????#???##?????#?? 1,1,1,9,1 +?.??.????#?#?????? 1,8,3 +???#?#??.? 3,1 +#?.???.??#???##??? 2,8 +?#????#??? 3,2,1 +????.?#?.? 1,2,2 +??##??.???? 3,1 +??????.??.? 2,1,1 +???#?#.??.?..?#.?#? 5,1,1,2,2 +???.#??###??.?#???.. 6,5 +???????#??.?.??? 1,4 +????#?.????????# 5,1,1,1,2 +????#.???#???.?.??.. 4,1,1,2 +??#??#.?##??#.??# 1,1,1,5,3 +?#?.#?#?????### 2,3,1,4 +..#??..?.??.???#.?? 3,3 +...#????#.???#?##?. 1,2,8 +??#.#?#??..?..???? 1,1,5,1,2,1 +??????##???#?? 7,1 +?#??????.#.?#?? 4,1,1,4 +??????.?????????. 2,9 +??????#??????? 3,4,4 +#????#???#???#??? 11,2 +?#?.?#?.??????? 2,2,1,1,1 +?#????#??#???? 2,7 +?#?#????.??? 6,2 +??#??????? 3,1 +?.#?#????###?#????? 1,1,11,1 +?????#??#???##?###? 1,9,3 +??#????.??##? 4,1,3 +???????#???#? 2,6 +??#??#.?.????????? 2,2,1,4,1,1 +.##?????#?.? 2,1,2 +??##.?.????#?????? 2,10 +??##?.??????#?##???? 4,2,5 +.???#????##????. 11,1 +.?##??????#.. 4,3 +##.?#??#????#???? 2,7,5 +????#..?#?##??? 2,1,8 +..##??.?#?###?#??#. 4,1,8 +?.#?.???.???#.?? 1,1,2,2 +.#?#????#?.# 1,1,4,1 +?##??#??#?.###???#. 6,1,3,2 +?#?#.?????????###?? 3,2,1,1,6 +?????#???#???.???##? 2,4,2,1,1,3 +??##???#?.???. 1,6,1,1 +???##.?#????#?????? 1,2,2,3,1,2 +????.#???? 2,3 +???????.##??????#?. 5,2,5 +?###?.???#?? 3,1,2,1 +????????????? 1,6,1 +##????????.???? 2,1,3,1,1 +???#????##?? 6,3 +?.???????.?##? 4,2 +??#??##??##??#??? 6,7 +?####???.?.##??.? 6,3 +???.?#.??#? 1,2,2 +.?.?#????. 1,1,1 +.?#??.#????##??# 1,1,7,1 +???.???#???.?#? 2,1,3,1 +.????.?..?? 4,1 +??#?.#???.?#? 3,4,3 +???#????..??? 1,1,1,3 +???.???#???.?? 1,6 +.#??#???#?????? 2,11 +?......#?..?.????.. 2,3 +?.#??????#?# 1,1,7 +????#?#?#? 1,7 +..####.????? 4,3 +??#???#..?.??????#?? 1,2,8 +?#?????????...??#.?? 2,6,2 +??###??????.#???.??? 5,1,1,3,1 +???#.???????? 4,1,1,1 +?##?????#.?????#??? 9,4 +??#?#???.#?#??##??# 1,1,2,3,2,2 +?.?.#.?#??????## 1,1,2,7 +?????#?##??#.?#?? 8,1,2 +..?.?#????#????#?? 1,1,1,1,5 +????#??#?###????#.?? 1,5,3,2,1,1 +?#?#?#?.#????? 3,1,1,1 +?????????#? 2,4,1 +?#?????.??#?.?# 1,4,1,1,2 +???#???#.???.#??.# 1,2,1,2,3,1 +?..#?##????????? 6,2 +##???.??#????? 5,4,1 +??.?#???????#?#. 1,1,7 +?.??#?.#.?#?? 4,1,3 +.??????.????? 1,2,1,1 +?????#?#?#.?? 5,1,1,2 +.??????????? 1,2 +.????..#??#.? 3,1,1 +??.?#?????#. 2,1,3 +#?.?#.???..???.??#?? 1,1,2,3,4 +?.??#?#..#??#?? 1,1,1,2,1 +#?#????.????? 1,3,1,2 +???##???.#? 3,1,2 +????.???.???#??????# 2,1,1,4,1,3 +?#?.?????##????#? 1,1,1,7 +?.#???#?.. 1,3 +??##???#.?.??? 8,1,1 +??#???#???? 4,2,1 +???.?.?.?..???? 2,1 +??.??#..#?#??#??#?? 1,1,10 +???#??.?????##??#. 1,3,1,7 +????##??..?.??? 4,1 +?.??.#???#.??? 2,5,2 +?.?##????#??. 1,2,5 +???????#?.#?# 4,1,1,1 +????#?#..?#?? 1,1,1 +?????.??.?????#???? 1,2,1,2,7 +#???...??????#??? 2,4,2,1 +#?????#?????????##. 7,3,5 +?..???##????? 1,6 +.#??#????#?#?????? 2,1,8 +..??.???##?##?#.?? 2,10 +??????????????????## 3,2,1,5,1,2 +##???#???? 7,1 +?.?..?#????.. 1,5 +?.?#??????? 1,5,1 +????.?#??#..?#? 3,4,2 +?????#?????.???#?? 2,5,6 +?????###????..???? 7,1,2 +???..???????.. 3,7 +???#..??#?????.. 2,3 +??.???#???? 1,1,1 +.#????#??#??. 9,1 +???????...??##? 6,4 +??????.#??# 5,2,1 +?.?????????????## 2,1,1,2,2 +?????????#? 2,2 +???..?????????? 1,3,2,1 +???#?#???#????? 8,1 +?#???#??.?? 6,1 +?.#???#?.. 1,6 +#?.?#?????##?. 1,8 +?#?#?#??.??.?.?# 6,1,1,1,1 +???????#???###.?? 8,5,1 +??#??#????????#?#?? 7,3,4,1 +??#?????????.?#. 1,5,1,2 +.##???????.?##?? 6,3 +????#..#?#? 4,1,2 +????????????????.? 7,6 +#??#.???.????.???#?. 4,1,1,1,4 +.???#???..???##????? 6,1,3,3 +???#?...???##? 2,5 +.???#.#.#?.?.?#? 3,1,1,1,1 +?.??#??.????# 4,1,1 +###?#??..#.?????? 6,1,1,1,1 +??#?????.????? 6,2 +?????..#??#?. 4,1,1 +#????#?#?##?.??.#?? 2,8,1,2 +.???.?.??#??? 1,4 +?#??#????#?#?#??? 2,1,9 +.??#??####??..??#?.? 10,2 +#???.????? 1,1,1 +??????#????.?..# 1,5,1,1,1 +??.?#.??.??? 1,1,2,1 +?.??..??#?. 2,2 +????##.????. 1,3,4 +?.???#..??#????. 3,5 +.#???.?.#??#????#? 1,1,1,10 +?.???.?#?#??? 1,6 +.???.??.#? 1,1,1 +??#?#???#.??#.?? 7,1,1 +..?.#??#?#??#??? 1,2,1,1,3 +..?#?.#?#? 3,1,1 +?..???????#..##?# 1,1,2,1,4 +.#??.?#??###?#?. 3,9 +??.??#????##???? 1,12 +??????##?#?##???#.? 2,11,1 +????.??##??? 2,1,3 +.??#.????#?? 3,1 +.??#????#???#? 2,5 +.??...?#?.? 2,2,1 +?#??.?.##??#??#.?..? 2,1,8,1 +.##?.???#?????...? 3,6 +?.##????###??#?????? 2,6,3,2 +?#???#??#??????? 10,2 +.????#??##?? 3,1,2 +??#??????. 1,1,1 +?#???.?????#?#??#?? 2,1,10 +#???????#?? 1,2,1 +.????????. 2,1,1 +#????.??##??#??.??? 1,1,1,8,3 +??????#??#???????#? 2,12,1 +.?.??#????.? 4,2 +.?.????.??##??#.? 1,1,4,2,1 +.??#???.##??? 1,4,2,1 +??????###??##???.?# 2,5,2,1 +??????###??#?.#??? 1,1,7,2,1 +.???#???#.???????## 5,1,1,4,2 +?.?#.?####???.?#???? 1,7,5 +#????.????.#??# 1,2,4,2,1 +.??.#??#.#??.? 2,1,1,2 +??#.????#? 1,1,1 +.#.?.?.??? 1,1,2 +??#..?##??. 3,5 +?#????#??.????##..? 7,5 +.???.??.??.??? 2,2,1,1 +?#??.#?#?.?? 3,4 +????#?.???.??.#??# 6,2,2,2,1 +????.??????.??#. 2,3 +##???.?????.#???#. 4,1,1,2,1 +??...#???#???#? 1,2,6 +???.??#?#.?? 2,1,1,1 +?#??#?#????.?? 5,1,3,1 +??#??#????????# 6,1,2 +???????.????..?#.?? 1,3,2,1 +???#?..?????. 4,1 +??.??.????#?#.?#.# 1,1,7,1,1 +?.???#?????##...?# 1,1,1,1,3,2 +???##..??????????#? 3,8 +????.????.#?..#? 4,1,2,1 +#?..#?#?????.?### 1,3,2,3 +???????#??#.?. 1,7 +???#?.??#?#??.#?? 4,4,2 +??#?###?##?#?????#?? 3,3,11 +????#?.??.#??#.? 4,2,4,1 +.#???#.?.#?.#. 3,1,1,1 +?##.???.???????#?? 2,8 +???.??.#???.??. 1,4 +.#..??????#?#?##?? 1,1,2,3,2,1 +?#.?#???.??.?#??? 2,1,1,1,4 +??#??#??#????#.# 1,3,2,2,1 +??#?#?##????#??. 6,5 +????.?????? 3,1,1 +#????##?#??#??#?#?.? 9,2,1,2,1 +?.??#?#???? 1,5,1 +?.?#.??##??# 1,1,7 +.?#????#?#?????#? 5,5,3 +.???#?#??????###. 1,1,1,2,3 +#??##.?.?.?????#?? 5,1,1,1,1,3 +??###?##..#?#??. 6,1,2 +.??.???.#???? 2,3 +??????##?? 1,4 +#?#.#?.#??#?##?????? 1,1,1,1,7,2 +#?###?#?????.??.???? 5,2,1,1,3 +?????##????.??. 1,5,1 +?.?????##??#?. 1,8 +?..??.?##?..?#?#.?? 1,1,3,2,1,1 +##?##?.?.#?##? 6,4 +#?##??.??. 1,3,1 +???##???##??#?.???? 3,6 +??.??????#..????? 1,1,1,4 +????.#?????????? 1,8 +#?.?.##.???#??. 1,2,1 +??????????.????? 1,1,3,1,3 +.??????????.. 2,5 +?#??#?????.?#?#? 2,1,1,5 +???.#?#??????..?.#? 1,1,5,1,1,1 +??????????????.? 1,5 +#?#??.?.?#???. 5,1,2 +??????.???## 3,1,5 +??#??#?#.??#. 7,3 +.##???#.???? 2,3,1,2 +#?#???#?.##?#?.? 4,1,5,1 +.?#????.????#??#. 3,8 +??##?#?.#??#???? 1,2,2,1,5 +?.?#..##?.?? 1,1,2,1 +.?##???..?#? 5,1 +??#??#??.#.? 1,4,1 +##????#.??#?? 2,1,2 +??.??.???#????#.?#.? 1,1,3,2,1,1 +???.?#?##???? 1,1,2,1 +.???#???????#?? 5,1,2 +???.#??##??#??.??#?? 9,4 +.??????#.?#??????. 3,3,2 +???????##?#?##?. 1,1,6,3 +?#.?#??##???##?.. 1,7,3 +.???.#???.?#?#?? 1,1,5 +.?#??????????? 2,4 +.??????????????? 7,1,1 +.#.??#???#??. 1,5,1 +?#.????..#?#.?..#.# 1,4,3,1,1,1 +?????.?#?? 4,1,1 +?.??????#?????????# 1,6,3,1 +.????????.#??????#?# 2,5,2,4 +.?????????????#? 3,4,4 +.##..??.?? 2,1,1 +??#?#????.?#?#??.?? 7,4,2 +??.?.??###.?#? 1,1,5,3 +?#??.#??#??.?#??# 3,1,4,2,2 +????????#?#????#?# 1,3,1,3,2,1 +???#??#??????.??# 1,2,5,1 +#??#??#?#??#?.????. 1,3,1,5,2 +##?#??.??#??#?? 4,2,1 +.#?#??????..#?? 1,1,3,3 +?????.????.? 4,1 +.??????#?? 2,4 +???#??#?#???#?.?# 8,3,1 +.??###.????###.??#.? 4,7,1 +#??#????????#???#??# 2,2,1,1,7,1 +?..?##???#?.?? 4,2 +??????#????.#..? 2,3,1,1,1 +??#?#?#??##?????.??? 11,1 +.?.??????#.?????? 1,3,3,2 +?..#.?.??.??##???#? 1,1,2,7 +?????#.??#.?#??? 2,3,1,1,1 +???##?.#.?.????#???? 1,2,1,1,7,1 +.??#?.???. 1,2,1 +?????#??#.?....?? 5,1,1 +??##??.?#?.????#?##? 1,4,3,1,6 +??.????##?.#??. 1,1,3,1,1 +?????##?.#.#?## 1,5,1,1,2 +?????.?????..?.? 2,1,4,1,1 +?#?#??###??.#?#?? 8,4 +.#????#??#.?????# 3,5,1,1,1 +????##?###?.?#? 1,1,7,1 +??#??#??#????.. 1,4,6 +?#.???.??. 2,1,1 +.?#??##????? 2,7 +#??.##..#?..#?? 3,2,1,3 +???.?#?#??. 2,4 +?.?????#???? 3,2 +???.??#???#??##?#??? 1,13 +?.#?????#?.#? 4,2,1 +#?.???#.????.? 1,2,3 +????.#??.??.?#? 2,1,2,1,2 +????.?.?#?#??#?# 1,1,1,6,1 +..????#?.??? 6,3 +.??????????... 5,3 +.??#????#???.????? 10,1,2 +#?.???#?.??#? 1,4,1,1 +??#???###??.???. 9,1 +#?##.????.#??#?#???# 1,2,3,8,1 +.??#???????#?#??# 1,1,11 +?..??.??????# 1,1,7 +??.?#??..????..??? 1,2,1,1,1,1 +???#??##??????### 1,1,6,3 +?#?????###?#???. 2,8 +?#?#.????#..??? 4,1,2,1 +?.?.?.??#????..#..? 7,1 +????.?#?????. 1,6 +.??#.???????##??#?? 1,2,7 +..????????#?#? 1,2,4 +###?.??.????????.? 4,1,3,2,1,1 +?.?.??#... 1,1,1 +#????#????????? 1,1,3,2,1 +.?????#?.? 2,4 +?#?#??#?#???..#?#??? 11,1,1 +???#?.##??..#??????? 2,3,1,1,4 +.#?##???#?.?.? 1,7 +#???#???.? 1,4,1 +.???..??...?? 2,2,1 +???#???????..?. 5,1,1,1 +???????.?.#??? 5,4 +#.?????.?.#???.?#? 1,1,1,1,3,1 +##??##?#????#????.? 2,5,1,1,2,1 +??.#???#??#???## 1,13 +#?##.??.?#??#? 4,1,1,2 +?#???#?##????? 1,1,6,1 +#?.???#?#??#???#???# 1,1,1,6,1,1 +??#?#???.#?.#????.#? 5,2,2,2,2 +#.#?.?##???.#?? 1,2,4,2 +.???..??#?#? 2,4 +?#????#?????????#? 10,1,2,1 +.??..###???#?#? 2,9 +?.?????#???????? 4,1 +??.???#??.?. 1,5,1 +?????#??.?.?#??? 2,3,4 +??#.?..??#?#?.?? 2,6 +?#?#????#???? 1,1,7 +????###???#? 1,3,2 +??.#?#?????#?#??? 1,14 +?????.?#?????? 2,2,2,3 +#??..#?????#?? 3,5,1 +?#??#?#????.???#?.? 10,3 +#??#.????????????? 4,8 +??##?#??#??# 9,1 +???#???##?#??? 1,3,4 +.?.##?#?????.#? 2,5,1 +?..????#???#??????? 1,5,1,1,1,1 +????..#????? 1,1,1,1 +??##????##?##??## 12,2 +??#?###.?????..? 5,3 +????.???#?? 1,2 +???#?#???.???..#? 9,1,1 +?????#.?#..?.? 2,1,2,1 +??#?#..?#?? 4,1,1 +?.?.#????#?#??????? 1,5 +??????#??.?????? 9,3 +???.????.???#?#. 1,1,1,1,3 +??####???.#???? 1,6,2,1 +?#?.?#?.#. 1,2,1 +?#??#?#???#????#??#? 13,4 +???#???#?#?#??#????? 1,12,1,1 +?.???#??#?#? 1,1,6 +????.??????#. 1,6 +#??..?#?.?. 3,3,1 +?#?###?#.? 1,5,1 +????###???#??????? 1,10,1 +?????.?.?#? 1,1 +????#???#??##???# 2,13 +#??#??#..??..# 2,4,1,1 +??.??.????..??#.? 1,2,1,3,1 +#.???#???.????#???# 1,5,1,1,2,1 +?#????#?#??? 9,1 +????..??#?.???. 1,1,3,1,1 +???#.???#?.? 1,4 +??#??.???????.# 3,1,2,1,1 +.????????????#? 1,9 +?#????.#?.?#??? 2,1,1,2,4 +.?.?????#?..##.? 1,4,2,1 +?#????##.???#? 3,3,1 +??.?.?.???.?###??? 1,1,1,1,5,1 +.???#???????? 1,2,7 +???#.????? 1,1,4 +??.#???????? 1,5 +??.##??#.??? 1,5,1 +???#????#?????????? 12,5 +????.?#?.. 2,3 +##??#?.????#?????.? 2,1,2,2,2 +#..???#???## 1,1,3,2 +????????#?#?? 4,4 +#?????????????. 1,6,4 +??.??##??#??????# 6,4 +????#???????? 5,1,1 +?#.??#...??? 2,1,1 +???#??#?.???. 7,1 +??..?#?.?. 1,1,1 +?.????####????#??? 9,3,1 +?#.???.?#??#????? 1,1,2,7 +.???#.?#?.? 1,2 +#?#?#???????.? 3,8 +?.#????????.?.??.#. 1,7,1,1,1 +???????#????.?#. 10,2 +??.?????#? 1,5 diff --git a/day_12/input.txt b/day_12/input.txt new file mode 100644 index 0000000..c5bec3a --- /dev/null +++ b/day_12/input.txt @@ -0,0 +1,6 @@ +???.### 1,1,3 +.??..??...?##. 1,1,3 +?#?#?#?#?#?#?#? 1,3,1,6 +????.#...#... 4,1,1 +????.######..#####. 1,6,5 +?###???????? 3,2,1 \ No newline at end of file diff --git a/day_12/part_1/Cargo.toml b/day_12/part_1/Cargo.toml new file mode 100644 index 0000000..10dc197 --- /dev/null +++ b/day_12/part_1/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "day_12-1" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +regex = "1.10.2" diff --git a/day_12/part_1/src/main.rs b/day_12/part_1/src/main.rs new file mode 100644 index 0000000..637cc2f --- /dev/null +++ b/day_12/part_1/src/main.rs @@ -0,0 +1,40 @@ +use regex::Regex; + +fn main() { + let input = include_str!("../../input.txt").lines(); + let regex = Regex::new("#+").unwrap(); + let mut result = 0; + + for line in input { + let mut parts = line.split(" "); + let field = parts.next().unwrap().split("").filter(|i| i.len() > 0).collect::>(); + let instructions = parts.next().unwrap().split(",").map(|i| i.parse::().unwrap()).collect::>(); + + println!("{:?} {:?}", field, instructions); + + let unknown_count = field.iter().filter(|i| i == &&"?").count(); + for i in 0..i32::pow(2, unknown_count as u32) { + let mut current_field = field.clone(); + let mut pos = 0; + + for (j, spring) in current_field.clone().iter().enumerate() { + if spring == &"?" { + current_field[j] = if i & 1 << pos > 0 { "#" } else { "." }; + pos += 1; + } + } + + let field_str = current_field.join(""); + let pairs = regex + .find_iter(field_str.as_str()) + .map(|m| m.as_str().len() as i32) + .collect::>(); + + if pairs.len() == instructions.len() && pairs.iter().zip(&instructions).filter(|(a, b)| a != b).count() == 0 { + result += 1; + } + } + } + + println!("Result: {result}"); +} diff --git a/day_12/part_2/Cargo.toml b/day_12/part_2/Cargo.toml new file mode 100644 index 0000000..2d1aec9 --- /dev/null +++ b/day_12/part_2/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "day_12-2" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +regex = "1.10.2" diff --git a/day_12/part_2/src/main.rs b/day_12/part_2/src/main.rs new file mode 100644 index 0000000..572f5d7 --- /dev/null +++ b/day_12/part_2/src/main.rs @@ -0,0 +1,76 @@ +use std::{thread::{self, JoinHandle}, time::Instant}; + +use regex::Regex; + +// i could just figure out a proper way but bruteforce is funnier +// but also its still way too slow so ill fix it tomorrow maybe + +fn main() { + let start = Instant::now(); + let input_orig = include_str!("../../input.txt").lines(); + let mut inputs: Vec> = vec![]; + + let threads = input_orig.clone().count(); + for i in 0..threads { + let lines = input_orig.clone().skip(i).step_by(threads).collect::>(); + inputs.push(lines); + } + + let mut handles: Vec> = vec![]; + for input in inputs { + let handle = thread::spawn(|| { + let thread_start = Instant::now(); + let mut result = 0; + let regex = Regex::new("#+").unwrap(); + + for line in input { + let mut parts = line.split(" "); + + // i fucking hate rust fuck this ownership garbage what is this + let field_in = parts.next().unwrap(); + let field_str = format!("{field_in}?{field_in}?{field_in}?{field_in}?{field_in}"); + let instructions_in = parts.next().unwrap(); + let instructions_str = format!("{instructions_in},{instructions_in},{instructions_in},{instructions_in},{instructions_in}"); + let field = field_str.split("").filter(|i| i.len() > 0).collect::>(); + let instructions = instructions_str.split(",").map(|i| i.parse::().unwrap()).collect::>(); + + // println!("{:?} {:?}", field, instructions); + + let unknown_count = field.iter().filter(|i| i == &&"?").count(); + for i in 0..i128::pow(2, unknown_count as u32) { + let mut current_field = field.clone(); + let mut pos = 0; + + for (j, spring) in current_field.clone().iter().enumerate() { + if spring == &"?" { + current_field[j] = if i & 1 << pos > 0 { "#" } else { "." }; + pos += 1; + } + } + + let field_str = current_field.join(""); + let pairs = regex + .find_iter(field_str.as_str()) + .map(|m| m.as_str().len() as i128) + .collect::>(); + + if pairs.len() == instructions.len() && pairs.iter().zip(&instructions).filter(|(a, b)| a != b).count() == 0 { + result += 1; + } + } + } + + println!("Thread result: {result} (Thread finished in {} seconds)", thread_start.elapsed().as_secs()); + return result; + }); + + handles.push(handle); + } + + let mut res = 0; + for handle in handles { + res += handle.join().unwrap(); + } + + println!("Final result: {} (After {} seconds)", res, start.elapsed().as_secs()); +}