From 99405e2ad06097d3c683ab5ef5a28172573789f3 Mon Sep 17 00:00:00 2001 From: Andrew Ekstedt Date: Tue, 12 Dec 2023 09:15:32 +0000 Subject: [PATCH] day 12 solution --- day12/input | 1000 ++++++++++++++++++++++++++++++++++++++++++++++ day12/sample1.in | 6 + day12/sample2.in | 6 + day12/sol.tcl | 42 ++ day12/sol2.tcl | 101 +++++ 5 files changed, 1155 insertions(+) create mode 100644 day12/input create mode 100644 day12/sample1.in create mode 100644 day12/sample2.in create mode 100755 day12/sol.tcl create mode 100755 day12/sol2.tcl diff --git a/day12/input b/day12/input new file mode 100644 index 0000000..500449c --- /dev/null +++ b/day12/input @@ -0,0 +1,1000 @@ +.##????.?.#.????? 4,1,1,3,1 +???#??.?#??.? 2,2 +???#??#?#?#???#???#? 8,9 +???#?##??..?#??#? 9,2,2 +???##????????#?? 7,4 +..?????.???? 1,1,1,2 +?#?.???????.#. 2,1,3,1 +?????#.??#. 2,1,1 +?##???.???#?...?? 4,3 +#??????.#??? 4,1,1,1 +??.??.??????#?? 1,3,4 +.?.#?.????#.?#???# 1,1,1,1,6 +.#?#?????.?..#??##? 5,2,2 +??????????????## 3,4,3 +?#???##?????? 3,2,1 +..??.????#?.? 1,2 +???????##? 1,5 +??#???????#..??????. 11,4 +????##????#??#?? 10,3 +..???????. 3,1 +?#??#?#???.#??#?#?? 9,1,5 +?#?????#?#???#?# 1,3,1,1,3 +??????#???? 1,1,6 +??#?#??#??#?#?? 3,10 +??#?#????#??# 2,1,3,1 +?#???????? 1,3,1 +.????.??#??? 3,3 +????.?#??..#? 1,2,1,1 +##?.????.?.?. 3,1,1,1 +.?.??..#??? 1,1 +#??????.??.#??.?? 1,4,2,3 +?..??#.????? 1,3,1 +???###.?#?? 3,3 +?#????..??.???#?? 5,1,1,3 +??????.???? 1,1 +?#?#??#????.#?? 4,1,1,1 +.?#??#????? 5,2,1 +??#?#???#. 3,2 +??.??????.? 1,1,1 +.????#??#?????#??#?. 1,16 +??##.??#??#?#?? 3,8 +.??##?.????? 1,3,3 +#????##?#?? 4,4 +??????#?#???. 3,6,1 +???.???##??#?? 2,1,3,1 +.??##???..??##.? 4,4,1 +.??#?#???.?#??#?? 7,1,1,1 +?????#.?.??# 4,2 +#??.?#????#?. 3,7 +??????.?????#?##?#? 3,2,1,5 +???????..??#??.???. 1,4,5,2 +?.?#????????? 5,2,1 +?????.#?????#?#? 1,2,1,1,3 +.?.?.??###???????#?? 7,1 +.??##.#??##??#?? 4,10 +?..??#??#????#.??##? 11,2 +.????#????##???#?? 2,12 +??.???#?##? 1,1,5 +.#??###????.???? 10,3 +?##????.?.#??.#??? 5,1,3,1,1 +??????????#???? 1,1,1,8 +#??#???#?##?..#???#? 5,6,1,1,1 +?????#??#? 1,3,1 +???#????.???#?#?.##? 6,1,1,1,3 +.#??.?????##?.# 3,3,3,1 +??.?#?.?#?? 1,4 +##?#..?????##? 4,1,2 +?????#???? 2,1,1 +???#...????# 1,1,1,1 +??#?#??#?.##?? 8,2,1 +#???..#.?.?#?..?..# 3,1,1,2,1,1 +?????.???#???.? 1,1,2,3,1 +??#?#?.?????????? 4,6 +.?.#????????? 1,1 +??????.#???#?? 4,1,2,3 +????????#?#?? 6,3 +##???###?#??.??# 2,8,1,1 +??#??..????????? 1,2,4,1,1 +#.##?#?#.?????. 1,6,4 +??##??#???..?? 2,2,1,1 +..??#...?#??#?##?? 2,7 +??..?????#??.? 2,7 +?.?##??.???#??? 1,3,3 +?.?#?????##?#??. 1,6 +#???##???. 1,3 +??#??.?.????#?#?.?? 2,1,1,5,2 +???##?????.?#?? 1,7,1 +.#.?.???.??? 1,1,1,1 +.????.##?? 1,2,2 +??#?????.#??##?# 6,1,1,2,1 +.???#?.#?...#?# 2,2,3 +?#????#???## 3,2,1,2 +?#??#.#.?.????? 2,1,1,1,4 +.#?????????#? 2,2,2 +.?#?#?????#??##??. 7,1,3 +?.?#..??###? 2,4 +?#??#???.??#?.#?##? 5,1,2,4 +##.??.#?????##.???? 2,1,8,1 +.?#?##?.???? 5,1,1 +##??????.??? 4,1,2 +.????.#?#???????? 2,3,2,3 +?#?????#??.?????? 2,4,1,2,1 +#???#??#???##?.? 1,11 +.???????????? 1,1,1,2 +#??##?.?#.???..?##. 6,2,2,2 +??.??.?.#?##??.???? 1,1,1,6,1,1 +#??.?#??????#?????.? 1,3,6,2 +????????????##??. 5,7 +##.????...??#?? 2,3,3 +?.#.??.???# 1,1,2 +?.??.##?.#??? 3,2 +??#?##.?.??##. 4,4 +?.??#.??#.?#??## 1,2,3,6 +.?##??????????? 9,2 +?????#????.?#??????? 2,1,2,3,1,1 +?????.???##?? 5,4 +?##???....?.? 4,1 +?.?#?????#?.?.?.? 9,1 +??#?.???????? 2,4,1,1 +.??.??.??.??##. 1,1,1,1,2 +.#???..????????. 1,1,1,3,1 +.??.??###?##????#?? 1,11 +???.##?##.?##?? 3,5,2,1 +????.?.??.???.? 2,1,1,3 +.?????##??##.?..??# 1,1,6,1,2 +???.##???? 1,5 +.???.??????. 1,3 +#???????#.?? 5,1 +?#?#????#? 4,4 +?..#?#.?????#.?? 3,4 +.?#?#?#?.???. 5,1,1 +?.?#..?.???????.? 1,1,1,7,1 +?.?????????#??????#? 1,1,9,1,1 +???.???????.?. 1,5,1 +?.?????#.??..?????. 6,2,3 +?#????##??# 2,6 +?.????????##??##?? 1,5,3,2,1 +.?????????????. 1,1 +..?#?.??????.? 2,4 +?..##?.#???.???? 1,2,2,1,3 +?#???#?????###????? 1,1,2,7 +?#.#????#??#??# 1,1,1,1,5 +??.?#??#????.. 1,1 +???????##?.???##???? 7,6,2 +????#..??.?????? 1,2,1,1,1 +.????#?.???? 5,1 +.?????.#?.... 2,2 +??#??.?.?.???? 1,2,1,4 +.????#?????????# 9,5 +??????#??#.?? 1,6 +??##?.???????.#?. 3,3,1 +#?#??#???.???##?? 8,4 +.??.??#???. 2,3 +??#..????.??? 1,1,1,2 +???????#??.?. 3,2,1 +#?##??????##.??#??.? 12,3,1 +#??#?##?.??###???? 1,5,8 +#????.???#??. 1,2,3 +?????#.??.??.?? 2,1,1,1,1 +..#?????????...?#?#? 10,4 +?#??????#?#?? 3,1,5 +??????????.##????.? 5,1,1,6 +???.????#????#????#? 3,4,5,1 +????.?##?????? 2,2,1,1 +.???.#?.?? 1,1,1 +?????..?##??? 1,1,3 +???.#??????? 3,1,1,1 +???#??#??#?#???##? 4,11 +??#???.#???.?#.?? 5,2,1,1 +???.#?.?????. 2,2,2,1 +?.#??#??#????#? 1,4,4,2 +???.??#.?##????##??. 1,1,1,1,10 +#?????##?#????#?? 1,1,8,1,1 +#????#????.??##. 4,1,1,1,2 +.???#.??????? 1,1,3,1 +#??#???##????.?? 12,1 +?.??###...?##???.??? 3,5 +???.#?.???#???????#? 1,1,2,12 +###??##?#??#????#? 3,13 +??#.????#??#?????? 1,1,11,1 +##?###?.??????? 7,1,3 +???.????##?#?? 1,1,6 +???.??#???#? 2,1,1,2 +.#?#??#?##?#?.?#?.?? 11,2 +.???.????#.????#?.?? 2,1,2,6,1 +??..#??.#?????. 1,2,3,2 +?????????#?#??? 1,1,5 +?###?????#.##? 6,2,3 +??#?.?#?.?.?#????#. 4,3,1,2,1,1 +?????..???#?? 3,3 +????.???##???? 1,7 +?.????.????#??? 1,2,1,1,3 +?????#?#??? 1,7 +?????.??##?#??.? 2,8 +??????###????# 3,7,1 +#?#?#?..#??#?????##? 6,2,8 +??#???????????#?? 3,3,4 +#?.????#????#????? 1,12 +???#?##?#.#??.?. 7,1,3 +?#????????????? 1,3,1,1,3 +????.????#???.##??. 1,1,1,4,4 +...???##??.. 3,1 +??????.?#? 4,1 +?#???#?.?#????## 5,1,3 +???.????#?.#.?.???.. 2,6,1,3 +#.??.#??#??#???? 1,1,9,1 +???.#?.?###?. 2,1,4 +#.??#?????#????.#? 1,1,1,1,6,1 +#???#???????#?? 2,7,1 +???.????.?.??????.? 1,1 +.????#??.?#?#?????? 6,5 +.??#??..??. 4,1 +.??#????##??#??.?? 4,3,2,1 +??????.?#??? 3,2 +??#??#????? 3,2,3 +?#?#??.?.???.??### 2,2,1,1,4 +??##???.??.. 1,2,1,1 +#?#???#???#????#? 9,1,1,2 +?.??##????#??#?##.. 3,10 +.????????###??????? 1,1,1,10 +?#..#?.??#? 1,1,2 +?##.?.??##????#.# 3,1,2,1,1 +?.?????#?#?.??? 1,6,1 +?????#?.????#??#? 5,7 +?#.#?#??.? 1,3,1 +..???????.??? 5,2 +???.?#????????? 1,1,2,1,3 +??#?.??###??? 3,4 +.#..??????#??##?##? 1,8,2,3 +..?????#??.? 4,1 +??..?.#.#?#???? 1,1,1,7 +?.???????.?#?...??#. 1,4,3,3 +#..?#??????.?# 1,4,1 +?.?????????##?????.? 1,2,1,5,1,1 +???##?#???#????.#?#? 4,7,1,4 +???.??????? 1,1,1 +????##.?#????????? 5,1,1,1,1,1 +??#??#??????? 3,7 +#?#???????..?.??.# 1,4,2,2,1 +?#??#????? 6,1 +?.?#????????#. 2,5 +??#..#?.?#??#?? 2,1,1,1,1 +???????.?. 5,1 +.?#?#????. 1,4 +?##?..??#? 2,1 +.#???.??.? 2,1 +.??#.??.??#?? 3,1,4 +???????.???? 5,1,1,1 +.?????.???#?.????? 5,1,1,1,1 +???#?#?????#??????# 1,1,3,9 +??????#.???..??? 4,1,1,1,1 +#.?.#??#.?#?? 1,1,1,2 +##?.??????# 3,1,4 +?#?..?????##????#?? 2,14 +?#?.?#???????????? 2,13 +??#???????#? 3,1,1 +.??????.?? 2,1 +?????#????#???#??.# 7,1,1,2,1 +?.??.#.?#??? 2,1,2 +??..##????#???? 4,2 +...???##?##???????? 12,1 +????????.????#?#?. 1,5,1,4 +?#??##??????#?? 9,2 +???..???#???#?# 1,1,4,1,3 +???###?#??# 1,6,1 +?.??..?#?#? 2,4 +?.???????#???###???? 1,15 +.?..????#?#???? 1,8,1 +?.?#?????.?????????. 7,5,3 +??????#??.#?? 3,4,3 +???.??#????##.? 1,1,4,2,1 +?.??#??#.??# 1,2,2,1 +??#??#??.?.?# 7,1,1 +?#..???#??? 1,4 +.#?#?#.#????.??#?? 3,1,1,1,2,1 +??#?????#### 1,7 +#..????#.?.???#??##? 1,1,1,1,8 +#???#???.#??? 1,3,3 +#?????.???#.??? 1,1,2,1,1 +.??????..??#?? 1,4,4 +.???????#??#? 2,3,2 +?...???#?????????#? 1,9,1,1 +??????#???. 6,1 +.#??#?.??#?.?.?.#?. 5,2,1,2 +??.????#.?.??#?### 2,4,1,1,3 +?#???#???.?#???##??? 5,1,3,5 +#??????#??? 1,1,3 +??#?##????##??#.??? 12,1,1 +.#????#???#?????.?? 1,6,3 +.#??##?.?#? 1,2,1 +??????#??????#????. 1,13 +.??.?#.????. 2,2,3 +?????.?.## 4,2 +?.?#??#????#??#?? 4,5 +??????#???????.??? 1,7,2,1,1 +##?#????#?.#??? 5,1,1,1,2 +??#?#?##.##??? 7,4 +??#???.?#?? 3,2 +???#??.?#??. 4,2 +?#???????.#??????? 5,1,1,5,1 +?..?#????#?? 1,2,1,4 +?.??.##???##???#? 8,2 +??.?#???#???? 2,1,7 +?????#.??#??#? 3,5 +.????#??.#??? 2,4 +???####.????. 6,1,1 +..?##?????.?? 4,1 +?#.??#????? 1,3,1 +...??..???##? 2,5 +??..???#?#?????#?? 6,1 +###????.?.#??#### 3,2,1,7 +#??.??#???.?###?#? 2,1,1,1,7 +??#??.#??#.# 3,2,1,1 +??#?..?##?#. 3,4 +??.???????#???#..? 4,6 +??#???.?????.#? 6,1,1,2 +#??#??##?##?.????? 12,2 +#??????#?##???#??.. 2,1,8,1,1 +???.??#??? 3,5 +???.#????#?#??#?..#. 1,3,1,4,1 +???.???#?#??#???.? 2,1,6,1 +????????????#??.??? 1,3,1,3,2 +.?..?#??#. 1,5 +?#.##.??##??? 2,2,5 +#.?????#???##?? 1,1,3,6 +?????????? 2,3 +##?#?????????? 6,6 +#?????#??..##?#? 3,4,4 +.??.?.?#?##?? 1,5,1 +..??#?#??..##?# 1,5,4 +?.????#??? 1,2,1 +???#????#???# 4,2,1 +???#..???#??.? 3,5 +..??.??##??.??? 2,5 +.????#??..#? 2,2,2 +????????##??#?? 7,2,3 +?????.???????.?##??? 2,1,1,1,1,6 +.?#?????.???##??? 2,1,6 +???#?#?????? 7,1 +????.???#????????#. 1,1,1,4,2,1 +??.?.??#??????????.# 1,1,8,1,1 +????.??.??.?. 1,2 +.#????#???? 1,2,1 +#?#?#?#..?????.??. 7,3,1 +???.#??????.#?#. 2,1,3 +?????#???#??? 6,1,1 +?.?????..#????? 5,3 +.????.#?????.? 1,6 +??.???##.??#???? 2,1,2,3,2 +??#????????????#??# 15,2 +##??????.????. 4,1,1,1 +????#?#??..? 1,6 +??#????????.? 3,4,1,1 +?#..??#????????? 2,2,4,1,1 +?????#?#???.????? 3,3,2,1 +##?###?#??#???.? 11,1 +?#????.???#????. 5,5 +?.#??.?.???# 3,3 +?#?????##??#.?? 4,3,2,1 +.??.?..??#???#.?.#? 1,1,7,2 +#??????.#? 1,4,1 +????#???##??? 1,1,4 +#.?#?#???#? 1,4,1 +???.#??#?###?#?#??? 1,1,1,5,1,2 +???#????????..#??.?# 7,1,1,2,2 +#????????##??#? 1,1,3,6 +?????##?#?..? 1,7 +#?????##????#??## 8,3,2 +.?#????.#??.??# 5,1,1,1 +?#??.???####??..???? 3,6,4 +?#???.??#???? 2,6 +.?.??.##???##. 1,1,3,3 +??#??????#?????#?#? 1,1,1,1,1,8 +#?####????#??? 7,2,1 +??.??????? 1,1 +.?#??...?##????#??. 4,9 +??????#?.???# 1,4,2,1 +?????.?#??.?? 2,1,2,1 +#?.?##?##?#?.??#?#?? 1,9,3,1 +.#??##..???.#?? 5,1,1 +??##?.##???. 3,2,2 +#???????????.? 4,3 +.?.?#?#??# 1,4,1 +.##??#??###???.? 5,3,1 +?.??##??#??#?#??.#. 1,2,1,2,2,1 +?#???###.#?.### 2,4,2,3 +???#???????.?#.##??? 8,1,2,2 +.#?#??#.?.??? 1,4,1 +???#???????#?????#? 1,1,2,5,5 +?#?????????.??#?#??# 1,1,3,6,1 +?#??#???.?.?. 4,1,1 +#?#???????? 5,1,2 +?#??#?.?????##??? 5,1,3 +#.#?#?.?##??? 1,4,5 +????##??????..#?## 7,4,1,2 +??..????.#.?#????? 1,3,1,1,3 +.?#?#?.#??#???????.? 3,4,1,2 +?###.?#??????? 4,2,2,1 +??##?????????##.# 9,2,1 +?.???????#???#? 1,4,2 +#?????????# 1,5,2 +?????????#??.????# 1,2,5,5 +???#??###.?.??? 1,2,3,1 +?#??#???#????? 8,2 +#??.##????.??.?.#?. 2,4,1,1,1,1 +#?.#?#??##?..???#?? 1,8,4 +????.??#..?# 2,3,1 +.??.????.?? 2,3 +??????#??????????#?? 1,5,1,1,1,3 +??.???#??## 1,7 +?...???#.?..???.?? 3,1 +???#?#??#???.#.#. 11,1,1 +?????????????.?.??? 9,1 +?????????#????#.? 1,7,3,1 +????#????.?.?#?? 4,1,1,3 +.??##??????? 4,2 +?##?#???#.?? 7,1,1 +????#?????#?#??.???? 1,2,1,4,1,1 +?????????#??? 1,2,3 +?.###?.????.???#?? 1,4,2,4 +???#???###?#?.#?.??. 2,8,1,1 +.#?????????? 5,2 +?#?.#???.#??#? 1,3,1,1 +#?#????##? 3,1,2 +.#.?...#??? 1,1,2 +?????.?#??.#?? 1,1,4,2 +?#?##..??????.??# 4,1,1,1,1 +..???#??..# 2,2,1 +.#????.???#? 1,2,1,1 +#???.#..???#?????? 1,1,1,1,5,1 +???.?..???#?? 2,1,1,3 +?.?#.?#??#?...#? 1,2,5,1 +????.???#?#?? 2,6 +????#.#??#?? 1,1,2,1 +.????##???.? 2,6 +???..???#?#???## 1,1,4,3 +..?.??#???##?. 1,1,1,5 +..??????###? 2,5 +..??#?##?#??????? 9,1 +?##?#.???#????.??? 2,1,1,1,3,1 +.#.#????#?##?#???? 1,2,10,1 +#???##??#???? 2,3,1,1 +??#???#?#????? 1,1,1,2 +.??#?.??.??.? 2,1 +?#????????#.?.# 2,1,4,1,1 +???.??????????# 1,2,2,5 +??????????????? 2,1,5,1 +??????????#???#? 1,4,8 +##?..???#?#?? 3,2,3,1 +#????#??.? 1,5 +??????#???#???#?. 10,3 +.?#?.???.?? 1,2,1 +????????????? 1,4,1 +???????????? 4,1,2 +??.#??????.?? 1,1,1 +?#..??????? 2,1,4 +?#??.??#??? 1,1,6 +???#?#.?????????? 3,1,3,1,1 +???#?#????#???##? 1,4,8 +????#??.?##?.??? 1,2,3,1 +???##?..???.. 5,2 +.#???##??#??????. 1,9,1 +???#????#???.?.??. 3,1,1,1,1,1 +??..###???#..?#. 1,7,1 +???.#?????.#????#?## 1,1,1,4,1,4 +????.???#.#?? 3,3,3 +???#???##.???? 4,2,1,1 +?#?##.???? 4,2 +????????#??.?????? 1,5,1,1,1,1 +.##???#??? 2,3 +#????.?#????.?. 1,1,6 +?.??.??#?##?#.???..? 1,1,7,1,1 +????#??#??##.#??. 1,2,1,3,2 +??????#???.##?.??? 5,4,3,2 +.?????#??#?????##. 1,4,4,3 +????.??.#?.??#.###? 4,2,1,3,4 +??.??#??????????.?? 1,3,1,2,1,2 +????#???.???#. 6,1,1 +#.?..#?.??????#????? 1,2,10 +.??#?#?#??#.??#? 9,2 +??????????. 2,1,1 +.?.????#?????? 6,1 +??#?..????? 4,1,2 +?...???#?#? 1,4 +???????#??#. 1,3,1,1 +#?#???#??? 1,6 +??????????.?##? 2,6,4 +.???????.#?#.??.?# 1,2,1,3,1,2 +?#.?..#????? 1,1,2,2 +.?.??#????. 1,1,2 +.??#?#????????????? 1,3,1,1,4,1 +.#??#???#?? 4,1 +???#..???#.?? 2,4 +?.??.?.?#?? 1,1,3 +.?.?.#???.??#.??.? 1,2,1,2,1,1 +#??##?.?.????? 6,1,1 +????#??#.????.#?# 1,4,3,3 +??##?##?????#?#???# 14,2 +?#?.?#.##?#?##??#?# 1,1,10,1 +#?.?#????????.?# 1,5,1,2,1 +??.??##???##?# 1,9 +#?.??#?#??????.????. 1,7,1,1,1 +??????#??.##?.? 1,1,1,2,1 +????#????##?.? 8,1 +????#?.?#?.? 2,1,1,1 +.??#?.#????????.. 3,2,4 +.??#??????. 2,4 +????.#???? 2,1 +??.#?.??##???#????#? 1,1,1,9,1 +??.?#?????# 1,5,2 +???????????# 1,1,4,1 +??##.?????#???####? 1,2,13 +#.???#??#????? 1,7,1 +???????.#???#?? 1,1,2,1,4 +??.?????#?.?#?#?? 1,1,1,2,4 +#???#??.??. 7,1 +??.?.??.???? 1,1,1,3 +.?#????#??#??## 2,2,1,5 +#??#??#??##??##???#. 1,13,2 +?.??#????##???.?#?.? 12,2 +..?#.???.? 2,1,1 +?????????.?.. 6,1 +???????.??? 7,2 +.???#?##???#??.? 2,5,1,1 +??#????#.?? 2,2,1 +###????#??#?????#? 8,3,2 +??.#??.??#?#?#. 2,1,1,3,3 +.#.?#.?#?.?.??? 1,1,1,1,2 +.#??#?##.?.. 2,4 +????#????#????? 1,1,6 +??#?#?.?#????? 3,2 +?#..???.???#??#. 2,1,1,3,1 +?????????.?## 2,3,1,2 +?.?#??###???#???#?.? 1,11,3,1 +.?#?.???.?????#?#? 2,2,8 +?.?.#???????## 1,1,1,7 +???????##???. 1,7,1 +?????????#??#??# 2,1,3,2,1 +.??.#?##???#???.#?? 1,11,1,1 +?..?##??#?# 1,6,1 +??.?.?.#??#?#. 1,6 +?.#?#.???#?##? 3,6 +??????????#?????#.? 2,4,1,5,1 +?.?#???.?##?. 1,2,1,3 +??#???.?#?? 1,3,1 +?.???#???#????.? 1,9 +.???????.#???. 6,3 +??##?????#?#??#?.? 3,1,5,1 +?#????.?????? 3,2,3,1 +?.???#??#.????#?? 5,2 +??#?#???.?.?#?? 5,1,1,1,1 +????#?#?#???#.. 5,5,1 +#????????. 1,4 +?#.#?????#?? 1,2,1,3 +?.??.???????#??..? 3,4 +?.#???#???.#??? 6,1,1 +.#?.#.??#????#???# 2,1,3,3,1,1 +?????#??###???##?. 7,3 +.???#????#????##???? 1,1,4,6 +#.#?????.?????#?.# 1,2,1,4,1,1 +?.?#?????? 1,3,3 +?????.##?.?.?#.?#? 2,2,1,2,2 +?.??#??..?#?##???. 5,5 +??#.#.#.?####.###?? 1,1,1,1,4,5 +.?????????#. 2,1,1,1 +???????#.##???##.?? 1,1,1,7,1 +??.????.?. 1,3 +???##??.??????????? 4,1,3,1,1,1 +??#??.?##??.??? 2,5,1 +.?.###.?#????? 1,3,6 +.?????..??.?? 4,1,1 +#????.??#??????#???? 4,6,3,2 +?..?#?.#????##???? 3,3,5 +??#?#??##???#???#??. 1,14 +???#???#.? 3,1 +?.???#??#?????????? 1,11,2,1 +??##????#?????.#?? 6,1,1,2,3 +??##.??#??#?.?? 4,1,2,2 +???##??#?#???##?. 9,3 +?.??#???#????? 1,5,1 +?.?.??.?#.? 1,1 +?????##???. 1,6 +.#??#??#???#???#??? 12,4 +???.#???????? 2,1,6 +??#???##???#?##??? 3,3,7 +???.##???.??#?#. 2,3,1,2,1 +.?.?#???????. 1,2,2,2 +?#?#?#?.#.?????.# 6,1,1,2,1 +#??#..???##????.?.?? 2,1,6,1,1,1 +????#???????.? 1,1,1,3 +?????#.#???##????.# 4,3,6,1 +?#.??..??? 1,2,1 +.???#.?.?? 1,1,1 +.?????#??.??#???# 6,6 +?.#????????#?.?? 2,5 +??????#?.#?#?#????? 6,5,3 +?#.???.??#?????#.?? 1,1,1,7,1,1 +..?##?.?????. 2,4 +????????.???#???#? 5,6 +?.#?????#??#??????#? 1,8,6 +???#???????##.??. 7,2,1 +?..???#?#? 1,4,1 +?##?#?###??????.? 11,1,1 +#..???#?#?????????.? 1,13 +??#???.??#? 1,2,2 +#?#?#????????#?????# 1,1,1,1,2,7 +?#.????#???#?#?.? 1,3,1,6,1 +??..?.?#... 1,1,2 +?.?.??.????.? 2,2 +?.#????????? 2,3 +????.???##?? 3,3 +????.#????##??## 2,2,8 +??.##??#?????#???? 5,5,1 +.????????..?.?.???? 3,2,1,1,2 +??#?#?????#?.##?. 1,5,4,3 +??.?.?##??#???. 1,8 +?#?????.## 6,2 +.????#?#??#??# 1,8,1 +?#??????#??#???????# 1,1,13 +.??#.?#?...?????#?? 3,2,1,1,1,1 +#.?.???#?####?#?? 1,1,12 +??##?????##??... 3,6 +#??#?#?..????#?##? 1,3,1,5 +????.#???#? 1,1,2 +??..??.????????? 1,1,2,2 +????.??????? 2,1,1 +??????.##.?? 2,2,1 +?##??#????##? 6,2 +.#???.?.#.???. 4,1,1 +???.?????????? 1,2,4 +????##.???? 2,2,1 +???#...???##?. 1,1,6 +..#???##?#????.?# 2,7,1 +?.#??????????.#?.?? 1,2,5,1,1,2 +###???#???#?????? 12,1,1 +???.?#?#?.?.? 1,4 +.????.##???#????? 2,1,10 +.??????#?#? 1,4 +???.???#??? 1,1,2 +?#??.??????#?? 3,1,4 +????.?????? 4,2 +?.??#????#?????#? 1,3,1,2,2 +?????#.????# 1,3,2,1 +##?.??.#.?? 2,1,1 +#??.?.???#???? 1,1,3 +??#??.#?.? 1,2,1 +?#?.?##??#?.?.#. 2,2,1,1,1 +??#.?#.#?????.?.??? 1,1,1,6,2 +?#?##???????#? 2,3,6 +?????#?.?#?.? 1,1,2,1 +?###??????????????. 3,5,4 +...?????????. 3,2 +.?.#?.#???????.? 1,3,1,1,1 +??#.??????.??? 3,6,1 +???????#?? 1,2,3 +??????.??#?.??#..? 4,4,2,1 +?.???#?##...?.?#??. 5,2 +?????..##?? 2,4 +?#????.?#????? 2,2,1,1 +?#??##??##???.#?.# 1,7,2,2,1 +#???#???????#?.? 2,6,2 +???#??????##?#.#?# 3,1,2,4,1,1 +?..#..????? 1,1,3 +???????.?#???.?? 1,1,2,5 +##?????###.?????#? 2,2,4,6 +?###?#?????##? 4,1,6 +?????..??????#?# 1,2,2,3 +?#?#?.#???? 2,1,5 +?.?#?#??#??.??#. 6,1 +?##.?.?.????#.? 3,1,3,1,1 +??????##?????#?? 1,6,2 +???????.#.??# 4,1,1,1 +.??????#..??#.? 6,3 +?#?#?????.###????# 1,1,1,1,6,1 +.?????###??.?#????#. 7,7 +????##????#??. 6,1,3 +??##????????????.?.? 5,4,3 +##..###????.??? 2,3,2,2 +??##.?.?.#???.?#??#? 4,1,4,6 +???#???????#?? 1,2,6,1 +???#??##?#.#?#? 8,1,1,1 +.???##?#??#???#? 8,5 +?.???????#.??#? 1,2,2,1,2 +??#?????#. 2,4 +????????????##?.?.?? 1,9,1,1 +?##?.??.#.??#?#.? 4,1,1,4,1 +?.????#.???#????? 1,1,1,6 +?.???????. 2,2 +.?#?###??##??????? 1,7,2,1 +#?##??????????#???#? 1,2,1,4,1,1 +.??.??.???.#?.?.? 1,2 +???????.???#??#?.? 1,2,2,6 +????.?????? 2,4 +??#.#?#?????? 1,1,2,1 +?????????#.?## 1,8,2 +?.?????.???? 1,2 +??????##??##?????? 1,11 +.?#??#??.?.? 2,1,1,1 +??????.??? 1,1,1 +#?#??#??.??????? 6,5 +??#?#???#.#??? 6,1,4 +????.??###?? 1,5 +?#????????? 1,1,2 +???#????.??..?. 3,2,2,1 +??#????????#??????# 5,1,3,1,1 +???.#?#???????..?. 4,4 +?????.???##?.? 3,5 +???..???#?#???? 1,8 +?##?.????.. 3,3 +???#??..?#???### 3,2,4 +??##???#???#?#??? 1,7,1,1,1 +???.?????????#?.???? 1,1,8,2,1,1 +?????????..?. 3,2,1 +??.?.?????#??. 2,1,4 +????#?#?.##?#???#?#? 6,11 +?#????.??..??????? 1,1,1,1,2,2 +??##?????#??#??.? 4,1,6 +.???#????.# 7,1 +?##.?.??#?? 3,3 +??##?????##??.#?? 1,9,2 +?#??.?????.?? 3,5 +???.???#?## 2,7 +?.#?.???##?.? 2,5 +??#??#####??#??? 3,6,2,1 +#??#?#.?#.??#?#??# 2,3,1,3,1 +????????#?#? 1,9 +?#.???#??? 1,1 +??#???##??? 2,6 +.?#?#?#??#???.? 3,2,1 +?.???.???#? 1,1,4 +???????????.# 1,3,1,1 +?#??????#??#??.?#??. 5,6,3 +?????.?#.. 2,1 +???.???#???#??#???.? 1,1,3,8,1 +?.???#??...?##???#. 5,7 +?.???#?#??? 1,5 +#??.??.#??##????? 1,1,1,5,2 +???????#?.? 1,1 +?.??#?#????????#?? 1,1,1,1,1,6 +??????#?#?#??# 1,1,8 +????.??#??#. 1,6 +#?????#???#? 4,2,2 +??#?????.#?????? 2,2,7 +?#???##?#?##?#???? 14,1 +##??????????#?#? 8,3,1 +?#.#.??###??#???#??? 2,1,9,1,1 +.????##???.????? 4,1 +???##??#??#?#?. 6,4 +?#?.???.?#???? 2,1,3,1 +?.????.??##??? 1,3,3 +????###?#??????#???? 12,1,1,1 +.?#?.??????? 3,3 +??#?#?#.?#.??#.???? 5,1,2,2,1,1 +.#.?.?????#..??#?.?# 1,1,6,1,1,1 +?#?###.#..? 5,1,1 +#??#????..????#?##?? 6,1,1,8 +??#?###?????#??? 13,1 +##?.?.?#??? 3,5 +??.?#?##???# 1,8 +.??.??.#?#?#?# 2,1,7 +???#???#?#????.??? 12,1,1 +?.#.##??..???? 1,3,4 +.??#???##??????# 7,5 +?.?????#????? 1,10 +#?.????#?#.?##?# 1,1,5,5 +???????????.?##??. 10,2 +.#?.#??#???.# 1,5,1,1 +.?##??.??.?? 3,1 +??.??????#? 1,5 +??###????#?#???????? 6,1,3,1,1 +???.?.#???#??????##? 1,7,5 +?####?#?????.### 8,2,3 +??#??#?#?..#???. 2,4,1,2 +?..??.?##...?? 2,2 +#.?.?#?#??????#???? 1,1,4,1,3,1 +...?.???###??#??.. 1,6,4 +?????..???????.??#?. 4,5,3 +????????????#??? 1,7 +.#??#????#??#?#? 1,11 +??#.??##.?? 2,2 +????.??#?? 2,2 +?#??##?#?#.?#???? 9,1,2 +.#?????.???.???.#?? 2,1,2,2,2 +???#?.???????? 4,2,2 +.?#?.?#.?? 2,2,1 +.?###?????#???? 7,2,1 +???##???????????#??? 1,2,9,1 +##????????? 3,2,3 +#.??.?##??#.??# 1,1,3,1,1 +.#??????#??##?#????? 1,2,2,7,2 +.????#??.???#?#?..?# 6,1,3,2 +??#.?#?????#.??.?# 1,1,2,5,1,2 +?.#.?##???#?.? 1,7 +#???#??##??????.? 1,6,2,1 +#???##?#?.?#?#??? 9,1,2 +??????#?#???? 1,2,1,2 +???#?.#?##.? 3,4,1 +#???..???????####?? 3,3,6 +#???#..##??.#. 2,1,3,1 +#.#??.?????#??#?#??# 1,1,1,9,1,1 +.??.???#????? 1,4,2 +.?##????.??? 7,1 +.??#??.?####???#? 3,9 +#?????#??? 2,6 +?????.??#??#?? 1,1,3,2 +????#??#????##?. 4,3,3 +.#????.?#?. 1,2,2 +??#??#?#?#???#??? 12,1 +???#.#?.??????###?.? 1,2,2,9,1 +?##???#???##?.?? 3,1,1,2,1 +??.????.??#?????# 2,1,1,1,7 +#.?#?#?...?? 1,5,2 +?????##??##? 1,1,7 +?#?.?.??.?#? 2,1,2,3 +???#?..???.? 1,2,3,1 +??##????.?#..#????? 1,5,2,1,1 +#????????.?#?? 9,1 +#????#??#..#?#???? 1,5,1,1,3,1 +?#???#??#?.??#? 3,5,3 +.??.?????? 1,1 +#??????#??.??#?#? 8,1,5 +??#..?????###?? 1,1,1,1,3 +#.???.??.??? 1,2,1,3 +?.???.??.???# 1,2,3 +??.???.??.?#?.?.??? 2,2 +?????.?#?.??#??#? 4,1,3,2 +?##???????##?#?## 2,2,8 +?#??????#?? 1,3,2 +?????.???#?#?## 1,1,1,1,4 +#?#??.?????.#.?? 5,1,1,1,2 +????#?.?.? 1,2,1 +.??.???.?? 1,1,1 +.???###.????#.????? 1,3,1,1,4 +??#????###.? 1,1,4 +.?..?##????? 1,6 +.#??#?.???? 4,1 +#.#??#????????. 1,5,1,1,1 +.#.??#??##?.??#???? 1,8,3,1 +#???#????.??? 2,5,1 +.?.???.??..# 1,2,1,1 +????.?##??#?#????..? 3,11,1 +.????#.#??. 1,1,2 +?????#????.?????#?? 9,4 +?#??????.??????#??# 1,4,1,2,1,1 +??#.##.???? 1,2,1 +????.????##??.???? 2,2,2,4 +???#??#??????#. 6,1,2 +??#??????.###?? 1,2,1,2,4 +?#?#?#.?#.??. 5,1,1 +#?##.?????.??#? 1,2,2,1,3 +?#?#.?????##. 3,2,3 +#????##??.#. 3,3,1 +#??????.?#??##????? 1,1,1,6,4 +?.?..?#??##???????# 1,1,7,1,1,1 +???#???##??? 6,1 +.??#??????? 4,1,2 +?.???#???.#??. 7,1,1 +????#????.???????. 7,3 +???#.????#???? 1,2,6 +??##????#.#???.?? 1,2,1,3,1 +?###?.#?????#. 4,3,1,1 +???..??.#? 2,1,1 +??.?????????. 1,7 +##?.?#?#?#?#???????# 2,11,1,1 +?????#??.????#? 6,1,1 +??.??????##?? 1,1,4 +.?##?.?.??????#? 3,1,1,1,3 +??.##?????? 1,3,2 +??????#?#?##??????#. 2,1,4,6,2 +??.????????#?#.? 2,10 +?#????#?.?????##? 6,4,2 +??##??#???????.#? 4,2,1,2,1 +.#?.???#??#??..?##? 1,5,1,3 +#??#??????? 4,2,1 +.?????????#????? 1,11 +#???#??##???????? 1,2,7 +..?.????#?.?.?##?#?? 1,2,1,1,7 +..#?.?..#. 1,1,1 +.#????#???#??.????. 11,2 +?????.????#????.?? 5,2,1,3,2 +??#????#?#??? 2,1,2,3 +???.???#.?? 1,2 +#???#??##???#??# 3,1,2,5 +????????#??????? 2,1,1,2,5 +?.?#???.#? 1,3,1 +..?.#??.#??#?????? 1,1,1,1,3,2 +???#???.??.?? 6,1,1 +?#?#.#????? 4,3 +???#?.???.???..?..?. 4,3,1,1,1,1 +???#?#?.???#?? 1,4,3 +?#?????.????#???? 2,2,6 +.??#????....???#?.? 6,4 +???.?##??????#? 4,5 +??.??.#???# 2,1,5 +.??#??#?#???????##? 8,8 +???.????.???.###??? 1,3,3,3,1 +????#.?#?? 1,1,2 +?????????#.? 1,1,1,1 +???.?.???.? 2,3 +..?.??.?#???.??.?? 5,2 +???#??????????#? 3,7 +?????.???.#??. 2,1,1,2 +?##??????? 3,1 +?##?#..???#?##.? 4,1,5 +?#?#????##??? 4,6 +?.????...?.. 1,1 +??#?????.?? 4,2 +?#????.????? 6,1,1 +??##??????????# 4,1,1,1,2 +##..?#????.??#?#..? 2,2,1,4,1 +##??#????#?.???.??? 2,7,2,1 +???.???##?? 2,1,4 +.?#.#????#?#??.?#??? 2,9,1,1 +?#????##?? 4,3 +.#?.?##?.????# 2,4,1,1 +.???#??????.????#? 6,1,4 +?????#???.. 1,6 +?.?#?????? 2,3 +??.???.??#.?# 1,3,1,1 +?.?..??#??.?? 1,4 +???#??????##?.???.? 6,4,3 +?????##.???..#? 3,2,1,1 +????.??.???. 3,1,2 +.??.?##?.? 2,2 +#?????#???#??#?.?#? 1,1,11,2 +????##??#.#?? 1,2,1,1 +?###?.#???.#???#? 3,4,2,2 +?????.#?..#????.#?.? 2,1,1,4,1,1 +??.?????.#? 1,1,1 +..??.??.?????.?? 1,4 +#???###.???.?. 7,1 +?#?.???###. 2,5 +??#?????.???? 6,2 +.????#?.#? 1,1,2 +.#?##????#.???????. 5,2,3,2 +#?#????#??? 5,1,2 +?#..???##?.???#???? 1,1,3,1,2,1 +.?.???.???????# 1,1,2,1,3 +#?.????#???#.??#??#? 2,1,4,1,6 +?#????.?#.????? 2,1,2,1,2 +??.?#??#####???# 1,2,8,1 +?????????.??##?#. 1,1,2,5 +????..???.?##?.. 1,3 +??#???????????????? 4,1,4,1,2,1 +?#.??#.?#?.??.?????# 1,1,2,1,1,4 +?#????#????#??#????. 1,6,5,2 +?#.?.???????? 1,1,1,4 +?????#??#.??..? 1,1,4,1 +.???????##?#? 2,1,6 +.??????#??????#?? 6,7 +????.#???? 1,3 +???#..?#?. 4,3 +???.?#???????#. 1,6,3 +.???#?#???#?#?#.??.. 12,1,1 +.??.????##?????.???? 1,7,1,1,2 +?..#?.???? 1,1 +#???????#?. 1,1,5 +?????.?..????..??.? 1,3 +?.#?#?#??????? 10,1 +???#????..?#???? 5,5 +?.?.?????..??.#??#?? 1,1,1,1,1,5 +??..#?..#???.?? 1,1,1,1,1 +#??.????#???##??#.?? 1,1,1,7,1,1 +#?.??#???#??? 1,2,3,1 +##?###?.??? 2,3,1 +?.???#??.????.?. 2,3,1 +???????#?.???.? 7,3 +????.#?????. 4,1,3 +#????.?#??????#? 5,3,1,2 +?????##?.??????????? 8,1,1,3,1 +?##?.#??????? 3,4,1 +????.?.?????#?#????? 1,8 +.???#.??#.??? 4,1,1,1 +?#????????#???.???? 2,1,2,2,1,2 +.???.???.#? 3,2 +????#?..????. 3,2 +.???.?.???##? 1,3 +???.????????.?????? 1,7,1,1,1 +.???.?#??#? 2,5 +##?..#???#? 3,2,2 +???.??????##??##?# 1,12,1 +???????.###?? 1,1,1,3 +.???????????#.???? 1,1,2,4,1 +..?????????.?.?.???? 1,1,1 +??#???#???#.# 3,4,1,1 +?#??##?###????#??.#? 10,5,2 +?#?.#??????##?????#? 2,1,1,2,2,5 +??????.?#?.??.?#?#?? 1,2,3,1,5 +??.#??.???????????# 1,3,2,2,1,2 +??#??..#?#?? 4,1,1,1 +.??##????.???? 6,1,1 +???###??#??#??#?#? 1,6,1,3 +??##?????#? 6,1 +?.???...?? 1,1,1 +???#???#..#????. 1,1,3,3 +??#?????.???#?#???? 4,2,1,4,3 +.??#####?#?..??? 7,1,1 +.#.?.?.?##??#??#??#? 1,1,1,7,5 +.???#???..???. 2,3,3 +..??#?.???????#.#??? 4,1,1,1,1,3 diff --git a/day12/sample1.in b/day12/sample1.in new file mode 100644 index 0000000..e2bdf5e --- /dev/null +++ b/day12/sample1.in @@ -0,0 +1,6 @@ +#.#.### 1,1,3 +.#...#....###. 1,1,3 +.#.###.#.###### 1,3,1,6 +####.#...#... 4,1,1 +#....######..#####. 1,6,5 +.###.##....# 3,2,1 diff --git a/day12/sample2.in b/day12/sample2.in new file mode 100644 index 0000000..e925935 --- /dev/null +++ b/day12/sample2.in @@ -0,0 +1,6 @@ +???.### 1,1,3 +.??..??...?##. 1,1,3 +?#?#?#?#?#?#?#? 1,3,1,6 +????.#...#... 4,1,1 +????.######..#####. 1,6,5 +?###???????? 3,2,1 diff --git a/day12/sol.tcl b/day12/sol.tcl new file mode 100755 index 0000000..19a71ea --- /dev/null +++ b/day12/sol.tcl @@ -0,0 +1,42 @@ +#!/usr/bin/env tclsh +source ../prelude.tcl +set input stdin + +proc expand {row {start 0}} { + set i [string first {?} $row $start] + if {$i < 0} { + return [list $row] + } + set a [string replace $row $i $i "."] + set b [string replace $row $i $i "#"] + incr i + return [concat [expand $a $i] [expand $b $i]] +} + +proc match {row nums} { + #puts -nonewline " $row -> " + set row [string map {. " "} $row] + #puts " $row" + foreach group $row n $nums { + if {[string length $group] != $n} { + return 0 + } + } + return 1 +} + +set part1 0 +while {[gets $input line] >= 0} { + set n 0 + lassign $line row nums + set nums [split $nums ","] + foreach x [expand $row] { + #puts $x + if {[match $x $nums]} { + incr n + } + } + puts "$n | $row $nums" + incr part1 $n +} +puts $part1 diff --git a/day12/sol2.tcl b/day12/sol2.tcl new file mode 100755 index 0000000..7662a6c --- /dev/null +++ b/day12/sol2.tcl @@ -0,0 +1,101 @@ +#!/usr/bin/env tclsh +source ../prelude.tcl +set input stdin + +array set ::m {} + +proc memo {row nums i left} { + set key "$i,$left,[llength $nums]" + if {[info exists ::m($key)]} { + #puts "$key exists" + #puts [array get ::m] + return $::m($key) + } + set n [count $row $nums $i $left] + set ::m($key) $n + return $n +} + +proc count {row nums i left} { +#puts [list count $row $nums $i $left] + if {$i >= [string length $row]} { + if {[llength $nums] > 0} { + return 0 + } + return [expr {$left > 1 ? 0 : 1}] + } + if {[llength $nums] <= 0 && $left <= 0} { + return [expr {[string first "#" $row $i] >= 0 ? 0 : 1}] + } + set c [string index $row $i] + incr i + if {$c eq "."} { + if {$left > 1} { + return 0 + } elseif {$left == 1} { + set left 0 + } else { + # nothing + } + return [memo $row $nums $i $left] + } + if {$c eq "#"} { + if {$left > 1} { + incr left -1 + } elseif {$left == 1} { + return 0 + } else { + set nums [lassign $nums left] ;# shift nums + } + return [memo $row $nums $i $left] + } + if {$c eq "?"} { + if {$left > 1} { + # must be "#" + incr left -1 + #set row [string replace $row $i-1 $i-1 "#"] + return [memo $row $nums $i $left] + } elseif {$left == 1} { + # must be "." + set left 0 + #set row [string replace $row $i-1 $i-1 "."] + return [memo $row $nums $i $left] + } else { + # bifurcate + #set row [string replace $row $i-1 $i-1 "."] + set a [memo $row $nums $i $left] ;# "." + set nums [lassign $nums left] + #set row [string replace $row $i-1 $i-1 "#"] + set b [memo $row $nums $i $left] ;# "#" + return [expr {$a + $b}] + } + } + error "invalid character '$c' at position $i" +} + +proc match {row nums} { + #puts -nonewline " $row -> " + set row [string map {. " "} $row] + #puts " $row" + foreach group $row n $nums { + if {[string length $group] != $n} { + return 0 + } + } + return 1 +} + +set part2 0 +while {[gets $input line] >= 0} { + set n 0 + lassign $line row nums + set row "$row?$row?$row?$row?$row" + set row [string trim $row "."] + set nums [split $nums ","] + set nums [concat $nums $nums $nums $nums $nums] + array unset ::m + set n [memo $row $nums 0 0] + puts "$n | $row $nums" + incr part2 $n +} +puts $part2