diff --git a/2023/day12/input b/2023/day12/input new file mode 100644 index 0000000..911109b --- /dev/null +++ b/2023/day12/input @@ -0,0 +1,1000 @@ +????.??#.?????#? 1,1,1,1,6 +??.####?.??#?#?.?.?? 4,6 +????????#?..? 2,7,1 +??.##???????? 2,3,4 +.####??#???#.????.? 11,4,1 +???..????.????#?? 1,1,1,1,5 +#???.#??#??#????# 4,1,5,1,1 +?...???##?????#?? 1,12 +?.???.????????? 1,1,1,2,1 +???.?#.#??#???.???? 3,1,1,3,1,1 +???.??????.???# 1,5,1,1 +??#?.#??.?? 2,1,1 +?#?.??#?###?.?.?#.# 1,3,4,1,2,1 +???????#??????#?. 9,6 +?#???#???#?? 2,2,3 +????.???????? 3,2,4 +..????#?.?? 1,4,1 +.???????#? 1,4 +??#???????#?. 1,1,1,5 +?.??#?????????#? 1,13 +????.?#???.. 1,1,1,1 +#.?#?##???#??.???? 1,9,4 +.???#???.??##? 3,3 +???###?##??..?.? 9,1 +#?.?#?????????##???? 1,13 +???#.?????#???.??.? 4,1,7,1,1 +??????#??.??.? 2,1,1 +.????#?????? 7,2 +??????#..???? 1,2,1,1 +?.??#.#.#?##? 1,1,1,4 +.??.#??##??#.#???? 1,1,6,1,1 +??#??#???????#??. 8,2 +??.?#?#??#??? 1,5,1,2 +????????#?..#???? 10,3 +##??#?????????#? 2,12 +?????##????##?? 1,5,1,2 +?????????????? 1,7 +.??#?#?.??#?#.? 6,3,1 +?.?#???#????#???. 4,4,1,1 +????.#????#??????.? 1,1,12 +?#???#?#?#.# 1,1,5,1 +?.??????????????? 1,9 +?#????.???#?##?# 2,1,1,1,6 +.##????.?? 2,1,1 +##?????#?.?# 2,1,2,1 +?##.#?.#???#?#? 2,2,3,1,2 +###??#?###??? 10,1 +??..?#????#????? 1,5,5 +#?#????????#????? 1,1,2,1,6 +????#???###???.?? 6,4,1 +#.??????#???#??? 1,10 +??#?#????#?#???.???. 5,9 +????#?#???.???.??? 4,1,1,2,2 +?????###??? 2,3,1 +?.#???.#??.# 1,3,1 +.#????..??????? 1,1,1,4 +#.????#????.#???#?? 1,4,1,1,5 +.#?????..?#?? 3,1,4 +?.#???#?##.? 1,5 +?.#?#?????#??##??# 1,1,1,6,1 +?.??.#?###?????.? 1,2,7,1 +??#???##?#?#??# 1,3,6,1 +?????.??#?##?#?? 3,7 +.?.??????? 1,1,1 +?.??##????..???..? 6,1 +???#??.#???#.#? 1,4,1,3,1 +????????#?##? 3,5 +?#??..????????.????? 3,3,3,3 +...?????????#? 6,1 +#???#?.?#?#?###? 1,2,8 +?.???#?#??.????????# 1,1,1,3,7,1 +?.#????#.????? 1,2,2 +?.?#?#????#???.???. 1,4,6,1,1 +?????#?#???? 4,2,1 +??..?#?#?. 1,3 +????#?????#???????? 5,4,3 +???.?#?##?.#??.??.? 1,1,4,2,2 +##??#???#??#? 6,2,2 +??###??#???? 8,2 +?#????##?#?. 1,5 +..??##??##??.?#?. 1,7,2 +????????#??##???#?. 11,3 +??#??????????## 1,2,2 +???.#?#??..???#?#??? 1,5,5,2 +?#???.??#??#???#???. 2,10,1 +??.##???#????? 1,6,2 +.???##??..??? 6,1 +#????.???#?#??#.??? 1,1,9,3 +..???????###.? 1,6,1 +???????#??.?#?.. 5,3 +#???????????#?. 1,9 +????#????? 2,2,1 +??.???.#??#?.#??? 1,2,2,2,4 +??#???#?.?..#???.?. 7,4 +.???#??.?# 1,1,1 +?#?#??###? 5,3 +????#??#????.??#??. 9,1,4 +#???#?#??????? 7,1,1,1 +?.##??#??#.?#?? 2,4,2 +???#?#???.?#?.? 6,1,2,1 +##??.#???#?.# 4,1,1,1 +??????????.?????? 2,1,1,6 +?##???#.... 3,1 +.???.??#.?.# 1,3,1 +??.??#???? 1,2,2 +##??????#??????? 2,1,8 +?.?????#?????.???.? 2,1,1,3 +##..?????.??.. 2,1 +???##???#?.???#??. 7,4 +?#??#?#?.?.?#.? 1,1,2,1,1 +.#??#?##?##?? 7,2 +??.????????#???##??# 3,11 +#????#???????#???? 2,1,2,1,1,1 +?????#.???#??#??? 3,1,8 +?????#??#??#??#????? 6,7,1 +?#????#????.?# 2,4,1 +??#?#???.??#?##???? 2,3,6,2 +.#???#???#?????.#??? 12,4 +?.?.?.??????#???. 1,10 +???????????#?..?. 10,1 +.##??#???.??.?#? 2,1,2,1,2 +?.?.???##??###??. 6,5 +?#????.???? 4,1 +?.??????..#??? 1,5,3 +##?#?#??.?? 4,2 +????????.???????.# 7,1,1,1 +?.?.??##??.##?#?# 1,1,4,6 +????#.#?#???.#??? 3,1,5,1,2 +?.???..?.#??? 1,2 +?#???????? 2,1 +?????##?.???.?? 7,3 +?#?#?#?#???##???.#? 8,1,3,1,1 +.??####.????#?? 6,2,4 +#?#?.???.?..?? 4,1,1,1 +?????#?#???#?? 1,1,8 +?#..?##???????.?#??? 2,7,1,3 +?.?????#??? 1,2 +??#?#??#?? 2,1,3 +.?#????#.???? 6,2 +??.?.????.?#???? 1,1,2,1,2 +??????#?????#???? 14,1 +????#???#???? 5,3 +?.????#.?? 1,1 +?#??.??????##?? 2,6 +#??#????##?????#? 14,1 +#...??????#???###?#? 1,1,12 +?.?#????????#..?#? 1,1,5,1,2 +???.?????#? 1,1,4 +??#??.?.??..##?? 3,1,4 +????.??####???????#? 1,2,7,5 +.#?...?????#?? 2,1,1,3 +?#??.???.???#?? 4,2,1,2,1 +????.?.????#?#?.?.? 4,1,4,1,1 +..?.?#???#..??#???? 5,5 +?.??????????.?.?#.? 1,8,1,2 +?#?##???#?.???????.. 8,5 +.??#???#????????? 9,2,1 +???##???#???#??????? 10,8 +??#???.?.?#??.? 1,4 +?????.???? 4,2 +??????.??? 6,1 +??##??????? 6,1,1 +.????????#?#??.??? 3,5 +?#????????#### 6,6 +????????.????#.. 1,1,2,1,2 +?#???.??#????.?? 2,5,1,1 +.?????#?##????????? 16,1 +?.???#?????#?#?? 1,1,2,4 +???????.?#? 4,1 +.??#???#??? 8,1 +#???#?#??. 1,1,4 +??.???.?#?#??. 2,6 +???.??#.???# 1,1,1,3 +?#.?#?#????.. 1,7 +#???????#???.? 1,2,5 +#.???#?.?????#??# 1,5,1,4,1 +.???##.??.? 4,1 +????#????##??.?#?? 3,4,2 +?????#?????#.. 6,1 +???.#??#.?# 1,4,1 +#???.???#????.??#?? 1,1,1,6,1,1 +?#??#????? 1,2,1 +?.?#?#?????#????..?. 1,4,5,2,1 +.??#????????????? 1,11,2 +???????#.??.#????? 2,1,1,1,1,6 +????..?.#? 1,1,1 +??#?.?.#???##??# 1,2,2,2,1 +?????????..????#.?#? 1,1,3,1,1,3 +???????#??????????? 1,1,8,2 +??.??#???.??..?#?. 3,2 +.??????????#..???? 1,8,1,1 +?#?.???#?#?? 1,1,1,1 +??#?..???#???# 4,4,1 +#?????.??????###??? 2,1,1,1,5,1 +?.???#???#?????. 1,1,4,6 +###..??.?#?#.##??#? 3,1,3,6 +????.#?.?????? 1,1,1,5 +?#??.?.?#.#??..??? 1,1,1,1,3,1 +#.?.#.????#??.?#???? 1,1,6,5 +#???.?????????#???#. 1,1,11,1 +?#.?#?????. 1,2,4 +??????????.????#? 3,6,1,3 +??#??#??####??? 12,1 +??.?.??.#?#?#?#. 1,1,1,7 +??.??#??????#?#?#??? 2,14 +?#???.?????????. 3,5,2 +?.?.?#??#?##???.?## 1,1,3,1,5,2 +?.?#???????????? 2,6 +?#????#????.?..?. 6,1,1,1 +?...?#??..??#.?.?? 1,2 +.?.??#??#???#. 1,9 +??????????.?? 1,4,1 +###?..#?????#?#?#?? 3,12 +?????#?.?#???#? 1,1,1,7 +??#???#????#.???#? 2,2,3,5 +??#?#.#.#?????? 4,1,1,3 +?????#.#.? 2,3,1 +???.??????.?. 3,1,1,1 +#?????#?#. 5,1,1 +????.?.??. 1,1,1 +??##?.#?#.#?##?? 1,2,1,1,5 +.?..?#.????#.? 2,1 +??.??#??.##?????.. 1,4,6 +#?..?..??###???#??# 2,1,1,7,1 +.??##??#???.????? 1,5,1,1,1 +.?#?????#???#?.? 2,4,3 +?#?##??#????#???.? 12,1 +???.?#??.?? 1,3,1 +.??#.#.#???#?? 3,1,2,2 +#????????###?.#??? 1,2,4,2 +?????##?##???.????? 1,10,1,1,1 +.?#.#???????? 1,2,3 +#?#????##??#?#????? 1,2,1,7,1,1 +#.#???##???#?#??##? 1,1,14 +#.?..????#???? 1,1,5,1 +??#???#??###.??#??? 3,6,4 +#???#??????????? 1,7,1,1,1 +??#?#?????#????? 10,2 +???????#??? 4,2 +.???.??????#?#?.??# 1,1,1,8,1,1 +#?.???..???#?#.?# 1,2,1,3,1 +??.?#..?.#?? 1,3 +?##..??#?##?#?? 3,1,8 +???..????#? 1,4 +#.#?#.??#????#? 1,3,1,1,1 +?#?#??????#?? 2,2,2,3 +.??#?#???????.??#? 1,5,2,1,2 +?#????#????#?.? 1,8 +???#?.??????...? 3,2,3 +.???#???##? 3,2 +#???#.??#???.?#???? 2,2,1,1,1,5 +???##???.#???????? 1,2,1,7 +#?????.?#?#?. 1,1,4 +??????.?#?? 4,3 +?#?.??????###?.?# 1,2,6,1 +?#??.????#?#??? 3,6 +#???????????? 4,2,2 +.###.??#?#?.#???##? 3,2,1,7 +?.?##????????.???# 10,1 +??.?????.??#???????? 1,5,5,2 +???.?.??.. 1,1,1 +?.##?#.?#.?.? 4,2,1,1 +#??#?##?##?#???? 10,1,2 +?##??.?#?.?? 4,1,1 +??????.#??#???#??. 1,1,10 +###?????#?#??##.?? 11,2,2 +??.#??????.???#? 1,3,2,1,2 +##??????..????.? 2,1,1,4,1 +????#.?#.?#?.#? 1,2,1,1,2 +.???#..?.??#? 1,1,1,4 +????##???.?.?#???.? 7,1,4 +???.#???????? 2,3,5 +??#..#??#? 1,5 +#???#.?..?. 2,1,1 +??.#??????#.??????## 2,5,1,1,6 +??#?????#???? 3,1,1,1 +?#????????##? 1,2,1,5 +.?????..??? 3,1 +???##???.?.#?..?#? 5,1,3 +???#????.?#? 3,1,2 +????.?#??.#? 1,1,4,2 +???#.??##?#?.?#?? 2,5,1 +.?#??????#?..#.?? 3,2,1,1,1 +.?.??##?#?#?????.#?? 1,10,3 +???..?#???#?? 2,5 +?#?#.??????????##.#? 3,6,5,1 +????####?????? 7,2 +?#??????#??.? 1,7 +????????#?????#??. 3,4,3,2 +??..#?##.? 1,4,1 +??.?.#?#??????#??#? 2,1,1,1,5,2 +???.??#???#??#?# 1,2,7 +??????????.?##???? 1,1,1,1,6 +#?.??#???.???#??? 1,3,1,1,4 +????#?#?.??#??? 7,1,1,1 +#??????#?? 1,1,1 +?#????#.?. 2,3,1 +?#??#.????. 3,1,4 +??????.??#.?##? 6,1,1,2 +???#?????????#? 1,1,1,7 +?##?????.?#??.?#???? 4,1,4,1,1 +.????#?#??#?#?.#??.? 10,3 +?#??##?##??#????.? 6,2,1,1,1 +??????.??????? 2,6 +.#?#??#???#? 6,2 +.???#??#??????#??. 10,3 +????.#?#?##???#? 2,3,2,3 +?#??#???.??#???? 8,3 +#??.?????.??#?#????# 1,1,1,7,1 +?#?#??.???#?????#? 4,1,8 +????..#?????#?#? 1,1,3,5 +?#???##?##?#??????? 12,2 +#??#????.??.#??. 1,3,2,2,2 +???#??????#???? 6,3,1 +?????.??#??#???. 1,6 +.??#??..???? 1,3,1,1 +.???.???#??.?.?.?# 1,1,2,1,1,2 +???????##??##??. 1,1,2,3,2 +???????????##???..?# 12,2,2 +???##?#???#.??. 9,1 +#.??..??????? 1,2,3 +??#??#?#??#??.?? 1,8,1 +.#??.??#???.??? 1,6 +???#??????#??###?? 2,1,1,1,6,1 +???..??###?????? 3,6,2 +?.?#??????.?.?????.? 3,2 +???.##???? 1,4 +??#???????#???## 3,6,2 +#?#.?#??#?#??#?##??? 1,1,13,1 +?#?#???????? 4,3,1 +?.??.#???? 1,2 +?#.???????.? 2,1,1,2 +?##?????.????.? 7,2 +#?.??????#?.?? 2,3,2,1 +??????#?.#.?????. 1,5,1,1,3 +.??????..?? 2,2,1 +###????#?? 3,5 +?#?..#?????#? 3,3,1,2 +#.#.?????#??.#?.? 1,1,6,1,1 +?.#??#????? 4,1 +????##??#?.??? 7,1 +?.?##?#???? 1,7 +??.?#???.?#?? 3,1 +???#?????#??.??????? 6,4,1,3,1 +?##?????#????? 4,2,2 +.##?.#??.#.?? 3,1,1,1 +#??..?#??##?#?? 3,6,1,1 +???#??.#.?#?? 1,2,1,1 +????#???.??? 6,2 +???#.??????.?. 2,1,4 +???.##????#??#? 1,1,2,1,2 +?#????#.???.????.? 4,1,1,1,1 +##??#??.?. 5,1 +.?.#?????# 3,1,1 +#??????.?#.??? 6,1,1 +????????#?#??????. 4,11 +.?????#??? 2,2 +.?#?#?#.?#??? 6,3 +?#????????..?#?? 2,2,4,3 +?##?#??????? 2,3,3 +?.????#..?#?.??. 1,1,3,1,1 +???????????? 7,2 +..?.??????? 1,1,3 +?##?#.?.???? 4,2 +.#?.?.?.??????#?.?? 1,1,1,1,5,1 +.?.??.?#???#.? 2,1 +.???#???????###. 1,3,1,5 +??#?##?????.?? 4,1,1,1 +#.??.#?#??.?..??? 1,2,4,1,2 +??##???????.#? 7,1,1 +?#?#?##???.?#??.? 1,6,1,1 +?#?.?.???.?##????? 3,1,5 +#?#??.?????.???#?? 1,3,2,1,2,3 +?????#???..#?##.? 6,4 +##?.???.???#?? 2,2,4 +?????#?#?#???###. 1,1,11 +.?###?#?????.?? 4,2,1,1,1 +??#????#?#????.?# 4,1,2,1 +????##.?????#???? 1,3,1,2,1 +?#??#??.#?????? 5,4 +?#.?#?..?#????.? 2,1,2,1,1 +..#??.???##?????? 3,9 +?##??????????##?##? 5,1,7 +?#?????#????. 1,3,1,1 +.?.#?#???.? 1,4 +#????##???#???.??..? 2,7,1,1,1 +??????????.?.## 1,2,2,1,2 +??##?##..?.??????#. 5,7 +???.??.??###? 2,1,1,4 +#??.?#?#??? 1,1,6 +????###?????# 6,2,1 +?.?#???#??..??#?#.. 7,3 +??##??###????? 2,6 +?.?#??????? 1,3 +???#.????#?#??.?? 2,3,1,2 +?.?.?#??#. 1,5 +?#????###???####?. 5,10 +???????#??#??.#? 5,1,1,1,1 +???##??.?.??.????? 5,1,1,1,3 +#??.?##??.#?#?????# 1,1,5,3,2,1 +#???.???.???. 3,1,2 +?????#??????????# 1,1,1,10 +#..?##??????##?? 1,13 +??#?????#???#????#?# 5,2,2,1,1,1 +???#??#???#?#? 3,5,1 +##??????.???? 8,1 +??#??..?.?? 3,1 +??##?.??.???????.??? 3,3 +?????????#. 4,1,2 +??.???????##?#. 1,8 +?.?.#????# 1,3,1 +?#.?.??#.#..#.. 1,1,2,1,1 +?.?.???.##.. 1,2,2 +??##???????.?.#?#??? 1,2,4,1,3,1 +?.??.#.??.? 1,2 +???##?????. 5,1 +.?#??.??.. 2,1 +.?????.??# 2,1,3 +?????.?.???##??.??# 1,2,1,7,1,1 +?????##?.?#.?? 7,1,1 +?.?#?#???.?#?? 4,2 +?????#..#???? 2,2,4 +???#??#?.??#???# 2,2,4,1 +?#?????#??###.??? 2,1,7,3 +.??.?#?.?. 1,1,1 +.??##???????#.? 3,1 +???###??????.?.???? 7,2,4 +...??.??#??.?# 2,3,1 +?.?###???#???# 1,5,5 +????#??#?#?????#???? 14,1 +???##??.?#. 3,1,1 +?.????##??#??.?.? 1,1,8,1,1 +??????##????#????? 1,14 +??#???##??????#?. 8,5 +?#?##??#.##? 1,2,2,3 +?#???????#? 3,1,1 +?#???##?????? 9,2 +??#??.??????.? 1,4,1,1 +??##?#????.?? 4,4,1 +#??..????#?????. 1,1,1,7 +?#?#???????#.??#.?.. 8,1,1,1 +..???#.??.? 4,2 +?.?###????.???? 1,4,2,1 +.?#?#.?..#? 3,1 +????..?##?#?###?? 1,1,8 +.#.?#?##?..#...#. 1,6,1,1 +???#???..?#.???? 2,1,2,4 +????#...?? 1,2,2 +#?#??.#????#????? 1,2,6,2 +..?#??#??#??.?.?.#?? 10,3 +.??#????#?? 4,2 +#????..??.?##?#? 2,2,1,5 +?..?.???#???#?#?#? 1,1,2,5,2 +???#.?#?#???? 3,1,1,1 +.??..??.##?#.?. 2,4 +?#???.??#.?. 3,1 +?#??#.?#?#????? 4,8 +???.??????#??#? 1,1,1,4 +?#?#??.??#.??.????? 1,3,2,1,5 +?????.?.????? 5,1,1 +?????.????? 2,2,2 +?.??#???#..?#.? 7,2 +.???????.#??#. 4,2,1 +.#??##.??#? 1,3,1 +?????????????#???#? 2,1,2,1,6 +??#??????#?.??.?? 11,1,1 +##.?.???#?.??? 2,1,5,1 +??##????###???#??. 11,3 +????.#?.?##?? 1,1,1,4 +???.?.??.?.#???? 3,1,1,1,1 +???#??#??.?# 1,1,2,1 +.??##?..?. 3,1 +??#?#??##??#??#?#.#? 2,2,6,3,1 +??##??##?#??##??.?? 8,1,3,1,1 +????#?.???#.??? 4,4,1 +#..???#???????????. 1,1,3,5,1 +??????.???..?. 1,1 +????#?#???? 5,1 +?..#????#?? 2,5 +???.????????#? 2,5,2 +?.?????#?#??#????? 1,10,2 +#????#...??? 6,2 +???????.????.?## 2,3,3,2 +?###.????? 3,1,1 +?#.#??#?.??.?.. 1,1,2,2,1 +#?.?#??.????? 1,1,2 +.???.#?##? 2,1,3 +?#??##?.?? 1,3 +???#.?????#???????#. 3,12,1 +??#?????#.? 2,2 +??.??..?.???? 1,1,4 +?????#??#??.????.. 9,3 +????.???##?###. 4,6 +????.?#?##?????## 3,6,4 +.??#???##???????.?#? 1,8,1,2 +??????#????#??? 2,3,7 +?.??.#?##?????##?? 5,2 +???#?.???.?.?#? 1,2,1,1,3 +###??##????#.????? 3,2,1,2,1,1 +#???#????? 7,1 +??#.?#???? 1,3 +??.#?????????????? 1,2,1,1,1,6 +.?#?#????.???????? 8,2,1 +????.??#?#?#?? 1,1,9 +?.??.?????????.???? 1,1,4,1,1,1 +????????#. 1,1,1 +??#.???.?.###. 3,3,1,3 +.??.##?###?????#? 7,2 +???????#??#??.? 1,1,1,5,1 +#..?.#???????.???#?? 1,6,3 +.????????..??.#??? 2,4,1,3 +?#??.?.??#. 3,1,2 +??#???#??#.???#?? 6,1,1,1,1 +??.?##??#???????? 1,3,1,2,2 +??.??????##????. 3,4 +?.??.?#?#?????#?#?? 1,1,6,5 +.#??????##????????#? 3,1,4,2,3 +.???##?#.??#??#### 5,8 +??#.?.??????????#?? 1,1,1,1,1,4 +???#??.???.?? 4,1 +????.??###?#???#? 1,5,5 +?#????##?#?.????? 9,1 +?#???????.#?#?.????. 4,1,4,1,1 +#??????##??#??.??? 4,4,2,3 +.??#???##??.??????? 3,4,4 +???#???#?????#????? 1,1,2,5,3 +..???.#????? 1,1,6 +.???#?#???##????.? 1,12 +????????#?????? 6,1 +#.??#??#???#? 1,7,1 +???#.?..??????? 2,5 +.#??..#.????? 3,1,4 +???#?#????.##????# 7,2,2,1,1 +?.?#??.???.#????.? 1,1,1,1,3,1 +??#?????#??????##?? 4,10 +?#????#.?#??# 3,2,4 +#??#????#???????#?. 10,1,1 +???##???#???? 1,3,2,2 +#??##????#?#???#??? 13,2 +.???????#?#..???? 2,2,1,1,2 +?##?##????#??.?#?? 5,1,3,3 +?#???#??...?? 3,2,1,2 +?#?####???#???? 9,4 +????#?#???? 1,1,5 +??.?#?##???. 1,1,4 +.?..?????? 1,1,1 +?.????#??#???.# 4,2,1 +???#.????? 2,1,1 +.???#????#??#?#??? 1,11 +??#.????#?? 2,4 +.?#??????#?? 7,1,1 +.#???????.? 2,3 +?#?##??.?? 5,1 +#?.??#?#?#?? 2,8 +??.?????????###?#?? 1,1,1,1,10 +.??????#??#?.. 1,5,2 +????.????????#..??. 4,3,4,2 +#??????##??##??. 4,5,2,1 +#?.#?#??????#.? 2,1,3,3,1 +.??#????#.??. 1,2,1,1 +?.?.###??#.? 1,3,1,1 +?..?.##???.?.??. 2,2,1 +??????.?##???????#? 4,7,2 +##.?.?.??? 2,1,1 +??????#?#?#??# 1,3,1,1 +#????#?..??# 1,1,1,1 +.??##??????##??. 12,1 +.#????#?## 1,6 +??#.???.?. 1,1 +?.????#???##.??# 2,7,3 +?..???#??#. 4,1 +??#????#????? 2,3,3 +.#????#????#???#.?? 1,3,4,1,1 +.??###?#??.??. 5,1,1 +#.??##???#?????.?? 1,11 +??...?.??. 2,1 +??#??????? 1,4,2 +??.#..#????????#??.# 1,1,5,1,3,1 +..?#??????.???#. 2,3,4 +.?##??????????.#? 4,6,2 +..???????? 1,2,1 +#??##??#??#?.?##.?? 1,4,1,2,3,1 +?#?#?#????#?.. 6,2,2 +???##????.?.#?..#?? 5,2,2,2 +??????#??# 1,5,1 +???????##? 1,1,4 +?#?????????.?#??? 1,2,2,4 +?#?#????#??.???##??? 1,1,3,1,2,2 +?????.?.?#.? 2,1,2 +??#??????????????.? 3,1,3,1,2 +#?.??#????? 2,4,2 +.???##???..??? 1,3,1,1 +???#?????#???? 9,2 +.??.??...#????????. 1,2,3 +??.???##.#??#????# 2,5,2,1,1,1 +#??????#???###? 6,7 +????????????..????#? 9,5 +?????.????## 2,1,4 +??##??#.?????????? 7,1,1,2,1 +???????#????.?.? 9,1,1,1 +.??.#..????# 2,1,2,1 +.#??#????.??#.. 8,1 +#??.???#??.?..#? 1,1,4,1,1 +??..???.#??## 1,1,1,5 +#?#??##??????????? 4,2,1,1,3 +?#?????#?? 3,1,3 +.?##.???.?#??#?#?#?? 2,3,2,7 +?.#??#??#. 2,4 +?#?#?..?.?????.?? 4,4,2 +..?#????#??#??#???. 1,1,8,1 +#????????.#??? 2,2,1,2 +.###??.??#. 3,1,1 +#???.?????.#??? 1,1,4,1,1 +??.??#??????.??.? 1,8,1 +##???.??.???#? 4,2,1 +?????#?##?.??#??#. 7,1,4 +??..?.????#??????## 1,1,6,3 +?????##??????#?##?.? 2,14 +#???#??#?##?.?# 2,1,1,3,1 +???.#????#?? 1,2,3 +???..??#?##? 3,7 +.????????#???? 1,2,2,1 +?#??#?###? 1,5 +????.#?.?. 1,2,1 +????..???.???#??. 2,4 +??.??.??????## 1,1,2,4 +?.?????##???##? 1,1,1,7 +?#?????#??#?????..?# 1,1,2,4,1,1 +?..??#?#..#?? 5,1,1 +???????##???# 1,1,7 +#?.??.???#??.?? 2,1,5,2 +????#??####??#??? 1,2,4,3 +??#.???.??. 3,1,1 +.?#???????????.#? 2,1,4,1,2 +?#.??##??????#?#???? 1,4,1,6 +??#.?#??.?##?????# 1,1,2,1,6,1 +??#?.##???#???? 3,7,1 +????.????#.??.? 3,1,1,1,1 +.?#???#??? 3,1,1 +#?.??#??????#?#?? 2,2,8,1 +?.??.?#???? 1,1,2 +.#?#???#?#??????#.? 9,4 +??.?#??.?#. 1,3,1 +??#.?.?#??#??#? 3,1,1,1 +.##??????? 4,1 +#??#??????#?#?# 4,9 +??.?#??????? 2,5,1 +?.????..#. 1,1,1 +???#?.???.?????#? 2,1,1,1,2 +?...##?.?# 1,2,1 +?.??#??###???#?? 1,1,1,7,1 +.?...??.?#??# 1,1,2,1 +.#?#??##?? 3,3 +.????????..??? 8,1 +#????????## 1,8 +..???????????? 1,6,1 +??.?.???#????? 2,1,5 +??#??.?????????? 3,1,7 +#.##?#.??.#?.#?. 1,4,1,1,2 +????.?????#?.?. 2,1,2,3 +.???#???#?..#?#? 1,1,2,1,1 +#?????????#.?.. 8,1 +???#?????.#.?. 3,1 +?##??#???? 2,3 +???.??#?????.? 5,1 +??.???#????? 2,4 +#??#?#.?.??? 1,4,1,1 +??#??#?#?????.??#?. 9,1,4 +??###??##????.???? 10,2 +???.????#.?.? 2,5 +?#??.?#.???.#????.? 3,1,2,1,2,1 +????.?##????? 1,3,2 +????????#?? 2,2 +??#??.???#.?.#?.?# 3,1,1,1,1,1 +#??.??###???.#?.#? 1,1,6,1,1,1 +?????#??????#? 3,8 +.##????#?? 3,1 +????.???#?????#??? 1,12 +.##??..#??. 3,3 +????..???. 1,1,1 +?#.?.?.???##?.? 1,1,1,1,4 +?.#????#?#? 1,4 +???#?????..?#? 5,1,1,1 +.###??#??# 6,1 +#?#?..???.? 3,1 +#???.?.#?.?.# 4,1,2,1 +#?.?#??##??#????? 1,3,2,3 +.#?###.#?#.??.???. 5,1,1,1,1,1 +.#?#??#??????? 1,1,2,5 +???.??#?.????.?.??# 1,3,2,1,1,1 +.?..??.?#???#????? 1,2,1,6 +.#???#.???? 2,1,3 +?????.?#?? 1,2 +?????.?.?.? 2,1 +?.?????.?##??? 1,3 +????.????.##?#??#? 1,1,1,7 +???????...???## 6,3 +??????.?.?#?##? 3,6 +.???##???#????.?? 11,1 +????????#??##??? 1,1,1,6,1 +#?#????.???#????. 7,1,4,1 +?.?????.##???? 1,2,3 +???###.?.???# 6,1,1,1 +??#??#.??..??#??..?? 5,1,1,3,2 +????????#?? 1,2,4 +#???#?.????????? 1,3,1,1,1 +.????#???? 1,2,1 +??#?.#??#?#?? 2,1,6 +?.????##????#? 1,7,2 +??...??#??#???#? 1,11 +?#???#????#????. 1,5,1,3 +#?#???#???. 5,2 +##??##??#?.#..#?#. 9,1,1,1 +??#..#?#???###??. 1,11 +??#??#??????? 7,2 +?.??#?..??..?# 3,2 +?..#?.???? 1,1,1 +.??.??#???. 2,1,4 +..?#?????? 1,2 +.??##?##??.???#? 7,3 +??#??#?..?????# 4,1,2,1,1 +.?#??#?#??#?????? 2,4,1,1,1 +??#?###????.#??##??. 7,7 +????.?.???? 1,1 +.??##??.#.? 5,1 +??????#??..??? 5,1 +.?????????#???? 4,4 +??????#??? 1,3 +???#?#?#??????#? 6,2,1,1,1 +?#??#??.??.??..? 7,1,1 +.???#??.??.#??##??.? 5,5 +???.?????##??. 2,5 +???#?.?????#?. 4,4 +???#.?#????#. 1,6 +##??.###??#???.????? 4,9,1,2 +??????#???. 2,6 +????#???### 1,7 +.?..????#. 1,1,1 +.?.#???.????#?#? 1,4,4 +?????.??#?#???. 1,2,4,1 +?.?.?.?????#??#??? 1,1,1,1,7,1 +..?.???#?#???# 1,1,8 +..?#??.?#?????.?? 3,3,2,1 +#??#?#??#..?..??.?? 4,1,1,1,1,1 +?#?????.?##??? 3,2,5 +#?.?.??#?.?#?????? 1,1,1,1,2,5 +?#?.?.????? 3,1,2 +?.???????. 2,2 +#???#??#????.?#.#?? 1,3,5,1,1,1 +?????????????..?? 1,1,6,1 +?#?????#??. 1,5 +?#.?#?????#???#?? 1,10,1,1 +#.???.???? 1,1,1 +.#??????#???#?.? 1,4,1,2 +?????...??#??##?? 5,2,3 +?#???.?.?? 4,1,1 +.?.????.#???##???. 1,1,1,1,5 +??#?.???#??? 2,4 +?#.???.?#???#??.???? 1,1,3,3,1,1 +??.#?#????##??? 1,2,5 +?.#.##?#??##..??#.? 1,1,8,1,1,1 +?.??????????##?#???? 1,8 +????.??.??.????#?? 2,1,1,1,2,1 +.#???.??#???##.?# 2,1,1,4,2 +.???.??#?.? 2,3 +..????#????#?###?.? 5,5 +.#?.???????? 2,1,3 +???#??.?##?.???? 1,3,1 +?.?#??.??.?.? 2,2 +?.#?.?#?????##???#?? 2,15 +???????#.??##???? 3,1,3,2 +??.??#???.??.????. 2,3,1,1,1 +#.?.???????# 1,1,2,2 +.?..?#?????? 1,5 +.?????###??#?#?#?. 1,12 +??#?????#???#???? 2,1,5,1 +.?#???.???#? 4,3 +???.???????#?#?#??? 2,6,5,2 +??.?#?#????#?##??.? 6,6 +.????.???? 2,2,1 +.?????????. 1,4 +??#.??#?#?? 2,6 +??#?.?#.?... 2,1 +?#???.??.?#????. 3,6 +.?????????????????. 1,10 +##??..???#??? 3,1,2 +???????.#.?. 6,1,1 +?.????.?????#????. 3,1,3 +??##?????.??.#?..? 8,1 +####?##???.#? 7,1,2 +.??###?#?.?? 5,1 +????#???#? 1,3,1 +..?#???#?? 2,3 +.??##?#..?.#? 1,2,1,1 +?.?????#?? 2,2 +.??.?#??#????? 2,8 +???..??.????#?? 1,1,6 +##??#???..? 2,3 +.??????????????#???? 1,1,1,10 +???#.##.?..?###? 4,2,1,4 +??.?.?#?.??. 1,1,1,1 +???#?#???.?#.? 4,4,1,1 +?.??##.??????? 1,4,1,3 +??.##?????#?. 1,2,5 +??#?.#?#?#??#?#? 3,10 +?????????#?#????? 11,1 +#.#??.###??#??????? 1,3,6,3,1 +???###?.?????????.? 6,2,4 +???#?#?#?.????#??? 6,5 +?#??#?##?##??? 10,1 +????.???#####?. 1,8 +??#???#??#? 4,1,1 +??????#???#????#?#?# 6,4,6 +?????#??.?#????#??. 4,1,1,2,2,1 +????#???.?.?#. 6,2 +#???#???????. 1,8 +??..?.#?#??.#??????. 4,5 +.?##?#???###?.?#???? 4,6,5 +????????.?..#? 2,1,1,2 +#???????... 1,4 +????#?#????. 1,1,1,5 +???##?#??.?? 3,1 +?##????.#?????#.#? 6,3,1,1,1 +????..????. 4,3 +??#?#???#??? 4,4 +?.#??#.???. 4,1 +.#.?#??#??#??????? 1,2,1,1,4,1 +???????????#??? 2,4,2 +??????#???.???????# 1,1,3,1,5 +???????.???###.###. 5,1,3,3 +?#.????.#??????#? 1,3,8 +?.?.?#??.### 1,3,3 +???????#??###???#?# 2,9,1,3 +?#??..?#??. 1,3 +?.##?#?????#???? 7,2 +#???????#????#?.???. 1,13,1 +?????#???????.. 3,1,5 +.?#.??##.#?#??????? 2,3,1,1,1,2 +.?#?????#?#???? 9,3 +?...????.??.?? 1,2 +..??.##?.#? 2,1 +??#?.??...?? 3,1,2 +?.????.???????? 1,1,5 +#?#??#?#????.? 1,10 +???###??#?????????? 1,10,4 +.???.###??????????? 2,3,4,3 +????#????.. 1,5 +?#?.?.??????##??? 1,1,3,4 +?#..????#???.? 1,7 +??#?.?##?#. 4,5 +.??###?#.?.?#??? 6,5 +?.##?#.????.???.. 4,3,2 +.#??#..?.??#??# 4,1,3,1 +.#??????#??????? 11,1,1 +?#???#.?.#.????#?# 3,1,1,1,5,1 +.???#???#?..?#?.?? 3,2,3 +#??????????? 3,1,1,3 +???#?#???? 1,4,1 +??#..??#??##?#. 2,2,4 +??##.??.?##..#??. 3,3,1,1 +??????##?? 1,4 +?.#?.??##????#?????? 2,7,1,2 +??#???..#??.?#?????? 4,1,1,5,1 +??#??????? 1,5,1 +#???..?.?##????. 1,1,1,4,1 +??#???????###??#? 6,3,1 +.????????##??#?#?? 1,1,8,1,1 +?????.#?.?# 3,1,2 +??????.#?. 1,1,2 +??#?##????. 4,1 +??#??##.?##?.? 5,3 +???????#?????#### 1,2,1,5 +?#????#????.????# 9,1,1 +???.?????? 1,2,3 +??????.??# 2,1,2 +#?##????.?##?#?#? 4,7 +.???##?#?##?#?.? 1,9 +??????????#??#?? 2,6 +??#??#???.#????#? 1,4,1,3 +..???##??????.#??? 1,5,2 +?.????#???????#?## 9,5 +??#??##?#?.??##?.?. 3,5,5,1 +.??.????##? 2,2,4 +.?..?#?#?.?..??#?.? 5,3 +??#?.??.?????????? 2,8 +????#?????? 4,1 +??.???.??.?????#??? 1,1,1,6 +.???#??#?.??.??# 4,2,1,1 +??..#.?#?.??#???#??? 1,1,2,1,7 +.##???.????.??.. 2,2,3,1 +?????.??#?????????.. 4,4,3 +..#?????#?????? 1,6 +????.??###?#???##?? 1,6,3 +..?##???.? 3,1 +??#.#?????.????? 2,4,1,2,1 +?.???????.#?..??? 1,1,4,1,1 +#??????????? 1,1,5,1 +#??#.?.#??#.??? 1,1,1,4,3 +.?????.?.?##.?####? 1,1,1,3,5 +??.?????..??? 3,2 +?.??##????.?.?.?. 6,1 +??????..?.?????? 1,4,1,1,1 +?.???##?..???#.?? 1,1,3,4,2 +.?????.#????? 5,5 +?#.???.??.? 2,1,1 +.?????#????.? 3,1,1 +.???#??#?????#????# 11,1,1 +?#??.?#???.???#?#? 1,3,6 +#??#??#??#???..??##? 10,1,1,3 +????#???????#??? 1,7 +??????#????.? 1,4,1 +?##??#????? 8,1 +????.#???????#. 1,4,1,2 +.#??????.??..?#???## 3,2,2,2,4 +?.???###??##??.#?#.? 1,11,1,1 +???????.##?#?? 2,2,5 +..#???.?.?..?#?.? 3,2 +?????#?#?#???#??#?.# 1,2,4,2,1,1 +????.?.##?#???. 3,7 +?.#.?.?.????#?##? 1,7 +#?.#?.???#?##??? 1,2,6,1 +??????#??#?#?.. 1,9 +???#?##????.#?????. 6,1,1,2,1,1 +????????.? 1,1,1 +??.#?????? 1,6 +??###???..?.??????? 6,1,1,1,1 +??.???#?????##?#.#. 1,11,1,1 +.????#?#.???..??? 6,1,3 +????##????#.#????#? 1,3,3,4,1 +?#??.??#???? 1,1,1,1 +?#??#??#.?#?#? 5,1,1,2 +.???#??.###??????.? 1,1,9 +?.????.####??##? 1,1,5,3 +???#?.?#?? 3,1 +.???##???#.?##?. 4,2,3 +????????#?????#????. 1,15 +.###?#???.??????? 8,5 +??#???????#?.#?#? 1,1,4,4 +.?.??.#??##?#. 2,7 +?.#.????.. 1,2 +?#....?.#?#??? 2,6 +.#?#????#?##? 3,5 +??#???.####?.?#?. 6,5,2 +?????????? 1,1,2 +###..???.##.???? 3,1,2,1,1 +?..?#?##?? 1,5 +?##.#???.#???.????# 3,1,1,2,1,2 +??#.??#??#?????#?? 1,12 +?????#???#??????? 10,2 +.????.??#####???? 1,11 +?.?..#?##.#??.?#?.? 1,1,4,2,1,1 +.???????#?#?##.???? 8,4,1 +??###?#?????#.??.? 11,1 +.???##?.#?????? 3,1,2,1 +????.????.?#?# 1,1,3,4 +???????#?#? 2,3 +?.#?????##??#..?? 3,3,1 +??#???.?.?????#?? 1,2,1,5,1 +.????.??#???.?# 1,1,1,2,2 +????#?#?#?#?#?#. 6,1,1,1,1 +????????#??#?##?? 1,2,1,1,4 +.?#?#?????#??? 5,2,1 +##???.?##?...#.?.# 5,4,1,1 +...?#???????????? 2,4,1 +????.?..????. 2,1 +#???.???.???#??#..?? 1,1,2,1,4,1 +???.???..??????# 2,1,1,5,1 +..?#????.????. 4,2 +??..?????.?? 2,1,1,2 +#.#??##??.??# 1,6,2 +????#?#??.????#? 1,4,5 +.??????????#??#???? 1,1,10 +?#?????#.??#?#.????? 1,4,3,1,1,1 +.#.??#???. 1,2,1 +?#??#????#?????? 4,5,3 +??????.?#####.#?.? 1,3,5,2 +.#??????.??. 2,3,2 +????.???????? 3,1,1,4 +????##???????##?#? 1,3,3,6 +.?.????????##??? 1,1,7 +???.#?????.#??? 1,1,1,4 +...?###??????.??? 7,1,3 +?#?..??.##?.????## 2,1,2,2,2 +??.?????#???? 2,4,1 +?##?##??#?.#?#?? 8,3 +??#?#??#??#???#? 1,1,4,6 +##??????.??..??# 4,1,2,2 +????.????? 1,1,2 +.???#?.?.# 4,1 +??????.???##??#?? 2,2,7 +?#?#??????????.. 5,5,1 +??????.?.#?###? 1,1,1,1,6 +??.##?.#????? 2,2,2,3 +????#?#?#?#????.?. 12,1 +..#??###?? 1,5 +.??#.#???#.?????#?#? 1,5,1,5 +?.??#?#.?#??#?.? 5,6 +.#?.??#????.??. 2,3,2 +.#????..??.??# 4,1,3 +#?###?.???.?????? 1,4,2,2,2 diff --git a/2023/day12/solutions.py b/2023/day12/solutions.py new file mode 100644 index 0000000..1d5a9c1 --- /dev/null +++ b/2023/day12/solutions.py @@ -0,0 +1,36 @@ +from functools import cache + +with open("input") as f: + ws = [l.split() for l in f.read().strip().split("\n")] + + +@cache +def num_solutions(s, sizes, num_done_in_group=0): + if not s: + # Is this a solution? Did we handle and close all groups? + return not sizes and not num_done_in_group + num_sols = 0 + # If next letter is a "?", we branch + possible = [".", "#"] if s[0] == "?" else s[0] + for c in possible: + if c == "#": + # Extend current group + num_sols += num_solutions(s[1:], sizes, num_done_in_group + 1) + else: + if num_done_in_group: + # If we were in a group that can be closed, close it + if sizes and sizes[0] == num_done_in_group: + num_sols += num_solutions(s[1:], sizes[1:]) + else: + # If we are not in a group, move on to next symbol + num_sols += num_solutions(s[1:], sizes) + return num_sols + + +rows = [(w1, tuple(map(int, w2.split(",")))) for w1, w2 in ws] + +# Part 1 +print(sum(num_solutions(group + ".", sizes) for group, sizes in rows)) + +# Part 2 +print(sum(num_solutions("?".join([group] * 5) + ".", sizes * 5) for group, sizes in rows))