diff --git a/2023/.inputs/12 b/2023/.inputs/12 new file mode 100644 index 0000000..99bcae5 --- /dev/null +++ b/2023/.inputs/12 @@ -0,0 +1,1000 @@ +??????#??? 7,1 +?#####???????#.. 5,1,1,1 +#?#???##??#.?#?#?#? 3,3,1,7 +???.?#?????? 1,5,1 +?.????????#??? 1,2,2 +???#?##?????.#?? 1,8,2 +##..#?????## 2,1,3 +?###??????..??. 8,1 +?.???.???? 1,1,1 +.????.??#?#? 1,5 +?#??.#??.?. 2,3 +??#?##????#???..? 8,1,2,1 +.#?.?#??#??.?#?#?.? 1,7,5,1 +??.??#.??? 1,1,2 +??###??##?????.#? 10,1 +???#??###?..#?.?#..# 9,1,1,1 +#?.?###?#?#.?.#.?.#? 1,8,1,1,1,1 +..?.???#??##???##.?? 1,10 +??##.?????#?? 3,1,2 +????#?#????#?????.? 1,1,1,8 +???.?.#??.? 2,1,1 +##?##????? 5,1,1 +.?????.???? 3,1,1 +?#???.#?.????.? 3,2,1,1,1 +?#??##?#?..???#?.?? 8,1,1,2 +.??.?.#??????#????. 1,1,11 +?.??#????. 1,5 +?.???#?.???? 1,1,3 +???#???.??.? 4,1 +??.#???????...??.? 1,4,1,1,1,1 +?#?.??#.?? 3,3,1 +??#?#?.????#??#.. 1,1,2,1,5 +?#?..??##???##???? 2,11 +?##?????#?????? 3,1,3,1,1 +.?.?.?##??.??# 1,4,1 +??#?..???? 1,3 +?#.???#?????#?#??? 2,1,2,4,2,1 +#?????..#?#?.????. 3,1,1,1,1,1 +?#??.???###?. 3,6 +??????.#.?????. 1,1,1,4 +.?##?##???? 6,1 +??#??#????? 1,1,2 +?.?.??#????# 1,1,2,1 +.#?????#.? 1,1,2 +??.#?.?..#?????? 2,1,1,2,1 +????##.?#.?????.?##? 1,2,2,3,1,2 +?#.?#??#???...?# 2,1,2,1,1 +?#????.??.#????? 4,1,3,1 +??#???#??#####????? 4,13 +..#?.?.##??##..? 1,1,6,1 +.??????.??.?#??#?? 1,1,1,2,4,1 +??????#.??#???. 5,4 +.????.#??.?#???#?#? 1,3,7 +?#.???#???.?????? 2,1,1,2,4 +??.?.?#??? 1,2,1 +?##?#???#?????? 4,6,2 +??????#??#? 1,6 +?#?#?????####??#?. 12,1 +?.???#?#?????.#? 10,1 +#?????..??.#?? 1,1,2,3 +???????.#????? 3,2,4,1 +#?#.?#?#?##????.#.? 3,8,1 +??#?##??####.?.#.?? 12,1,1,1 +.?????.#?.??????# 1,1,2,3,1 +.###.##?.?#??.?? 3,2,2,2 +..???##???##?? 1,2,4 +??????#???????##? 4,1,1,1,4 +#??.?.??????? 1,1,1,6 +?????#?#???????## 3,5,1,3 +#??????.???? 1,3,1,1 +.?#???.#.?..# 3,1,1,1 +??#???#?.?. 5,1 +??#???.#??. 3,2 +#??.?#.??..##?? 1,2,1,3 +#.??.#?.#??.#?????? 1,1,2,2,5,1 +????.#.?#? 2,1,2 +?##?????##?????# 3,2,8 +???#??#????????? 6,4 +???#???.?.#? 4,1,2 +?????????#?#????# 4,6,1 +?#????????#?##?? 2,2,7 +.???.?###???? 1,1,7 +?##.???.?#?#?????? 2,2,5,4 +???..??#??????? 1,1,5,1,2 +.?#.#?#??#.??.. 2,3,2,1 +#??#???#????##???.? 4,4,1,2,1,1 +??##??????? 3,4 +??.#.??.#??##???#. 1,1,1,1,6 +?????#.?.. 1,1,1 +?.????##.??#? 1,4,1,2 +?.##??.?????? 1,4,2 +????.??#??.? 2,4 +.#?###???.????#.???# 6,1,1,1,1,1 +.??#???##?????###? 1,1,5,7 +???#?????????????? 1,2,1,4,1 +?.?#?#??.?.#???? 5,3 +??????#.???#??? 4,1,1,2,2 +#?????.????##?.????? 1,4,2,3,5 +.#??.????.. 2,2,1 +.??##?##??? 4,3,1 +???????.?#? 4,1,1 +??????##????.??? 12,2 +??#?#????? 2,1,1 +.?????#??#.?.??###?# 3,1,1,1,5 +?????#?##?#?? 1,1,5 +??#???????#???#?#.?? 16,1 +????#?#?#??.???##??? 8,6 +???#..#?????? 2,6 +???.?????#?#???. 1,1,5,1,2 +????.##?.?# 1,3,2 +?#???????#????????? 1,1,4,3,1 +?????#????.???# 1,4 +?#??????????#??? 1,5,4 +????.?#?.???#??# 2,2,3,2 +#?#??##.??? 7,2 +??????#???#?##? 3,3,5 +#?.???????.? 1,6,1 +?#?#???.??????#? 5,1,4 +#????#.?????? 1,1,1,6 +.?#???.#??? 4,2 +????.??.??.?? 2,2,1,1 +??????#?????#? 1,5,1 +.?#?#??#??????# 8,2,1 +???##?...?.????###? 2,3,1,6 +?#???#?#.??????#?? 1,1,1,2,4 +?????.?#.???#?#??? 2,1,2,1,4,1 +..??????#.???.. 5,2 +?.????##?? 1,2,2 +??.#?????####.# 1,2,1,4,1 +????#????.??.?.???? 6,1,1,1,1 +?#?.???#???????##. 1,4,1,1,2 +??????????#?????.??? 1,9 +..???????..??. 1,4,1 +?..??????#..?? 1,6,2 +???#??????.?.? 3,1,1,1 +?#?###??#?? 7,2 +??.?#?.?#??#??. 1,2,7 +??.???????. 4,1 +??#??#???#? 1,1,2 +.??#????## 1,7 +#???#??.?.# 5,1 +.??#????????#???? 2,2,3 +?????.??#?. 1,3 +??#?##?.??.????????? 1,1,3,1,2,5 +?#??.?#???## 2,2,3 +.#?.???????#.??? 1,3,2,1,1 +#?#.????.? 1,1,3 +?#??#??#??###?????? 13,1,2 +..???####.????.? 1,5,1,1 +.?#.????????.??#? 1,1,4,2 +?.???.?.?? 1,1,1 +?#???????.??#??? 3,1,1,3 +?.??.??.??##?? 1,2,2 +##?#??##???? 4,2,1 +??????#???????? 2,1,5 +???.???#.??#????.#? 1,1,2,1,4,1 +?#?.#...#???? 1,1,2,1 +??????..??##??? 3,2,5 +?#??#??#??? 1,1,3 +.?.????.?#?. 1,1,2,1 +.##.???????..#? 2,7,2 +?????##.?????. 1,4,5 +?#????#??.?#.##.?? 2,1,3,1,2,2 +???.?..#?.? 2,2 +#.??.???????.??? 1,2,2,1,1 +..?###??????#?????? 7,1,2 +???#.??????.?? 4,2,1 +#?????###.#?..??. 4,3,2,2 +??#??#???? 1,1,4 +???#??##????.#??? 4,2,1,1 +?.##????????? 4,1,1 +??#???.#????###?? 4,3,5 +??#??.????#.??#?# 4,1,2,1,1 +????????#.#???### 2,1,3,2,4 +???????#??#???# 1,4,1,1 +?#????##?# 3,4 +????????.#?? 1,1,1,2 +?#??#.??#?#.? 1,1,5,1 +#????.?#??.##?????. 3,2,7 +?????..?##? 4,4 +?..#?????????##?.??? 1,7,1,2,3 +#???.#???...? 4,1,1,1 +???###??.# 5,1 +.#?##???#? 1,2,2 +#??????#?.??.?#.??? 1,2,2,2,2,2 +???##?????????#??? 5,2,1,2,2 +???.????###?##??#. 1,1,6,1 +.???#?.?..?? 3,1,1 +#???#??#??..??###? 2,1,4,4 +.?.?#.????.? 1,1,1,1 +..???.#?##.? 2,4 +#?#..?#..?????????.? 1,1,1,3,5,1 +?.????#.?# 1,4,2 +??..??.??.????.# 2,2,2,1,1 +?#.#?.?#?? 1,1,1 +???#??#.?.? 4,1 +..??##?..????..? 4,4,1 +?##?.?????#.??# 2,6,1 +????.?#???... 1,5 +??#.?.?.?????##???# 1,1,1,8 +???#.??##???#???#??? 1,1,11 +??#?????#?.?.#?? 9,3 +?#??#??????#??.?? 2,1,2,3,1 +?#?###.???? 5,1 +??#..?.??. 1,1,1 +.#.??###?????##? 1,4,5 +#?#??.???.??? 1,1,3,1 +????????.#? 7,2 +##?#????????#? 2,4,1,2 +#???#?.?????####### 2,2,11 +.?????#?.? 1,3 +??.?.#??.??????.?? 1,1,2,4,1,1 +?????.##?#. 1,4 +??#??.??#??#?.#??#? 4,1,5,1,1 +????#??#?..??# 6,2 +.???????#?#??????#? 2,8,2 +#?.??##??.?#?? 2,3,1 +?.????????????##? 1,3,1,6 +????##???? 1,3 +????.##????? 1,5 +?.?..???#. 1,1,4 +#????#??.?????? 1,1,1,1,6 +?#.???##??. 1,3 +?????.?.???? 3,1,1 +???.??..???? 2,1 +??????..???.???? 3,2 +????#.??#????#??? 5,3,3,1 +?.???#??.???? 2,1 +??#?#??.?????.? 4,5 +#.?.??.?????????.? 1,3,1 +?#???????? 1,3,2 +?#???#???#???. 1,4,5 +?.????????.# 6,1 +??????#?.??#???? 1,1,3,4,1 +??#?????#?.? 1,2,1,2 +?.?#?#.??# 1,3,3 +???????#??? 1,1,2 +???.???##??.??.?#??? 1,1,5,1,3,1 +??##??#?#??#??? 2,2,2,3 +?##?..#.?.?# 3,1,1,1 +.#?#?.?.?????.? 3,4 +.?##?????#???#?.?. 2,1,1,1,2,1 +.?#?##???.#??? 7,2 +?????#..#. 3,1,1 +.?.?.????#? 1,1,2 +?##.?#???#. 2,6 +??.??????#?###??. 1,2,2,5 +#???????#???????? 1,11,1 +???.????#.. 3,4 +?.?.???#?..#?.? 1,1,1,2,1 +???#???????.?#? 4,3,3 +???????#?.?# 3,3,1 +.?????#?#?#??#.????# 1,1,1,6,2,1 +???????.##?#??#?#??? 1,1,11 +?##?????.?????? 7,1,2 +??????????????.? 1,1,2,4,1 +??.##?????.?#.?? 4,1,1 +?..?.??..???? 1,3 +?????#????#.?. 1,6 +#.??????????????#? 1,12,2 +.?.???.???? 2,1 +????.?#??.??? 1,1,1,2 +??.????#???????. 1,8 +...#????????#????. 1,10 +.??#?..##? 4,3 +????#?.??.?#?????? 1,3,1,1,1,1 +????#.???.#? 1,1,1,1 +.???.??#???. 1,4 +??#?##?????.? 2,7 +??#????#??.?. 1,3,1 +#?????#.??????#?? 1,1,2,1,4 +??????#.?#..???#? 2,3,1,2,1 +?.???.??#. 2,1 +???#?##??????#.?? 6,1 +?#???????#???..?? 3,4,1,1 +?##?.#.??? 3,1,2 +?#???#?#?#.??..?# 9,2,2 +????????#?# 1,2,5 +????..???###?? 1,7 +?#???.#??.?#?? 5,1,2 +.????###?? 1,4 +?#?..???#?#???#?# 2,1,7,1 +?#??.##????# 2,4,1 +.?#.#?#?.?..#????? 2,1,1,1,2,1 +???????.###? 1,2,2,3 +?.#???????##??#...?? 3,6 +??#?##?##????#?.???? 4,7,2 +?????????.???.?? 1,4,1,1,1 +.#????.??#?.#?? 5,1,1,1 +?#?#???.?#??#??###. 1,2,10 +?????#?.??# 4,1 +?#?????.????.?#???# 3,2,1,1,5 +.???????#?##?? 3,6 +?.???#???? 1,1,4 +??????????? 1,2,1 +?##????????#? 6,1,2 +?#?.?#???? 3,2,1 +?##?###????????? 9,3 +?????.??#?##?? 2,8 +??#?#?#?????.? 10,1 +??.?..?#?#???##? 1,1,1,1,4 +.??#????#??#?.?.. 10,1 +?????#?#??#??#?##? 3,13 +.??????#.???????.? 3,1 +?#??.?..?. 3,1 +#..?????????? 1,4,2,1 +??#??????##.? 4,1,2,1 +???##?#.#? 5,2 +?##??#.???.????#?? 6,1,1,1,2,1 +#??#????..???? 8,1 +.#?##?.???#?#?? 4,5 +.#????#.?#???. 6,1 +.#.??#?????#??#?? 1,3,10 +??????##?#??????#? 1,11,1 +???##.?..???#???? 3,3 +???.?#??##??#?? 1,2,3,1,1 +#??.?#????.?# 3,2,3,1 +?#?.???????#?. 3,1,5 +###?#??????.???? 5,1,1,2 +?.#????.?##?? 1,1,4 +?????.?#.???????#?# 2,1,2,8,1 +??.??##???#.???# 1,4,2,2 +?#??????#?????? 2,2,2,1 +?????.???? 1,4 +????#..??#? 2,1,1 +#???.?#.?# 4,2,1 +...?...#??##? 1,5 +.?????##??##???? 2,3,7 +.##??#.??? 2,1,3 +???#????##???? 1,10 +?.???#?#???# 1,1,7 +#..???..???? 1,1,1,2 +?#?????#??? 1,1,4 +???.?????? 2,1 +..??.?#?????.??? 2,3,2 +????#?#?#???.? 1,7 +.??#??#???##? 6,3 +.??#?.??.???????? 1,1,2,1,4 +?.?##??..#??.??? 4,2 +??.???????#?#. 1,1,5 +???????????##???# 1,1,1,9 +#.??.?#????##?#? 1,1,2,4,1 +????.???#?.??#??## 1,1,2,1,5 +?.#???#??? 5,1 +???#??#????..? 5,1 +??.?#??.?#?# 2,1,3 +?.#???#???.???#.? 1,4,4 +..##.#???#??? 2,6 +??#??.??.?#.?#?.?# 2,1,2,1,1,2 +????#?.#??.#??#. 5,2,2,1 +????###??#??#?#????? 14,1 +???.???#?? 2,1,4 +?.????????????.??? 1,1,5,1,3 +??#??#??#???..? 7,1 +?#??###..?#?#..?? 7,3 +#??????.????? 5,2,2 +.??#?#??????#.?.?? 12,1,1 +???#??#??#.?#?###??? 1,1,1,1,8 +??.#??#?###?#?##. 2,1,10 +?????#????.#??#?#?# 7,1,8 +?##?????.???#??#? 2,7 +??#????#?.? 3,2,1 +.?#????????.??# 2,3,1,1 +??#??????? 1,5,1 +??#?#???####????#### 4,12 +..??.?#?#.?#? 1,4,2 +?????.???##??..#? 1,1,1,4,2 +?.#?#????#????#??? 5,10 +????????#????.?? 1,8,1,1 +??##???#.?? 3,1,2 +#???????.#? 1,6,1 +#??#??#???##?.#?#. 9,3,1,1 +?#??#??.#?#.#?? 6,1,1,1,1 +?????????.#??#?? 5,2,3 +?.???#.#?##?.?? 1,1,1,2,1 +??#.??.?#?? 1,1,2 +????????????#. 2,2,1 +..????.#??. 1,1,2 +?????.?#?#... 1,1,4 +.?#??????.?????## 3,1,1,1,2 +..?###??#?..??? 7,1 +?#??????????????#??? 7,1,2,2,1 +#?#??#??#?#?##.?.# 6,1,1,2,1 +???..#??#??.#?????? 5,3,1 +??...#????#??##?#?? 1,1,11 +????##??###?#?????.? 3,10 +???????##???.??????? 11,1,2,2 +????#??..#?.?? 4,1,2,1 +?##????????# 5,3,1 +???#.###...??##.?#?# 3,3,1,2,1,1 +?.???#?#??#???.??? 1,10,1 +?????##?.? 1,5,1 +???#?#?#.???# 4,1,1,1 +.???#???.??? 1,4,3 +?.???.???#??? 1,5,1 +??????###???#???.#? 14,1 +..???????#??#?##? 2,1,2,6 +???#?..??? 4,2 +.?.#??????##? 1,3,1,2 +?#??#??###?#?? 2,6,1,1 +?????#???? 5,2 +??#.?.?.#.??.?????? 3,1,1,1,2,1 +?????#.?#??? 1,3,4 +..??.#????#??? 2,2,2 +.?#?#.?#?#??#?#?? 2,1,10 +?#??..??#?. 1,1,4 +?.??#??#??# 1,1,5 +?.??#?????????. 7,1,1 +???.???#??? 1,6 +???????#.?? 2,3,2 +.#?.???????????.? 2,1,3,1,1 +???????????????#?# 1,1,2,5,3 +.#.??.?????????.??? 1,1,1,7,3 +..##?.??????????#.? 3,6,1,1,1 +#?#??????#..??? 1,2,1,1,2 +##???.?#?##??. 3,1,6 +..??#?????#?.. 6,2 +.??????#.?????# 1,3,1,4,1 +.??#?????#????????? 7,1,1,1,1,1 +#??#???.???#?. 1,1,1,3 +..??.??????..? 2,3 +.???#?.?.????#?????? 4,5 +??...????#???#?? 2,1,5 +?.??#???.??# 3,1,1,1 +#.?#??#?#??#?# 1,1,7,1 +.???????##?#??#?# 4,1,4,3 +??????????? 2,1 +#?.????#???..? 1,2 +.#..###??###??##? 1,8,2 +????#?#???.##?? 1,4,1,3 +????????.##??? 7,5 +????.?????????# 1,2,4,1,1 +???..#?#??.???? 1,1,4,1,1 +??.?#??..???? 1,1,1,3 +#?#???#??#??? 7,2,1 +???????#???????? 3,6,4 +??#????##??#? 3,2,3 +?###??#?##????????? 15,1 +?#???..?#.. 2,1,1 +?#?????.?? 1,1,1 +#?????#?????#?#???? 1,1,9,1,1 +?#??????#?#???????? 13,1 +??##??#?...?#####??? 8,8 +.??????????#??#????? 1,1,1,2,1,5 +??#??.?#??##???#? 3,6,1 +??###????.???? 8,1,1 +.??#.?.#????????? 1,1,1,10 +????#.?.??#???.? 4,1,6 +?????.?#???#? 4,2,2 +..???.??.#???#??? 1,1,8 +.???#???#?#???? 4,4,3 +#?.#?..???#? 1,2,1,1 +??#??????#? 1,4 +??..?#.#??#? 1,2,1,1 +???...?#??#?#?? 1,9 +#?.???..?.??. 1,1,1,1 +??.??.###?? 1,4 +?#???.?????????? 4,9 +??#???..????.. 1,4 +#???..???.??#.???? 1,1,1,1,2,3 +?????.?..????? 1,3 +?????##???#???#.?. 7,5 +????????#?#????####? 1,17 +?##?#??##.?#????###? 9,9 +.?????#??#???##?#??. 7,6 +?#?#??.??? 3,2 +.?..?.??..##.?. 1,1,1,2,1 +.??.?????# 1,2,1 +???#??????#???... 3,3 +.?????????##???.??. 1,5 +?#.?#???.#?.?????? 1,2,2,1,1,1 +????????.??#.##?#??? 1,1,3,3,7 +??????#####? 1,1,6 +????#?.?.???. 4,1 +??#.?????...???? 2,3,3 +.???#????. 2,1 +.??????#?#????. 4,4 +#.???#??????#?? 1,1,2,6 +.??#??.??### 2,1,3 +?.?????..?.??#.??? 2,3 +??#??##.#?#??#??# 5,1,1,1,2 +?#??...?.. 2,1 +?#????.?##?????? 4,9 +????????###?#????#?# 1,15,1 +?????#?.??#????.# 2,3,1,3,1 +#????..?#.?#??.# 1,1,2,3,1 +?###?###.?????? 3,3,6 +?..#?#???.???? 1,6,1 +?.?..??##??###?#? 1,10 +.???..?#.#?###?#??# 1,1,1,1,8 +.??????.????. 3,1 +?#.???...#?##?#..? 1,1,6 +?????#????.???????#? 1,6,2,4 +??????????#????? 1,4,3,1,1 +???##?.????#?. 3,2 +????..?..??. 1,1,1,1 +?#???????. 1,4,1 +.???#??##????..??. 1,2,6,1 +.??????.?. 2,1,1 +?.#?.??.??# 1,2,1 +?###?#?##??? 8,2 +??#????.#??? 1,5,1,1 +##.?????.??#? 2,1,1,2 +??#?.?????#? 3,1,2 +???.?.?##? 2,1,3 +#???????????.?. 1,1,1,4,1 +????.??##?.???#. 3,4,1,1 +??.???##?? 1,1,5 +?.??#??..#? 3,2 +.?..#.##????? 1,1,6 +???.????????#??.? 1,6,1,1,1 +???#??.?#?#? 1,2,1,3 +?#???.?.?? 3,1,1 +?.?.???##???#??#?? 1,1,10 +?#???#?##?##. 1,7 +??#??????#.????.?#? 9,1,2 +???##????##????.??#? 6,6,3 +??#???????#???.??.# 3,1,5,1,1 +.????????#?? 2,5 +.#?..#.##?#??##??. 1,1,2,1,3,1 +?##..?.#????? 2,5 +.?.#.##???.? 1,5 +?.????????###?##. 6,6 +?????##?#. 1,1,4 +.??.????#.. 1,1 +????...?##??#?##?.? 1,1,10 +.???.##???????##?.?? 1,11,1 +.??#????#.????.??. 7,3,1 +.??.??#?###???##??? 2,11 +???#???#?#??#?? 8,3 +??#?#???#???#?????. 2,2,1,2,3 +?#?#?.?#??#??? 4,1,1,1 +.?##?####?##.???? 3,4,2,2 +???#??.?.??## 5,1,4 +.??.??#??? 2,1,1 +?????##..??? 1,4,2 +??????..#?#?.? 1,4 +???.?#???##..? 1,1,7,1 +??.??????.??? 1,3,1,1 +????.??.???? 4,1,2,1 +????.?????? 1,1,4 +???????...??????? 1,3 +??#??##?##?###??.. 5,7 +??##..#?... 2,2 +?????.??..? 5,2,1 +?#????????#???#????. 4,12 +???##?????..?????# 9,2,1 +??#?.??#???.# 1,2,5,1 +????..??#? 3,1 +#?.#?#???#??? 1,1,1,3 +.#????#?#.???## 4,1,1,1,2 +?????.???#?. 3,1 +?##?.???.?? 4,1,1 +?#?#????????#?.??? 4,1,2,1,2 +?????.???#??#??## 4,1,2,5 +?.?#???..?.##... 4,2 +.?????#.?#????#???? 6,4,4 +???##?###????#?. 8,3 +?#??????.?????#??.. 3,2,8 +?????##????# 9,1 +??????#..#??? 3,2,2,1 +..???.??#?.?????? 1,1,3,6 +???#???##.#? 5,2,2 +???.??.??????????? 2,1,1,2,1,1 +.????????#??.???#? 2,1,4,5 +?????.??.? 3,1 +??.???????. 1,1,2 +?##?#??#??#?? 4,1,1 +.??????#??? 1,5 +?????...?#?# 1,2,4 +?????.#??. 5,2 +#.??#???##???#??##?? 1,16 +??#??#?.?#.?#?? 5,1,3 +???#??.?.#?? 4,1 +????#????#?????# 1,3,2,1,1 +.#???????.?? 1,1,1,1 +#???.?????##?##?#? 1,1,12 +????.???##?.? 3,5 +?????#????#???# 4,4,2 +????#.??????? 2,1,1,1 +?#??????#. 2,1,2 +????????## 2,3 +??????.?????#?# 4,2,1,1 +????.??#?? 4,2 +???#?#?.#.?.??? 6,1,1,2 +#..????..?#?.????# 1,2,1,2,1,1 +???????#?#????.? 1,1,5,1,1 +#..????#??##???..#?# 1,8,1,1,1 +.?.??.??..??? 1,1,2 +?.???#.??.. 1,3,1 +.?##..?##?. 3,3 +.#??#??#????##?#?? 1,1,1,6,1 +?.?#?.???#?#??..??# 1,3,6,1 +???????????? 4,1,3 +..???#??????#???. 5,7 +???????#?##? 1,1,1,5 +?????#???#??. 1,4,5 +.??#???#??? 2,2 +?##..?????#? 3,1,2 +??.??...#?????#??.? 2,3,4 +#?#???#?.? 5,1,1 +.????????? 3,2 +???????????#???. 2,5,2,1 +????.??.?.?????? 2,1,1,1,3 +.?????#??.?? 1,4 +??????##?#????#.?? 2,7,1,1,1 +??#.?#?#?????#?#?# 2,3,2,1,3 +???????#??.?????.#? 2,5,2,1,2 +.????.?#??#?????? 3,5,5 +??#.???.???#??? 1,1,1,1,6 +???#???????## 1,1,1,6 +#?#.?????. 3,1,2 +?.????.?.????. 1,1,1,4 +#..?????????? 1,6,1,1 +??.?.?..?????..??.?? 2,1 +.????##???#?. 1,7 +??#??#?.?#?#???? 4,3 +???.###???.??#??#? 5,6 +#.???.#?#????? 1,1,8 +??.??????.#?##??##? 3,9 +???????????#????? 2,3,2,1 +?##.?????##??#?.#?#. 3,1,6,1,1,1 +#?.#?????#.#???????? 2,1,4,1,4,1 +??????...?# 1,2,1 +#??????##??????.#.#. 1,8,1,1,1 +?????.????#? 5,5 +..??#.??.?????. 2,1 +??????#??.???? 5,2 +??##?#?..?????##??? 7,1,1,2 +#.??#?#???????##??? 1,4,7,1 +?#??#??.????. 1,2,2 +.#???.?#?#???????? 1,1,1,7 +??????.??#? 3,1,2 +#??.?.?#.?#?#??????? 1,2,4,4 +???##??#?.??#?????? 1,6,1,1,1,1 +.#???##????.???? 9,3 +.?????????#?#??? 2,2,6 +??#???##??????????? 4,8,3 +?.?#????.????????# 1,3,1,1,2,4 +???????..?#??..? 1,3 +.??.??##?????##.?. 2,3,4,1 +.????..?????? 3,4 +?????#???.???. 2,3,1,1 +?#?????#??? 3,4 +?#?#..????????.?.??# 1,1,1,5,1,1 +?.?????#.???#? 3,1,2,1 +??.?#?#???????#?#? 3,8 +???#???#?.#???.#??. 1,1,3,1,2,3 +??????##??????#. 1,8,1,1 +???#??#?????????. 8,1,1,1 +??.????????? 4,3 +????????.?. 2,1 +??????..?..#?. 4,2 +????..??.????????.?? 1,2,1,1,6,1 +.????.???.???? 2,1,3,3 +??#??#???????.???#. 1,8,1,3 +##???????#. 2,3,1 +?#?.??#??????.#??? 2,6,3 +.??##??.##? 4,2 +?##???.??#? 4,1 +?#?#?..?#?#?? 4,3 +.????#??????..## 6,1,1,2 +?##???????????? 5,1,1,1 +????.#.???? 2,1,1 +???..??#???#?????.? 2,9,1 +?????#?????..?. 1,2,2 +???.#.???#????? 1,1,1,6 +.?..?.##??.??????## 1,2,1,7 +#..?#????#?? 1,2,4,1 +##??.??#.?????? 4,1,1,1,1 +?###??.?#?##?#????# 5,7,3 +..#.?##?.. 1,3 +?#.#?.??????#??###? 2,1,2,3,3 +?????.??.????#???. 4,5 +???????#??##??.??#. 3,6,1,2 +.?.#?????????##?#.? 1,2,6,1 +???#?????????##???.. 6,2,7 +?#?##???????.????#?# 4,1,3,3,1,1 +.#?????.?????#?##?## 2,1,1,1,4,2 +?.?..#????#? 1,6 +.#?.?.???????? 1,1,5,1 +??#????????#? 6,5 +???.?#??#? 3,2,2 +??###?#?.?#..? 3,2,1 +??#??.?#?. 2,2 +?.???.???? 1,1,2 +..??#??????#????? 2,9 +??.???.????##???.?? 2,3 +?#?????.?? 1,1,1 +??#.?#?????#?????. 3,5,1,1,1 +????????#???????? 1,2,8,1 +?#????#.?#. 6,1 +???#???#???#?#?## 4,2,7 +???.##.????. 2,1 +?????#??.??#? 1,5,2 +#????????#?.#???? 1,7,1,3 +??.#???#.???. 1,5,3 +.#??#??#???##?#??? 2,2,1,8 +????#..??.????.?? 1,2,2,3,1 +#?????.#???#?.#????? 4,1,3,3,1 +?????????### 1,1,1,4 +?.??..###???# 1,1,4,1 +?????#?????#?? 1,2,5 +???#??????? 4,2 +.???.???#?#?#?? 2,9 +?#.?#.??#??#?..?? 2,1,4,2 +??????##??..?##?##?? 7,6 +###?##...#???.. 6,2,1 +????.?#.?#????? 1,1,1,6 +???.?.??#?? 3,3 +???..#.??#??#???..#? 1,1,1,9,1 +???##??.#?.???##..?? 1,2,2,5,1 +??????#?.??# 1,5,1,1 +#???.????.? 4,2 +.?????????.???#?? 3,1,1,2,2 +??#???.??? 3,1 +.?#?????#?#????.???? 10,2,1 +??##???#?##???.. 3,8 +??..?????? 1,1,1 +????..???#??#?? 1,1,5 +#???#.?????#?? 2,1,2,3 +#?##????#??.??.? 11,1 +?#??.?.?#?#??? 2,6 +??..?##?#???.? 1,6,1 +?.???????#.?#? 1,8,2 +#????#??????##..??. 10,2,1 +??.?.#..??????? 2,1,1,1,1 +?#?????##?#??#.?## 4,7,3 +??#?????#.??#? 5,2,4 +??????##?##??#..#?? 2,1,3,5,3 +.?????#?#???#?###??? 2,1,1,9 +????#?#???###.????? 12,1,1 +?.?.?????..?#?????. 2,4 +?#???..??#.??#??# 5,1,1,4,1 +???.##?????#?.??#? 2,2,1,1,3 +?#????#?????#??? 12,1 +?#???.#??.. 3,3 +?.#??#???????????? 1,9,1 +.?.??.??##????.? 2,6 +?#?#??#???????.? 1,6,2,1 +.#.????#???? 1,1,4 +???.#.?.???#?#?## 1,1,9 +#?.?##??#??#?????. 2,6,4,1 +?.#.???###??#?.#???? 1,1,1,4,1,4 +.??###???.??#????? 8,1,1,2 +??.??#????#?..?.? 2,1,7,1 +???????##.?#?#?#?? 2,4,6 +.?..????#?????# 1,11 +.??????.??? 1,3,1 +#???#?????##??? 12,1 +??#?##?????.?# 1,4,3,1 +?????.??#?#????#???. 2,13 +.#?????#??? 1,1,5 +??#?.???#????#??. 1,9 +..???#?..?##???. 4,4 +#??#.?#?????. 4,3,3 +#???#?#?#???.?????? 2,7,5 +?#??#???#.???#???? 5,2,3 +??????????????? 1,1,7 +?.???.???.. 2,1 +???#???.??.?????..?? 2,4,2,1,2,1 +#.???#.??? 1,3,1 +##????????.??? 8,1 +??.#???.??? 1,3,1 +???###?.??#? 6,1,1 +.?????..#.?##??#??? 5,1,2,3,1 +?#???????...#.???.#? 4,1,1,1,1 +??#.?.#??.?##?#?#?## 1,1,1,1,1,9 +#.?#..?#???? 1,1,1,1 +??????????#?????? 1,3,6 +.?#?#?..?...?#??.??? 5,1,4,1 +.#?#???.?.##? 6,1,3 +..?#.#??.#?## 2,2,1,2 +??#??.???.?#??##??? 5,1,6 +????????#????.?? 1,1,6,1 +?????##?????????#?. 8,2,1,2 +??.##???## 1,3,3 +????#?#??????. 5,1,1,3 +...????.??.??#.? 1,2 +#??.??.?#??????. 2,1,3,1,1 +?.#?##????.# 8,1 +?#?..?.#???. 3,1,3 +??##?????? 2,3 +?#??????.?##? 1,2,1,4 +#?#?#??.?????# 7,1,1 +????????.??#?? 3,1,4 +.???????.??????????? 7,2,1,4 +???#???????.? 1,8 +#????????#??.#.?.??# 1,5,1,1,3 +.?..??.??.#####?? 1,1,1,7 +#?.???.?????.????### 2,2,1,7 +..#.??.?#??? 1,2 +??.##??????.?.? 7,1 +.??#.?????.?# 3,4,1 +??????#??????#??.??? 3,3,1,2,3 +?.???.###?.? 1,4 +??...##?#?.? 1,4 +?.???.#?.. 1,1 +#.?###?..?? 1,5,1 +?.?#?##?#.?..#??#? 6,1,4 +###.?????#? 3,1,3 +???#?????##????? 5,5 +.??#??#????#.#???#? 4,1,4,3,1 +??#????..??#?? 3,1,1,3 +???##???##....?## 9,2 +??.?##????.?#.?#?? 1,2,1,2,1,1 +?####?##?????. 7,1 +#??..??????????#?#? 3,14 +#?#????..#?#? 3,2,4 +???.??#???? 1,3,1 +.?#??.?#???????.?? 3,5,1 +???..####.?.??? 4,1 +.?.??###?#?#??####?? 1,14 +??????.???..???? 6,1,1,1,1 +??????.?????????? 5,2,2,1 +??.#?#????# 1,1,6 +???#?.???????.? 2,5,1,1 +#????#???? 3,3 +????.???#???.?.? 3,1,5,1,1 +???#?#???? 1,1,3 +????##??????#?? 2,4,1,2,1 +.?#?###.??#?#?#?. 6,7 +?#.????#???? 1,2,2,1 +.??.?.????. 2,1,2 +.??..?.?.?###?.??. 1,1,4,1 +.???.?##.?? 3,3,2 +????????#????? 1,1,2,6 +..?.?###.? 1,3 +#??#?#.????? 6,1,1 +??????##?#??#????.?. 9,5 +..???.#?###. 1,5 +??.???#??#?#####? 1,11 +???.??.##?. 1,1,3 +.???#..?????? 2,5 +????#.????##????? 1,1,1,5,1 +???.?????##??## 1,5,2 +??????#????#???? 1,7,1,2 +??..?.?#???? 1,1,2,1 +????.#?#?????? 1,7,1 +?#.????#?#????. 1,5,1,1 +????#.#????##???.?.# 3,10,1,1 +.?###.#..#??.?? 4,1,3,1 +.?.??????#?????##??. 1,13,1 +?#??#???????##.#.?? 8,1,3,1,1 +?????.????###??? 2,1,4,1 +??#??#?#????.????? 7,1,1,1 +.?????.?.???.????? 2,1,1,1,2,1 +??.???.?#? 1,1,3 +.????#???????#? 1,3,3,1 +?##??.?????????#.? 4,2,4,1 +?.???##??? 1,4 +????#?.???#?????? 5,4,4 +??????#?????.???.##? 5,1,2 +??##??..?.?#? 4,2 +??#??##??????????. 1,7,5 +??#??.?#..?.##??? 4,2,1,2,1 +.??.##?.????????. 1,3,1,1,2 +##?.?.?.#???#?.# 3,1,5,1 +?##????###???#?????? 2,8 +.??###??.? 5,1 +?.????#????? 1,8 +#..#??.????.#?? 1,3,1,1,1 +#?????.?#?.#???? 3,2,3,4 +???????.#????? 2,4 +????##?????????#?.?? 2,2,2,3,2 +?#??.????#????#??? 2,1,10 +?.??.##?.?##? 2,3,2 +#??????##??#. 1,1,5 +?????????? 1,2,1 +.?????.??.?. 4,1,1 +??????#?#.#?? 1,4,1,1 +????????#?##?. 4,7 +?????.????.?.#??? 1,1,2,1,4 +??#????##. 3,2 +#.?#?????# 1,4,1 +.????##?????#??#?. 11,2 +???#???#????#? 5,6 +.?.?????????? 1,1,5 +??#?.??.??????? 1,1,5,1 +?##????#????#????.?? 2,9,1,1 +??????????#??.??? 11,1,1 +????#???.???.#??. 1,3 +##??.????##? 3,1,2 +????????#???#???.? 5,9 +??#?????###??#. 2,8,1 +?#????#?#?#????.?? 5,1,1,1,2,1 +????.??##.?#??#???. 2,4,6 +????#????????#???? 1,12,1 +?.#???????#??. 1,3 +#??.???##??.?#???? 3,2,2,1,3,1 +.#?.?.#????.# 1,3,1 +??.?????.??. 1,1,2,2 +.#?#?????????#?? 1,1,1,7 +.?#..?#?#?.? 2,3,1 +??????#??#??#??#?. 11,2 +#??#?????. 1,3,1 +.?#???.#???.#? 4,1,1,1 +.??#?#?#######?? 2,11 +?..?????###.??.??? 1,2,5,2,1,1 +.???#??#????????#? 7,1,1 +..??#????#????? 2,7 +#.##?????.????##??? 1,7,1,3 +?#?#?.??..#??? 3,3 +???????????#?#??. 2,5,4 +?.??????##.??#. 1,1,2,1,1 +..??.?##?????? 1,8 +?#.?.??#???? 1,5 +??#.??####??? 2,6 +?#?#?????.??.#.#.# 6,1,2,1,1,1 +??.##??#?#?????????? 2,9,4,1 +??#??.???#?#?? 3,1,4 +????#???##?? 7,2 +.???##?#??..#?.?#?# 4,3,1,2,1 +???#?#??.?# 5,1,1 +??#?#?????????? 3,1,1,1,3 +?#?#.??#??#.?#?????? 1,1,1,2,4,1 +?..???.???? 2,2 +??#?#.#????.#????? 5,1,3,4 +?##???#.?##?.?#? 3,3,3,1 +#????????.# 6,1,1 +???###.#????#????#?? 6,2,2,5 +???????.???????#?# 1,1,2,10 +?#???##???#?##???? 1,4,10 +???##???.#???#???.? 6,1,1,5 +?#?##?..??#?. 6,2 +?#???#?.???#??#?? 2,1,8 +#..?#?#?..?.?.?.#?? 1,4,1,1,3 +.?????.?#.???#?? 1,3,1,1,3 +#?#?.?.#?#??? 3,5 +.????????#?##????#?? 2,6,4 +?..#???#????? 1,1,5,1 +???.?.?#?.???#? 3,1,2,1 +#??.??????###?.?? 1,1,10,1 +.??.##???? 1,5 +.?.??.#.??#.? 1,1,1,3 +.????#???#??.## 2,3,3,2 +?.??????.?##?. 5,4 +?##??????.? 3,4 +?#?##???#.#? 4,1,1,2 +??#?#?#????#??#??? 5,7,3 +?#.#????#??#?.?? 2,10,1 +#?#????????.??#?? 1,1,2,3,4 +.#??#??????.#. 4,4,1 +?????.#?## 1,1,4 +?#..??#?##. 2,5 +?##?..???#?.? 4,1,1 +##?.#??#?.? 3,4 +#?????#?.?????#? 2,1,3,6 +..????##?. 2,2 +?#??.????##??#.??? 2,1,1,6,1,1 +#???#??#?#.?? 3,2,3,1 +??.?...?.??## 1,1,1,3 +.??.#??????? 1,1 +.??.##????#???##?. 2,6 +????###??###??##? 11,3 +?#???????#?????? 2,5,2 +??????#.?#??.?# 1,3,2,1,1 +??##?#????##???.? 1,13 +.?#??.?????? 3,2,1 +.?#???.?#??? 5,2 +??????#?.? 3,2 +?????#??????.? 1,2,2,1 +.??#?????.?.?? 5,1,1 +.??????#.##?#?# 1,1,6 +???#??#.##. 2,1,2 +####?#?????#???? 8,5 +????????????#???? 1,10 +???.??..?#???.??##?? 3,1,4,4 +????.???.????.? 1,2,1,2 +?.?.?????.???# 1,3,4 +??#?#?..?#??#??#. 5,7 +???.???##?..##?##?.? 5,5 +?#??..?###??? 3,4 +?????##.?# 2,3,2 +?????#??#?.?# 1,1,5,1 +#??????###???#?? 10,1 +?#?????????????#???. 10,2 +.???#??.??? 4,1 +..?.?###?##?#?????.. 1,11 +?.???????#?##? 1,11 +###????#?#?.. 3,6 +??####.??#???????# 6,4,4 +????.?##????#?? 2,8 +?.?#???###?#???. 1,2,1,3,4 +??#?.????.??#? 4,1,1,4 +?????..?#?? 3,3 +?????..??? 3,1 +??#????#.?.#???#?.?? 4,1,1,1,2,1 +????###??.???##?.?.? 7,1,4,1 +?..?.??..?.?.???## 1,2 +#?#???????????? 1,6,1,1,1 +?..#???#?.? 2,3 +.???##?.?#?? 4,3 +????##.#??###?? 2,7 +??.??????????#???. 2,2,7 +???.??.????#????#? 2,10 +?#?#??#???????#. 8,1,2 +?.#?????#??.?? 1,5 +.##???.???#??## 2,1,2,1,2 +#???##?#???#?????.?? 17,1 diff --git a/2023/haskell/aoc2023.cabal b/2023/haskell/aoc2023.cabal index 3844f0c..724b847 100644 --- a/2023/haskell/aoc2023.cabal +++ b/2023/haskell/aoc2023.cabal @@ -29,6 +29,7 @@ library Day09 Day10 Day11 + Day12 Day15 other-modules: diff --git a/2023/haskell/app/Main.hs b/2023/haskell/app/Main.hs index db4156f..417a4e9 100644 --- a/2023/haskell/app/Main.hs +++ b/2023/haskell/app/Main.hs @@ -12,7 +12,8 @@ import Utils (readInput) --import qualified Day08 --import qualified Day09 --import qualified Day10 -import qualified Day11 +--import qualified Day11 +import qualified Day12 --import qualified Day15 @@ -43,5 +44,6 @@ main = do --run 08 Day08.parse Day08.solveA Day08.solveB --run 09 Day09.parse Day09.solveA Day09.solveB --run 10 Day10.parse Day10.solveA Day10.solveB - run 11 Day11.parse Day11.solveA Day11.solveB + --run 11 Day11.parse Day11.solveA Day11.solveB + run 12 Day12.parse Day12.solveA Day12.solveB --run 15 Day15.parse Day15.solveA Day15.solveB diff --git a/2023/haskell/solutions/Day12.hs b/2023/haskell/solutions/Day12.hs index 7e89b0d..1e815c1 100644 --- a/2023/haskell/solutions/Day12.hs +++ b/2023/haskell/solutions/Day12.hs @@ -13,7 +13,7 @@ data Cell = U -- ? unknown | O -- . operational | D -- # damaged - deriving Show + deriving (Show, Eq) type Row = ([Cell], [Int]) @@ -43,11 +43,34 @@ parse = first errorBundlePretty . runParser rows "" rows = many row <* eof arrange :: [Cell] -> [Int] -> [[Cell]] -arrange = _ +arrange [] [] = [[]] +arrange [] _ = [] +arrange cs [] + | D `notElem` cs = [map (const O) cs] + | otherwise = [] +arrange cs@(c:cr) ns@(n:nr) + | canFill && canSkip = tryFill <> trySkip + | canFill = tryFill + | canSkip = trySkip + | otherwise = [] + where + (window, rest) = splitAt n cs + fill :: [Cell] -> [Cell] + fill = (replicate n D ++) + canSkip :: Bool + canSkip = c /= D + trySkip :: [[Cell]] + trySkip = map (O:) (arrange cr ns) + canFill :: Bool + canFill = O `notElem` window && n == length window && (null rest || head rest /= D) + tryFill :: [[Cell]] + tryFill + | null rest = map fill (arrange rest nr) + | otherwise = map (fill . (O:)) (arrange (tail rest) nr) solveA :: [Row] -> Int solveA = length . concatMap (uncurry arrange) --- >>> parse input --- Right [([U,U,U,O,D,D,D],[1,1,3]),([O,U,U,O,O,U,U,O,O,O,U,D,D,O],[1,1,3]),([U,D,U,D,U,D,U,D,U,D,U,D,U,D,U],[1,3,1,6]),([U,U,U,U,O,D,O,O,O,D,O,O,O],[4,1,1]),([U,U,U,U,O,D,D,D,D,D,D,O,O,D,D,D,D,D,O],[1,6,5]),([U,D,D,D,U,U,U,U,U,U,U,U],[3,2,1])] +-- >>> solveA <$> parse input +-- Right 21 diff --git a/2023/haskell/tests/Main.hs b/2023/haskell/tests/Main.hs index c0b6ec1..97b9c86 100644 --- a/2023/haskell/tests/Main.hs +++ b/2023/haskell/tests/Main.hs @@ -14,6 +14,7 @@ import qualified Day08 import qualified Day09 import qualified Day10 import qualified Day11 +import qualified Day12 import qualified Day15 @@ -297,6 +298,21 @@ day11 = \.......#..\n\ \#...#.....\n" +day12 :: Test +day12 = + let parsed = Day12.parse input + in TestList + [ TestCase $ assertEqual "A" (Right 21) (Day12.solveA <$> parsed) + ] + where + input = + "???.### 1,1,3\n\ + \.??..??...?##. 1,1,3\n\ + \?#?#?#?#?#?#?#? 1,3,1,6\n\ + \????.#...#... 4,1,1\n\ + \????.######..#####. 1,6,5\n\ + \?###???????? 3,2,1\n" + day15 :: Test day15 = let parsed = Day15.parse input @@ -320,6 +336,7 @@ tests = TestList , TestLabel "09" day09 , TestLabel "10" day10 , TestLabel "11" day11 + , TestLabel "12" day12 , TestLabel "15" day15 ]