From e723ec5192130ca97ac7a1c556cc7ea21d74c39c Mon Sep 17 00:00:00 2001 From: Daniel Bulant Date: Fri, 15 Dec 2023 09:41:37 +0100 Subject: [PATCH] days 12, 14 and 15 --- 2023/12/haskelltest.py | 12 + 2023/12/input1 | 6 + 2023/12/input2 | 1000 ++++++++++++++++++++++++++++++++++++++++ 2023/12/part1.py | 41 ++ 2023/14/.gitignore | 1 + 2023/14/Cargo.lock | 7 + 2023/14/Cargo.toml | 8 + 2023/14/input1 | 10 + 2023/14/input2 | 100 ++++ 2023/14/part1.py | 35 ++ 2023/14/part2.py | 83 ++++ 2023/14/src/main.rs | 227 +++++++++ 2023/15/input1 | 1 + 2023/15/input2 | 1 + 2023/15/part1.py | 19 + 2023/15/part2.py | 43 ++ 16 files changed, 1594 insertions(+) create mode 100644 2023/12/haskelltest.py create mode 100644 2023/12/input1 create mode 100644 2023/12/input2 create mode 100644 2023/12/part1.py create mode 100644 2023/14/.gitignore create mode 100644 2023/14/Cargo.lock create mode 100644 2023/14/Cargo.toml create mode 100644 2023/14/input1 create mode 100644 2023/14/input2 create mode 100644 2023/14/part1.py create mode 100644 2023/14/part2.py create mode 100644 2023/14/src/main.rs create mode 100644 2023/15/input1 create mode 100644 2023/15/input2 create mode 100644 2023/15/part1.py create mode 100644 2023/15/part2.py diff --git a/2023/12/haskelltest.py b/2023/12/haskelltest.py new file mode 100644 index 0000000..361ea6a --- /dev/null +++ b/2023/12/haskelltest.py @@ -0,0 +1,12 @@ +import subprocess + +for line in open("./input2"): + chars = line.split(" ")[0] + groups = [int(x) for x in line.split(" ")[1].split(",")] + regex1 = "\.*" + ("".join([f"#{'{'}{number}{'}'}\.+" for number in groups]))[:-3] + "\.*" + regex2 = chars.replace("?", "[#.]").replace(".", "\.") + # docker exec -it 055a5629a751 "/root/.cabal/bin/genex" + command = f"/root/.cabal/bin/genex \"{regex1}\" \"{regex2}\" | wc -l" + print(command) + found = subprocess.check_output(["docker", "exec", "-it", "055a5629a751", "bash", "-c", command]) + print(line, regex1, regex2, found) \ No newline at end of file diff --git a/2023/12/input1 b/2023/12/input1 new file mode 100644 index 0000000..c5bec3a --- /dev/null +++ b/2023/12/input1 @@ -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/2023/12/input2 b/2023/12/input2 new file mode 100644 index 0000000..45fee9a --- /dev/null +++ b/2023/12/input2 @@ -0,0 +1,1000 @@ +??????.??#. 2,3 +??.?###????????? 2,4,4 +?????????.??##? 1,2,1,1,5 +?##?.????.?#?.?#? 3,1,1,2,2 +?#?.#?##???? 3,1,4 +??#????#?? 4,4 +???????#?.??? 2,2 +?.???????#? 2,3 +.?????.???? 1,1 +#??????????# 1,3,3,1 +??.??.??..#? 2,1,1,1 +.??#?#?#?? 1,4 +#???????.?? 6,1 +???#???#??# 1,2,5 +.#?.??#.?#? 1,2,1 +?#?#??????.#.? 9,1 +#?????.???? 5,2 +?????????????? 1,1,3,5 +.???.??##?.???.#?? 2,3,3,1 +?#??#???#??????? 2,6,1,3 +??.??#???.?# 1,1,4,1 +?#????###.???#?? 8,6 +?????????..? 2,1,1,1 +??.??####..? 2,6,1 +.????##???????? 2,4,1,1 +?????.?##???..??? 1,3 +??.???.?????#??.? 1,4 +#?#?###?..?.#??..#?. 8,1,1,2 +??#??????#??#???? 9,5 +???##???##?.??#???. 2,3,2,1,1,2 +?#?#???.?? 6,1 +?????#?????#? 1,8 +??????.???##?#??#.? 2,1,1,8 +?????#.???? 1,1,3 +??????.??. 1,1,1 +.?.##????#?#??#?.? 9,2 +???#??????#??. 1,11 +??#?.#?.?? 3,2,1 +#????.???#.???? 1,2,3,2 +.??.???.??#? 2,3,3 +??.????????#?.??? 1,8,2 +.?#??#?.???.. 6,1 +?????.????#.? 1,1,4 +.??#??.??????? 4,4,1 +?.#???????.?????? 3,1,1,2,1 +##.?????#??#???#?# 2,1,1,1,5,1 +...??????.#???#??#? 1,1,1,1,7 +???##???????#??? 7,2,1,1 +##.????????????.. 2,9,1 +??##?.????#? 4,1,3 +?#??????#. 1,1,1 +?#...?.?##?#?????? 1,1,4,1,1,1 +?#????#???#??.?##? 3,7,4 +.#???##??###???? 2,10 +.?#?.?#??????. 1,7 +#.?.?????###.? 1,1,7,1 +???..#.??? 1,1,1 +???###????????#?#. 12,4 +????..??.?.???. 2,1,1,1,2 +???.#??????#? 1,8 +??#.???.?..??##?.. 1,5 +??#????.????.??. 5,1,1,1 +##???..#.???#???. 2,2,1,5 +??##?.?##.???#.???.? 4,3,1,1,2,1 +?????????????.# 2,1,1,1,1 +.???#?#??#?.???# 1,6,1,1 +?#?#???.??#?? 3,1,4 +???#???#??#??#??# 1,3,1,5,1 +.????.#??# 3,4 +?????.????### 4,6 +????#??.#????.??? 2,2,3,1,1 +???#?...?#???. 4,5 +?????..?#?.? 1,1,2,1 +???.??###??##? 1,9 +?.?#?#????.??#?.??# 1,7,2,1 +?##???..???##.?#.. 4,5,1 +????#.??#. 1,1 +?.??#?.??#? 1,4 +???#????????#??.? 1,2,2,5,1 +?##?????#??#???.???? 4,3,4,1,2 +???#???.??.?## 5,2 +?????#???#?#.????#? 2,8,2,1 +..??#?..??? 2,1,1 +.??##??#????###?? 9,4 +???.??????????? 1,3,1,3 +.#?##??#?##????#?? 10,1,3 +.???#.?##?? 1,1,3 +?#??#?.??? 2,1,2 +.?#?.?????? 2,3,1 +?.#.???#.? 1,1,1 +??#?????#?#?. 5,4 +??.?#?#.???? 1,3,2,1 +???????#?#??????? 3,6,5 +?????????.#???? 7,4 +.?###??.?????#?? 6,5 +??#?????#####?.# 3,9,1 +.#???.???.?? 3,1,2 +??#?????????#? 9,2 +?????????#?? 1,2,1,2 +.?????#???.??? 8,1 +?#?.?#?????#???#. 1,1,8 +???#??#?###?#??#? 1,14 +????#?.??# 1,2,1 +?#####.?#?????. 6,1,2 +#?????.??#? 5,1,2 +?#?????.#?#? 6,1,1 +?.????#?????####?.. 1,3,7 +?????#???#????##? 1,3,8 +..????????..?? 4,1,2 +??.#?#???.. 2,3,1 +##?#?.???#?.. 5,1,1 +?#?#??..#?#.? 2,3,3,1 +?#?#????...??????? 1,1,2,3,1,1 +..?#???..??? 5,1 +??#?.???.???? 2,3,3 +..??#?????##??? 6,5 +##???..##???##?? 5,2,3 +#???#???#####????#. 1,1,9,2 +#.??????#.?##?##??? 1,2,1,2,6,1 +???.#????? 1,1,1 +????.???..???. 2,1,1,2 +.?#??.??.#.#. 3,1,1,1 +??????.?##?? 1,1,1,3 +?#??#??#?.??#?. 1,1,2,1,2 +??????##?? 1,1,5 +.???#????? 1,1,1 +?#?.??????. 1,1,2 +?.?.?#??????.??#. 1,2,1,3 +.??#??????.??.#.? 8,1,1 +???#?.???###? 2,1,3 +?##?.?.???.???????#? 3,2,1,5 +?..????#???##?? 1,2,1,4,1 +???##???..???.?? 5,2 +..##????##?##?.?.??. 11,1 +??.??..?#???? 2,1,1,1 +??.#???#?#???? 1,1,6,1 +?#??.??#???# 1,1,3,1 +???.??.?????? 1,2,1,1 +???.#??.?? 2,2,1 +???.?#?.???????? 1,3,5 +?????#???#??##. 1,6,1,3 +.#??.?.?.? 2,1,1 +#?##??#?????? 7,3 +??.?.???#??????? 1,1,6,1 +?????#.?#???..??? 5,3,1 +#??#???????.????#.# 4,1,2,1,3,1 +.???????.?? 4,1 +...??#?#?#?????# 5,4 +#...??#?????#?#?.? 1,3,7 +????.#?.#.??##??? 1,1,1,4,1 +???..?#?????#??? 1,1,2,2,1 +?????..??##? 1,4 +.#??????#??#?? 1,1,1,6 +?..?#?????#???. 3,3 +??.##?#???????#. 1,7,2,1 +?????##..#?.?. 5,1,1 +..??????##??? 4,2 +?????.?????. 2,1,1,1 +..???##?#???.??#.?#? 1,6,2,3 +????????#??????. 1,1,7 +#??#???#?#.???#?#?? 10,6 +.#?????#??.?# 1,2,2,1 +.?..??.????# 1,1,4 +????#?#??.. 2,6 +.?#..????. 2,1 +?????#?#?#???????.?? 2,8,4,1 +#?????#???? 1,5,2 +???.???#?###?#?##??? 2,13,1 +?#????.???##.# 2,1,4,1 +??????????.??. 3,4,1 +???????.#???.?#??? 1,3,1,1,2,1 +.??.#?###?. 1,6 +.#.?#????#? 1,1,3 +?????????##.?# 2,4,2,2 +????.?..??. 1,2 +???????#?? 1,1,1 +???????#??. 5,1 +??#.??#?????## 1,1,1,5 +???.?.?#?.? 1,2,1 +.???##???? 2,6 +#?.?#?.????#???#? 1,2,1,2,4 +???.?####?#? 2,6 +???.##.?.#?# 2,3 +?.???#?#??# 1,5,1 +?.??#?##?.##?#?#?. 6,7 +..?#??..?. 3,1 +???#?#??#.??#..???# 1,1,4,2,1,1 +#????.?????? 1,1,3 +?#?#?.??##?#??? 5,1,2,2 +..?#?#?#????#?? 7,4 +???.??#??????..????? 3,1 +????#???.????#?????? 1,3,8,1 +.????#????#??##???## 6,1,8 +??.#????????.? 1,1,2,2 +???#????#?##?????? 1,1,1,4,1,1 +#.??.????#??###...? 1,1,1,6,1 +???#??##??#?? 1,5,2 +#.#???#??????.?? 1,3,2,1,1 +??#..?.#?? 2,1,1 +..??????#. 1,2 +#??????#??.???.???#? 4,1,3,1,1,2 +?.#??????##?#??#?? 3,8 +?#???.????.????? 1,2,2,2,1 +???????#???.?? 5,1,1,1 +..?????#?#??#? 1,3,2 +#??.####?.?? 1,1,4,2 +???????#??###??#?. 1,1,13 +.?#.??#?..??#??#? 1,2,1,5 +#?#?#??.??.. 1,5,1 +.????????.?.??. 2,1,1,1,1 +##???????.? 4,1,1 +#?#?.??##??????.#?. 4,5,1,1,1 +#?#????#??.???? 1,1,1,3,3 +???.?????.##??## 2,6 +...???#?????? 1,1 +##?#??????????.??. 8,3 +..??#?????#??????#? 4,5,3 +????????#??? 1,2,4 +?.#??.??##?.?. 3,3 +???.??#.?# 3,3,1 +?#????.?.? 1,1 +?#???????#????? 4,3,3,1 +.?.??#????.?.. 7,1 +????#.?.#..? 3,1,1,1 +.??#?#?????.?????#?. 5,2,1,1,1,1 +??????.?????#?.??# 4,4,1 +???###.?#?#????? 1,4,1,6 +???????.???#??? 6,3 +??#?###?????????? 6,1,1,3 +.??#.???##??#????#?. 1,4,2,4 +#.??##?#??????#????? 1,10,2,1,1 +.??.#??#????#? 1,1,5,1 +.?#????..????? 4,1,4 +????..?#??... 1,3 +?.????#??? 1,1,5 +??#?.#??.??????? 4,3,2,2 +?#????#???????##?? 3,1,2,1,2,2 +##?.?#.??? 2,2,1 +?.????????.?##???.?. 7,4 +..#???.?????#? 2,7 +#?.???..#??? 2,3,1,2 +????????##. 1,3 +?????#??#?. 1,5 +???????#?#????.??? 10,2 +????????#????????. 7,1 +???...#??# 2,1,1 +??.#???#?#?###?.#? 2,2,8,2 +#???#?????? 1,3,2 +.?.?..???#???? 1,4 +????.##???#?###?? 1,1,4,1,5 +??#???#??# 2,2,1 +??#?##??????? 7,1 +??#?#.##?#? 1,3,4 +??#???#?..?????.?? 6,2 +?.?????.?#?#??#? 1,1,7 +#??.???#???##??#. 1,9 +?.?.?..?.??? 1,1,1,3 +.?????????#.???? 1,1,1,1,3 +?#???????? 5,1,1 +.#?##??#?. 4,1 +.?#????#??. 3,3 +.?#.??#??###?? 1,8,1 +???#??.???.? 4,1 +?.#????##???? 1,2,4,1 +.???##.????#??##.??? 5,2,1,3,2 +???##?##???? 8,1 +?###????#????.?? 5,2,1 +#?.???????? 1,4 +???#.?#??. 3,1 +????.#?#?##?????? 2,1,8 +.##?.?##?????# 2,3,2 +.?#..????##??????##. 1,2,4,4 +?.?#???###? 1,2,4 +??????#??????#???? 7,5 +??##?#..??? 6,1 +??????.???#. 4,1,1 +.??.?.????? 2,1,1 +?????#.?##?#?##??? 1,1,10 +#?##?#??.? 1,5,1 +?.?#?#???..???? 1,5,1,1 +?..????##???????..?. 1,2,9,1 +?#?#..?.???#?#? 1,1,1,4 +?#.??????# 1,5 +.??????#???#?##???. 4,9 +.?.???????## 1,2,1,2 +????.#?.????# 1,2,5 +?????.?????. 1,1,3 +..??..???? 2,1 +??#.??#??##??#? 1,1,7,2 +??????#??#?.??.#.? 6,1 +????.????#?#???.#??? 1,1,1,6,4 +?.??.#??????????? 1,1,2,4,1 +???..????? 1,1,1 +.?#?????.?#.??#?.. 3,1,1,3 +?#??????#?#??##??# 6,3,3,1 +#?#???.??.?????.? 5,1,5 +???????##?.????#???? 6,5 +??##???#???? 4,5 +?.##????#???.???#?? 3,5,4 +??#?#?.??.??## 5,2 +??.?????.#? 2,2 +?#??##??#?????#???.? 6,2,1,5,1 +????#?#.?? 1,3,1 +??.#??.??#??????.?? 2,3,6 +?.???#.?????#??# 1,1,1,1,4 +?#??????#?? 2,1,4 +??????.???#?? 2,2,3,1 +??.??#..##? 1,1,2 +???.?????. 3,2 +?..#???#???????#???? 8,4 +??#??????##? 3,1,4 +.?#??#????????.?? 1,7,1 +??#??#?..?#??###? 1,3,8 +..#????###? 1,4 +?#.???#???..?.?# 2,6,1,2 +?.??#?##?.???#??? 1,1,2,1,3 +?.?????#??#???.??? 4,1,4 +?.???##???#????? 1,8 +?#??#?????????##?##? 7,2,5 +.??..?????#?###??#? 2,1,1,8 +#???##?.?.???##??##? 2,3,5,2 +???#..?#??#?? 1,1,5 +??????.????. 4,2 +?#??.?????.?? 1,3,1,1 +#?#?.?#?.???# 4,1,4 +?????......?.???.?.. 1,1 +??.?????#??##?? 1,4,2,4 +..?#???..??.??# 4,3 +.?.??#????.??. 1,3,1 +?#??.#?????.?. 2,5 +.?..?#?#???##?? 1,10 +?.???????###?#?. 2,6 +??#????.?.????#.. 3,1,1,2,1 +?#??????.?#?#.? 3,1,4 +?#?##??#??.?##. 6,3,2 +#?###???.???...??#?# 5,1,1,1,1,3 +.?#????????????. 2,3,1,1,1 +.?#??#??#??.#???? 1,2,3,1,1 +??#??.????.#? 3,4,2 +##...?#??..??###???? 2,2,8 +##??#?#?.?#.????? 8,1,4 +##???.???? 2,1,1 +#??##?.????#????.??. 1,4,1,3,2,1 +?.?.?#?##?###?? 1,9 +?????##.?#?? 1,5,1,1 +???..#?#???#???. 1,1,4,1,1 +??##?.????????? 4,3,2 +#?#????.???.???#. 1,1,1,1,4 +???..????#? 1,3,1 +?##????##???.??? 6,2,1,1 +#???.#..#?#?? 1,1,1,3 +.??????.?????# 6,3,1 +.??.?##??????#?.#?#? 1,5,1,1,4 +#?.?.?????.?#? 1,5,1 +????????#???#?. 1,1,1,3,1 +.??????#?#?.?#?##?? 1,5,7 +.????#??#??#.??.? 11,1 +?#??..#.?????### 3,1,3,3 +???.?#.??.?#. 2,1,1,1 +#.??????????#?.#### 1,10,4 +?????.???# 1,2 +???..???????## 1,1,3,2 +???????#.? 2,1,1 +#????##?????? 1,1,5,1 +.???.??#???..?? 1,1,4,1,1 +?..?...???#??? 1,2,1 +#???.?#??#????? 1,1,1,7 +?.#??.##????? 1,6 +.?????#.?.? 2,1 +?#???????#?#??.?.? 3,9 +##????????#?##.#.# 6,1,4,1,1 +???.?#?##.??#. 5,3 +?..?..#?##.? 1,4,1 +.?#??#??.?##????#?. 6,2,1,2 +?#??#.?#.?.????? 3,1,1,1,1 +???????.?#??????# 3,2,6,1 +?#?..??.##?#?.?? 2,5,1 +?#...#??#? 1,1,1 +?.#????##???#?. 3,7 +??..#??##? 1,2,3 +??????.?##?? 2,3 +????.#???????#?#?. 2,1,1,6 +???????#??? 1,1 +?...????.???# 3,4 +.#??##??.????. 1,2 +?????.?#???? 1,2,6 +?#???#?.#? 2,2,2 +??#??????? 5,1 +?.????##??.?.???... 3,1 +..##??#??.? 5,1 +???.??#?##???? 2,1,4,2 +???????#????????..? 8,1,1,1 +??#.???.???#???? 2,1,1,2,1 +?#?##.??#??????#? 4,3,2,1,2 +??????#.???? 1,3,3 +?##.?#.??#?.??????#? 3,2,4,2,3 +.#?#???#??# 3,1,1 +.??.???????## 1,1,4 +#??#??.#???# 1,4,2,1 +???#?#??.. 1,1,1 +????#.?????.. 4,1,1 +??????.???.?? 1,2,1,1 +#.##??#?.?#..??#?.? 1,6,2,2,1 +???.??..?#?.. 3,1,3 +????#????#?#####??#? 2,1,9,3 +??#?#??.#?##??##.. 4,8 +??????#?#???#?.?.? 12,1 +?..?????##???#? 1,12 +.#????#??#.? 1,6,1 +???#?#??#?#??????? 1,1,1,1,4,3 +?.??#.??.??? 1,1,2 +???#???#.??#?? 5,1 +.????#.?#?? 1,3,4 +?#.#?#?????##.?# 1,5,3,2 +???????#?????????. 2,1,5,1,2 +#?#?#?#??#.#???.???? 8,1,1,1,1,1 +?????#??#??.?# 2,8,1 +?#??#???#??.?#.?? 9,2,1 +?????##?#?.?. 1,6,1 +???????.?...?#? 1,4,1,2 +?.#????.????????.?.? 3,1 +#????????#????#???.? 1,10,1,2 +???.#???.#?#?????# 3,1,1,9 +.?????.?????? 1,1,2,1 +#?.??##??????#? 2,3,4 +?????.??????.? 2,1 +?#?#?#??#?. 1,7 +.????.???#?.???# 3,5,2,1 +??#????##?. 3,4 +?.???????????#??#??. 2,5,2,1 +?????#??#???..???? 1,3,1,1,2 +.????#?????.. 1,3,3 +?##???????? 4,3 +??#??#?????#? 2,2,1,1 +?#?????#?#?#..#??.?# 2,3,5,1,1,1 +?????#???.?#???##??. 6,1,9 +???????#??#??#. 1,1,9 +##????????.??..#?# 4,1,3,1,1,1 +???#.??.???. 1,1,1,1 +?.?#????.#??? 1,6,1,1 +?????#??????.? 1,3,3 +?#????.???# 3,1,4 +#??#?#?#??.?#? 8,1,1 +?????????#??? 2,5 +??#?.??????.###?#?. 4,1,5 +#?.?#.??#????? 1,1,1,4 +#.???.??#???? 1,1,4,1 +?#??????#??? 2,4 +?#?????????#??#.???? 5,1,3,1,1,1 +??????##??????#?#??? 1,8,7 +#?#??.????.#?#? 3,1,1,1,1 +?.??#.#?##. 1,1,4 +???.??#??#.???? 1,1,6,1,1 +#?????#??# 1,4,2 +?.?????.?#????? 1,1,1,4,1 +.?....??.#?. 1,2 +.#???#????#.???##??. 10,5 +???????.#? 5,2 +?.##??..????# 4,1,1 +??#?????#???.??? 6,4,1,1 +??.?.?##?.???.?? 1,1,4,3 +?????.???.????#? 1,2,2,1,4 +?..??##?#..???.? 1,5,1,1 +???.???#??.#?.????? 3,4,2,1 +???#???#?? 1,4 +###??..???..?. 5,2 +#????????#? 1,3,4 +??.???????.?#?.?# 1,1,2,2,2 +??.??.?..?????. 1,2,1,2,1 +????#???.?? 1,5,2 +#?.?..?#??##?.???# 2,1,7,1,2 +.#??..#.??#????## 1,1,9 +??????.???#????? 2,1,7 +?###???.??? 3,2 +?.#?.?##?? 1,1,2 +???###???.??#?.??? 6,2,3 +?????#??.????????? 4,1,1,2,1,1 +?#.?##??##?#. 1,7,1 +??.???????#???##? 1,1,1,8 +.???????.????????? 5,7 +..#?????????#???#.?? 1,2,8 +#??##????#????#. 2,4,2,3 +.??#???#??? 2,3 +?#???#???## 1,1,3 +???#?#??.?#? 5,1 +??##??.?.????#? 5,1,1,2 +?##?#??#??????## 8,1,3 +?##??#???????? 5,1,1,1 +??###?????#???.??#. 1,9,1,1,1 +?#.??????# 2,2,3 +?#??#???#?.?.?????? 10,1,1,1,1 +??#???#??. 1,3 +?#??#.???? 2,1,1 +???.???#??????.? 2,6,1 +#?#?.??.#.??##? 1,2,1,1,5 +???????????.?#?. 1,3,1 +.?#?#?..#. 4,1 +??#?#????. 3,1,1 +?#??????#?????? 10,2 +#.????????#?#??? 1,2,1,5 +?????????#.#? 1,2,1,2 +??#?#?##???.?.? 9,1 +??????.???.. 5,2 +.?????#??? 3,3 +??.????????? 1,1,2,1 +.#???????##. 1,1,3 +?##?#???#?..??#??#?# 3,1,2,6,1 +.?..##???? 3,1 +??????#.?????? 1,2,1,5 +???#.????#?? 1,1,1,4 +???#????.? 2,2,1 +.#??.???#??????.? 2,7 +?.?.###?#?.?. 1,6 +?.?##.?.?? 1,2,1 +?#...?.?#??#?.???.? 1,4 +?????????.??? 4,4,1 +??#???????.#. 7,1 +?.???#?????????#??? 1,1,7,3,2 +.??#.?????.?.?.? 2,1,2,1,1 +.???##????#? 6,1 +.##?..??????? 3,6 +.#??#?#??#?.??.?. 4,5,1,1 +?.???.???? 1,1,1 +????????????#??? 3,3,5,1 +??.???.??? 1,3,1 +???##????. 6,1 +?##?.???#? 2,1,2 +.?.????.??#??#?#? 1,1,6,1 +#??????#.? 5,1 +.?#????????.? 2,1,1 +?.???..???????? 3,3,2 +????????#??# 1,1,4,1 +##..??#??.?????? 2,4,1,2 +???#???#???#????? 1,7,4,1 +..????#???????? 3,3 +.#?#????##?.??????? 9,2 +???#???#??.?##?? 1,2,2,3 +???#?????#?.??????? 1,1,5,1,1,1 +????#??.???#. 7,1,1 +#?.?.?##??????.??#?? 2,1,6,2,1,1 +##??????#.##???#?? 5,1,8 +?.?.??#?????#?? 1,1,7,1 +??#.????#? 1,3 +?#?#?#??#??? 7,3 +#???#?#?????? 3,4,1,1 +#????#??.??? 1,5,1 +#?????#?.. 1,1,3 +?.?????#?##?.?##? 10,2 +?..??????.?.?????..# 1,6,1,1,1 +#?#.??.???????#??? 3,9 +.???#..?.?.??##. 4,4 +?#?#???#.????#?.???# 1,5,6,1,1 +?#.#??#??? 1,2,2 +??????#????? 2,7 +????.??????..?.?? 2,1,1 +??##???##??.??#.?? 3,6,1 +.?##??????#?#???#?. 12,3 +???.?.#???.?#??? 1,3,5 +.??#??##??#???# 7,1,1,1 +?.??#.??????????#? 1,1,5,1,3 +??#????.??..????.? 3,2 +?#??#???..? 4,1,1 +??????..???.. 3,1 +??????#????#?.??.#? 2,4,2,1,2 +.???#??..??###??. 6,6 +?#??#?????#?????? 5,7 +???##?#?#?#?###??. 1,3,5,3,1 +#?????#??.??????# 5,1,1,6 +?#??????????????? 5,1,1,4 +?.?#?????.? 1,2,4 +?.???#????#?#???###? 1,1,2,1,1,8 +?#??#?#????.?.??.# 1,5,2,1,1,1 +?####?#?????? 6,3 +???.?????.??????.# 2,1,1,4,1,1 +.??#?#??#?.# 5,2,1 +.#?.????.#.##??? 1,3,1,5 +?..???##??#?? 3,2 +?#??###?##???.?? 2,10 +.#?#??.??#. 4,3 +#??#.?##???? 1,2,6 +????#???.??##?##?# 7,4,2,1 +.?.????????.#?? 1,1,1,2 +#???.#?.???.##?? 4,1,1,1,4 +#???#??.?##?.. 5,4 +??????#??#.?.??. 1,1,3,1,1 +??.???????? 2,7 +???..??#???????? 2,3,2,1 +.?#????.????#? 4,1,2 +?#?..##???#??? 2,9 +.?.???#??#?#????.?? 1,10 +.??###?...?#?? 4,4 +.#??????##??.? 3,5 +?.?#.???????#???#. 1,1,1,7 +#???#?????# 2,7 +???.?#??#??..?.?? 1,7,1,2 +??????.??? 1,2,3 +?#??#??.#?#???#???#? 1,3,3,1,5 +?..##.?.?#???#?#?#?? 1,2,1,1,1,5 +??#???????#??? 11,1 +#?###??#?.? 8,1 +.#?#??###??????..?? 8,1,1 +?#.????.??.??. 2,2,1,1 +?#??##?.#?? 6,1,1 +??#.??#?#?.?#.?. 3,1,1,1,1 +#?#.?#?.??..?#? 3,2,1,1 +??????????#??. 1,2,5 +???#?????# 3,1,2 +???.?????????# 2,2,1,3 +?#?##???.???.# 5,1,1,1 +??????#?#?????#.. 1,7,2 +??.?#?.?????# 1,1,2,1 +#??#?.?????#?#??#?? 4,1,2,1,3 +???????.?? 2,1,1 +?#..#??.??#?.# 1,2,3,1 +??#????????? 5,1 +???#?###.#???..#??? 3,3,1,1,3 +?..???#??????.???. 6,2 +.??#?#?##???????? 8,4 +??????##?#?#??? 10,1,1 +??????#?.. 1,3 +...??????...#??.? 2,3 +????#?#???? 4,4 +?#???..?#?#? 4,3 +.?????#???????#???? 6,3 +?.????#??????##.?? 4,6 +??.?.??.?? 1,1,1 +????.???#????#??? 2,1,2,3,4 +?.?.??#?#??#?#?#?#? 1,12 +??#?#.?????.??# 1,1,3,2 +#???..??##????? 1,6,1 +?????.?.??#?. 1,1,1,3 +...??.???#?###??. 2,6 +??.???..?? 1,2 +.#?.????..? 2,3 +#?#??#?..??#????. 1,5,4,1 +??.#.#???#.????#?##? 1,1,1,1,1,6 +?#??...??#?. 1,4 +.?????????. 3,4 +???????#?#???????# 12,1 +#??##????#?? 1,3,1,3 +?#?##????#.????. 8,1,2 +?.???.????# 3,2,1 +???#????#???#?? 1,2,5,3 +?.?#.?????..? 1,1,1,1 +.??.???#?????.???? 2,2,6,1,2 +?.???.???#?????.?# 1,1,1,4,1,1 +#.##???#?#????. 1,6,2,1 +?????#..?????#? 1,1,1,7 +?.?.??#.????##?.??? 1,2,1,5,1 +?#?#?#???#?#????? 1,3,6,2 +??.#?.#?????# 2,1,4,2 +?##???.???. 3,1,2 +?.#???.?...##???? 1,3,1,2,1 +???#????????????? 4,1,2,4 +?.?#?????#?#?# 1,1,9 +??????...???##??. 2,1,4 +???###???#?. 2,4,2 +?.??#.??#??#..????? 1,1,1,5,3,1 +??.??????#?????? 2,1,3,1 +.#?.??#????#?.#. 1,6,1,1 +?????##??####?????#? 2,10,1,1 +?????#?..??.???#?? 7,2,6 +???#.??##?##?.????? 1,1,7,1,3 +.?#?#????? 3,1,1 +??.?#?#?.?...?? 2,1,2,1,1 +?..?#?.??.#?#?? 3,4 +#?#.??.??????????. 3,1,6 +??#???..??.?. 3,1 +??.???.??????.?.?? 1,1,3,1,1,1 +?????#?.?.?????#?##? 1,3,1,1,5 +?.####.?.??#.? 4,3,1 +#????????####??#? 2,2,5,2 +?...#??#?##??????? 1,2,4,1,1,2 +?##?.?????#???.? 3,1,2,1,1 +##..##???#. 2,2,1 +..#??????#? 1,1,3 +?????????# 1,1,1 +?#..????????#??.? 1,3 +??##??.?..??#??? 5,5 +???#?????.#?#? 1,6,1,1 +.??#????##????. 1,6 +#??#?????????.??#?.? 7,4,2 +.????##?#?? 1,2,1 +???#??...??? 5,2 +?.??#?#?##?.? 8,1 +?????.####???#??.?. 5,4,5 +???#????##? 1,7 +?#????###???? 2,6 +????.?#???##????? 1,9,1 +???????.????## 1,1,1,6 +???.?#??..???#??#?? 2,1,1,8 +.????.???..? 2,2 +?.#?#?#???? 1,3,1 +?.???#?##??.???.???? 6,2 +.##?#?????????#???# 4,13 +?##?.?..???# 3,3 +?.?##??.??#?..??. 4,4,1 +.?#??.??#??#?? 2,7 +#??.#?????????#???? 1,15 +???.???#?.#?#.? 3,4,3,1 +???#??????.?# 7,1,1 +?#????####???. 9,1 +??????#???? 2,4,1 +.?#???????#???#.???# 13,2,1 +??##???#??????#?##?. 6,1,1,8 +????#??.???? 2,1,3 +???????#???#?#? 1,1,4,3 +?.##??...?? 4,2 +#?##?????????#???# 5,3,6 +.???#???#. 5,1 +?#??#?#?###????..? 12,1 +.#??????????.??????? 3,7,1,3 +?????????? 1,6 +?#?..????#? 2,5 +?..?.#?#?? 1,3 +?????.?????#? 1,1,1,5 +?##?#?###??#????. 13,1 +.??.????.?? 2,1,1 +..#?#?#??.#.#?? 6,1,1 +??#?#?.##??.? 3,2,1 +.????#???.?#? 1,5,1 +#.????.???????#?? 1,1,10 +????#.??.???#.???? 1,2,1,1,1,2 +#.??.???#???#. 1,3,3 +???.?.?????????#?.?? 2,1,2,1,3,1 +??.??#????# 1,3,1 +??##????#?#??##?#??. 10,5 +???#???.??.????? 5,1,1,1 +????.#????#????#.. 2,11 +..??????#??.??#??? 4,3 +?#?????.???.??.???? 2,1,1,2,1,2 +?.?#????????? 3,1 +.???.??#???#???##?? 3,11 +??#??#?#??#?.?#???? 2,4,2,3,1 +??????##.???.#?? 1,5,1,1 +?.#??????#????#?. 1,1,9 +?.#??.?#??????.? 3,6 +?.#.??????? 1,1,2 +?????????##?. 3,6 +#?#???...?? 1,3 +?###??.????#???????? 5,4,6 +???????????#??#??#?? 11,1,1,1 +???#??????. 1,3,1 +?#??.???#??#? 2,2,5 +?###..???##?. 4,3 +?##?#?.##???##?.?.# 6,7,1 +?##?#??#???. 6,2,1 +#??.??.?#????##???#? 1,1,1,9,1 +??#????.???#.??. 1,5,3,1 +?#?????.???. 2,1,3 +?????.?#?#?###???. 4,7 +????..?#?#? 1,3 +??..?#?????? 2,2,2 +???????.???? 5,1 +?????.#.?.???##? 3,1,1,3 +.????????.#.#. 2,1,1,1 +.??#?.?#????#??# 2,8,1 +?#?.???#.????? 3,3,4 +.??#?##?#???#?.#?? 1,11,1 +..???#???...?.?.? 2,1 +??.??...#????????? 1,1,1,2,2,2 +????..??????.??#. 2,6,3 +.??.#?#??#??. 2,1,4 +#???#?#.?#?#.?#?? 7,1,1,1,1 +?.#????#???#???#? 12,1 +..???#???#??????# 6,1,1,1,1 +????.?#?.???? 4,3,3 +???#???#.??#?#??? 1,5,6 +????????.???.???#??# 7,1,2,2,1 +??##??.??#.????. 4,2,2 +?##?#?##???#.????#?? 11,5,1 +..?.?#????? 1,1,2 +.??#????????.#???. 9,3 +????.#..?#.?#?#?#?? 1,1,1,8 +#???#?..???#? 1,2,1,2 +??#?.#.##??????# 1,1,1,7,1 +?..??#?#?.??#?.? 1,4,3 +?????.??.. 1,1 +??..#?????.#.?? 1,1,2,1,1 +????..?##??????##?# 3,13 +?#.????.??.?#????#?# 1,1,1,2,4,3 +??#??.???? 4,1 +#????#.??? 6,2 +#?????.???????? 6,1,5 +???#???#.#???.?? 4,2,3,2 +#????????? 4,2 +#.?.???.???? 1,1,1,1 +.#???????.? 3,1 +???.??#???###?#?#.#? 1,4,4,1,1,1 +?????#???? 6,2 +??.#.????#.??#?#??? 2,1,5,1,1,1 +??????###?##?? 1,9 +.???????????. 3,1,3 +.?????#??##?.????. 11,2 +??????##??????#???. 2,1,5,1,1 +.#??###??.???? 6,1,2,1 +.????.??#??????? 4,2,1,1 +#????????.#?????#? 2,1,2,4,1 +???.##.?#? 2,2,2 +?..??????###?????.? 1,9,1 +?#??????#???? 2,1,3,2 +??##???#??#???? 1,2,6 +??.??????????.. 3,3 +#?#??.???.?.?? 5,3,1 +???.??#?#???????### 1,1,1,1,6 +??#??????.??? 5,3,2 +??????.???????#? 3,1,3,1,2 +.##?#????###?.??# 2,8,1,1 +?????????.?#. 1,1,1,1 +?..#????#??###?????? 7,9 +.???.?#?.#.?.#? 1,3,1,2 +.??#.????? 2,1 +##..#?????#???? 2,1,1,4,1 +?????...??? 1,1,2 +??.#?.????#?? 1,6 +??????#?#??????? 1,10,2 +??#???????.??.?.???# 4,1,1,1,1,3 +.#????.??#????. 2,2,4,1 +?????????#???. 6,1,4 +.???????.??# 6,3 +?.??#???.??##? 6,3 +.????.??#?? 2,3 +????###????????#?##? 1,17 +??.#.?####?.#? 1,1,4,1 +??#??#?#???.?#.? 6,2 +???#????##??#?.?.? 9,2 +?.???.??.????#??? 2,7 +?#??#???#???#? 8,1 +#??????##??? 3,1,2,1 +#..???????.#?#?? 1,4,1,3 +?????##?????????.# 8,2,1 +..??????.?#????##. 3,8 +??..????#?#?###??.?? 1,12,1 +.??.???#?. 1,5 +??#?????????.? 7,1 +??.##?#???. 1,7 +#?????#???????# 1,1,1,1,4 +.???????#? 1,3 +????#??.?#.????? 6,1,1,1,1 +#..??#??#???.??#? 1,7,3 +???.??????????? 1,1,8,1 +?.???.##??..??##??? 1,4,5 +...?.?????.??.??##. 1,4 +????.??????? 1,1,1,1 +.??#?..#?.?.#???. 1,2,2,2,1 +?#???????????.#?#? 1,1,1,3,3 +????.#?.?????#.. 1,1,1,1,2 +?????????????##? 1,4,1,1,2 +.???.??##???#???? 1,5,3,1 +?##???????..?.?? 4,1,1,1,2 +.#???.????#???#? 1,1,1,3,1 +??.???#???##???#. 2,13 +???????##???# 4,4,1 +????????#.???#??.. 1,1,3,6 +.??##?##?????????. 12,1 +??###?.#????.? 4,5 +###?...#??#? 4,4 +.?#??#.????#.???? 5,2,1,3 +??##.??#?#?.???.??. 3,1,1,1,1,2 +?##?.?###??#??????. 3,9,1 +##???#.?#????#?? 3,1,1,5 +??????????#?????# 2,4,6,1 +?????#??##?#..#??.? 10,2 +?#????#?..???.#? 3,3,2,1 +?##????#???? 2,2,1 +#?#???????#?#??#? 3,2,8 +??..?#???? 2,1,2 +????.##?##.?.??..?# 2,2,2,1,1,1 +.#?????#?. 1,2,1 +??#??#....?# 5,1 +????.?#??#?????.#.? 1,1,5,3,1 +?????.?.??.???. 1,2,1,1,2 +???.??#????#.?#. 2,7,1 +?#.#?.?#?.???? 2,1,3,2 +??#.#???????#?#??.#? 1,1,2,2,2,2 +##???##????## 3,3,1,2 +??????????.#??? 1,2,1,3 +??.???#???.?? 2,1,3,2 +????##?????##??#??# 6,6,1,2 +#???????.??????? 3,2,4 +..#?.?#?#.???????? 2,2,1,5,1 +???#?#.??????#. 1,3,2,1 +??.????????? 1,2,1,1 +#?.#???.#? 2,1,2 +?.???.?#?? 2,1 +????.???#?#.?# 3,6,1 +?.??#?.????.##???? 4,3,2 +???#??#??.#???##?.? 3,3,7,1 +?????#????# 1,5,1 +#??#?????##?? 1,1,7 +.???#?.?#??? 4,2 +#?#?##???#?#??#.?? 1,1,3,5,1,1 +?.???.???.?#?.???.? 1,1,1,3,2,1 +????#.?????.??##? 1,1,4 +?.?????.????# 1,4,3,1 +#???.?.?## 4,3 +??#?.?#???.. 3,3 +??..?#?##???. 4,1 +.??...???. 2,1 +??????.??..?? 4,1 +?????.?#?? 1,1,3 +?????#?.?.??.??? 1,5,1,1,1 +????????#???????? 1,6,1,2 +???????.?#.? 1,1,1,2 +????????#? 2,5 +??????????.??? 1,1,1,3 +?.????????#?? 1,6 +.?.??????.???? 4,1 +?.???.???#.???? 2,3,1,1 +????.?#?#???#?#?.? 1,8 +.????##??? 1,4 +#???#.??????? 2,1,5,1 +????????????# 1,1,1,1 +??????#??????# 1,1,4,1 +.?#?.?#??#?????? 1,9 +????#??.??#. 1,2,3 +?.?#??.??????#.?#?. 1,4,1,5,2 +???.##?#?#?#??#??#? 1,12,1 +?##???????????? 2,1,7 +..?##?.#??????.? 4,1,1,1 +.?..?##???. 1,4 +?????####?##?????. 11,1 +#?#?.???.?? 4,1,1 +#??.#?#???. 3,5 +?????..??????.????? 4,4,1 +#??.?#??#?##??# 2,1,8 +?..????###.?? 1,1,3,1 +?.?##?#?#??.#?? 1,7,1,1 +????..???#????????? 3,11 +#??#?????#??##?## 1,3,10 +??##?#?.?# 6,1 +?????###.??.. 1,3,2 +#??.?.#?.?.? 3,1,1 +###?#?.????.????#?#. 5,2,1,1,1,1 +??????#??# 4,1,2 +?###.?????#?#??? 3,5 +???#???????#? 7,2 +?????.??#?.?? 2,2,1,1 +#..#.?.?????#?.? 1,1,6 +??????.??#??#?? 1,8 +???#???#???#?? 1,1,3,2 +#???..#?.???? 1,1,1,4 +.???.?.?????#? 3,1,4 +.??#.?###?#? 1,1,6 +?#???.?#?#?##.# 1,1,6,1 +?#?????#???..#.?? 8,2,1 +##??.?.???#?? 2,1,2 +?????#????#?.???? 2,2,3,1,1 +??..?#??.?#?? 2,2,1,1 +??.????..?##??#??? 1,2,4,2,1 +.???.?#????.?? 1,6 +?.##?????#..????. 8,1,1 +??.#?..???#. 2,2,2,1 +???#?#??????..??? 1,7,1,1 +????.??#.????#?? 1,1,3,1,3 +????????..?.???##? 1,2,2,1,5 +..?#??##??.?? 6,2 +???.?###??# 2,6 +????????##??###???? 13,1 +??.?.#?#???##?? 1,1,1,7 +.###.?#?#???.? 3,5 +?###??..??#?##? 5,6 +...?????.?#.? 2,2 +#.?#?..##.?????? 1,1,2,1,2 +????#????????#?? 5,3 +#.??##?#??#?.? 1,8 +.??#?#??..?#??#?.?? 5,2,2,1 +.##.??????##?. 2,7 +???##??????.#.?? 6,2,1,1 +.??#??#????.??? 6,1 +???..???###?????? 1,1,1,6,1 +??????????? 2,2,4 +?.?.#?#.?????? 1,3,2,2 +????.?.?##?.? 3,4 +..####??#?#??#?.?.#. 4,4,2,1,1 +.??#??..?#??#. 2,5 +..?.???#..?#.???.#? 1,2,2,1 +?#????#???????? 8,2 +?#???....?#???#?? 2,1,2,3,1 +???.##????#????? 1,11 +.?????#.??#?##???? 4,1,2,6 +?.#???#??? 2,1,1 +##?????#??? 2,2,2 +???#????#??????#? 5,1,2,1 +????.#?????#?#????#? 1,1,4,1,2,4 +?.??????##?#???.???? 1,2,8,3 +???#??.?.?? 2,1 +.??.?#???##?????#?. 6,3 +.???#??.?.? 4,1 +.#?#???.?. 5,1 +?.????.???#???? 1,1,1,3,1 +???.???#?###?##?##? 1,1,11 +??.??.??.?? 1,1 +.????#?#?? 1,4 +.?.??????#????.?? 1,6 +..???.?.?#.???? 2,1,1,1,1 +.?##????#?#???#? 4,1,1,2,3 +.?##?#?????#?#?? 6,3 +????#?.???.? 1,2 +????#.#.???##??#?? 3,1,6 \ No newline at end of file diff --git a/2023/12/part1.py b/2023/12/part1.py new file mode 100644 index 0000000..fac4ac7 --- /dev/null +++ b/2023/12/part1.py @@ -0,0 +1,41 @@ + +def find_groups(str: str): + groups = [] + cur = 0 + for c in str: + if c == "#": + cur += 1 + if c == ".": + if cur > 0: + groups.append(cur) + cur = 0 + if cur > 0: + groups.append(cur) + return groups + +def gen_parts(string: str): + max_num = 2 ** string.count("?") + for i in range(max_num): + substr = string + # replace each ? with a 0 or 1 based on i + for j in range(string.count("?")): + substr = substr.replace("?", str("." if (i >> j & 1) else "#"), 1) + yield substr + + +count = 0 + +for line in open("./input2"): + chars = line.split(" ")[0] + groups = [int(x) for x in line.split(" ")[1].split(",")] + + print(line) + + for part in gen_parts(chars): + found = find_groups(part) + # print("part", part, found) + if found == groups: + # print("found", part) + count += 1 + +print(count) \ No newline at end of file diff --git a/2023/14/.gitignore b/2023/14/.gitignore new file mode 100644 index 0000000..eb5a316 --- /dev/null +++ b/2023/14/.gitignore @@ -0,0 +1 @@ +target diff --git a/2023/14/Cargo.lock b/2023/14/Cargo.lock new file mode 100644 index 0000000..edcc677 --- /dev/null +++ b/2023/14/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "fourteenth" +version = "0.1.0" diff --git a/2023/14/Cargo.toml b/2023/14/Cargo.toml new file mode 100644 index 0000000..ded7d40 --- /dev/null +++ b/2023/14/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "fourteenth" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] diff --git a/2023/14/input1 b/2023/14/input1 new file mode 100644 index 0000000..b92d1a3 --- /dev/null +++ b/2023/14/input1 @@ -0,0 +1,10 @@ +O....#.... +O.OO#....# +.....##... +OO.#O....O +.O.....O#. +O.#..O.#.# +..O..#O..O +.......O.. +#....###.. +#OO..#.... \ No newline at end of file diff --git a/2023/14/input2 b/2023/14/input2 new file mode 100644 index 0000000..c63fb71 --- /dev/null +++ b/2023/14/input2 @@ -0,0 +1,100 @@ +..O.O..O.#.#..#......O.....O.#.O..O.OO.O..OO...O..#.#OO......O.#..#OOOO..O.....O#.O.OO.O.O#......OO. +..O........#O..O...O....O.......#.....#.#.O..#O#...........##.O.....O#.##O..#....#.#.....##.O.....#. +......O..####...#O.#.O.#.#.O....O..#.....O.#O...#.#.#.....O#...#...O.....O....O....O........O.O...#. +.O.O.O.....#......O...O..#....#...O##.OO.O.O.O##.O#O#.#.O##...OOO.....O...O....OO.#.....#..#....##.. +.#..O...O...........#....#.O#.....O.........O....OO.O.#.O#O#.#..O##...O...O...O....#OO.O..O#..#..... +#.O#..#.....O###..##.....O..#....O#OO.OO......O..O.#....OO.OO#.O...O....#.#O..O.OO..O#.#.O.......... +O.#.O.OO...O..OO.O..#O......##O.O#.OO...#.......O...............OO.O..O.....O..#.O....O...#O..#..O.. +OO.##...#....O....#.##O..#....O#O.#......O##..#.O..O.#O#..##..#.O.O.O.#O.....#O.O.O....O......#...#O +.##.........#.O#..#.#.#.#..O..#....OO.O.#O..#.............#....O..O.O.....O..........#.....#.O..O.O. +..#......O.O#..O..#O.O..O.O..O#......#O...O........OO...O.#.OO...O..........O....O.#........#O....#O +..#....#..#..O.O.#..#.#.......#.O.#.O#.#.#....####OO....##.O..#.OO#.##.#..O#.#....OOO#O.O.......#..O +O..#OOO.O..#..O......#O#..O............#..O.OO.....#..O#.##...O...#....O#...#O.O..##..O.OO....#OOO.O +OO#O.#..#..#.#.OOO.O#.O.#.O..O.##..#.#O#....#O.....#..O........#......#..#..O.#.O..O#OO#O....O.O.#.O +.O.OO.......O..O........#.....#...##....##..#.........#.......#.OO.#..#....#..O.O.#.O##........#..O. +.....#...#O......#.....O.#..#O##O....#O....#...##O.....#.....#....OO#...O....O#O...#.#.#.####.OO.#.. +.O#.O.O...##.O..O.O..#..O##.OO.#.#..........#........#.#.#....O.....O.O.#..O...O#.#.O....#.#...#.#.. +.#.#O............O#....#O.O##......#.OOO##.O.O.....OO##OO............O.O....##OO.O#.....#.O.#..O#... +O.O.O......#OO..O#..O.#.#.#.O#...#.OO.O.O#OO.O.#.O....#...O#....O..O#...O...##.OO#..O....##O.#..O.O# +.#.#........#...OOO#..O#O..#..O..O.O#..O#...#..#O.............O#.#O..O.OOOO.....OO##.#.O.###.#...O.. +.....O...OO#.O..O.O..##.#...O#..O#...O...O...O.###OO........#..O.O..OO#..#....#.##..O#..#......##..O +OO.....#O#.#..#...#..OO.#..#O.......#.O.O.....O......O..OO#..........OO....O.....#.#O.#O.O..O..O.... +#.O.....#...O......#.#...#.OO....#O.O.O......O..OOO..O#.#...O#.O##..OO.OO.O##.#...#.O...#....OOOOO#O +##O...#.O.#.O#.O##O#...#.#.O....#.........#......#O#.#O......#O..#O..#..#......O.....O.###O..O.O.... +O..##.#....O...OO#..#...OO##..#O.#O...O.................#..O..#..O.O.O###.O.O.#....O...#.O.......#.. +O#..#....O....O....OO.....#.O#.....#.......O..O.....O#OO..O..O..##...#O#.O............#.#.#..#...... +.OO..#....#...O..O....#O.......OO.##.O..O.#.O.O.#O.##.......O#......O...O...O.O##O##..#..#O.......#. +OO#.OO.......#...#.#.O#.....#O.###.O...O#..O#..#..O#..........#......O........O..#...O#...OO#O.OO... +.#.#.O.......##.#.O....#..###..OO#..#..O#O...............O.O...O#.#.....#OO..#O............O.O..O... +.....#O..#.O......#O..O...........O.....O...O.#..O.O.#O#.#..OOO##..OO#....#O..#.#..#....O..O..O.#O.. +..O.#O....#.O..#O##.O##.#O.....#..#.....O...##..O........##.O.O......O...O#O###..#OO......#.OO.#O.#. +OO..#........#..........O..##...#....OO..O..O...O.O.....O#.O......O...O.O.O..#.O.......#.O...#..#.#. +.....#...#.....#.....###..OO...O.O#.O.#O..#...........OO....#O.O.O.......OO...OO...OO....#O..O#.O#.. +..O.O#.##...#.##.O..#.......#..#OO.OO.......O#OO..##...O##O.O..##.O..#O..#O...O..##..#.O#.##..O.O..O +..OO.OO..O#.O#..O..O.#.O...#O##.O#....O....#..O#.O#O..OO.OO##O..OO..#..#.O.O#..#....O#O.#...O....... +..O..#.....O.#..OO.....#..O....#...O.......O##.#..#OO....O...O..O.O#O#..O....O..#.#.OO.....##OO..... +#.O.OOO...O.....O#.##.O..O#..#...OO..#OO#.#..O#....O..###...O#....O................#....OO#....O..#. +.O..#...O#.#..#.O.##..####.#..#..O..#.......#......O....#.....O...#.O.#.OO.O...OO..#....O#.OO....O.O +O.#..OO.....O.....O.O.#...#.OOO..####....O.O###....O.#.#O.#O#.#O..#.......O...........O...OO.....O.. +........O.OO.....O.O.#.O.O..O#.O.....#.....#....#..O......OOO#.#.#O........O.O.#..O...#OOO..#......O +OO.....O#..#.#...OO...#...#......O...#..O.O#...#.#.O#..O.#O....#...OO#..#..#.OO.####....O#..#..O#... +..O#.###OO.O...O#O....OOO...O#...O.OO...O#.#O.#..O......#..O#..O..#O...#O.....##..O#..O..##.#OO..O.. +#O.O.....#O#O#......#.O.OOOO....#..O..O.#.O.O...#O##.O....O..####OO#...#.#.....O..O.OO..##O#........ +#...#.#O.......O....O#.##..#O#..#.............O....O..#...OO.O..O#...O.#O...O..........#.O#..##OO#.. +.#.O..O.#O..#O#O##..O..........O#O#..##.#.OO.O.#...#.#.O....#..O#.#..#.#..#........#...O#......##..# +...#OO.#.O#.......#...OO#..O#..O....#....#...O.#.OO.O......O...OOO......#.#.O..#..#..##O...O.#.#.O.. +#..#...#.#.......O...#.O....O##...O#O.#.#..#..##..O.#O.#O....O..O.O.#...OOO..#...OO.#.O##.#.#..O.... +..#...O....#.....O.O.....O........#..O....#..#....##.#O.#.#OO.O.OO.O..O..#.OO....O..O#..#...#..O#.O. +...O###O...O..O#OO#.##.#O..O...#.#O...O#.OO..O...#.#O..O.OO#O...#O.#....#O#...O..O..#O.##.#.....O#.. +.##.....O....O...#.....O....#...............O.#.##..#.O........O#.O.#O#.OO#..O.#.O.O#.OO....#..O.... +....#...##O...O...O.O....#....OO#OO#.##..#OOO.....#.O..OOO#..##.......O.....O..O#.#...#.....OOO..... +..O..O...#....O.O#O#.###..#...#O.#O#..##.O...##.#................O#....O.O..OO......OO.O##O......#.. +..#O..O.....O.#.O..........#..#..O...OO#OO...#..O..OO#....O..O..#O.#O..#..#...#...O............#.O#. +.O......#.O.#.O...O.............#.#.#...#..OO........O..#.O.#.O.OO...#O.O#.............O#.#....O..OO +####.#OO.#....#O.O..O.##.O#..#....O..O#......O.....O.#.#.O..O....O...O.O.........##....#....OO.O..O. +##.OO.O#O.O.O.###O...###.O.O....O...#.........OO.#.#OOO#O..#O.........#....OO.....O...O.#.O.O..#.O.. +.......#.OO#.O.#.O#..O##O...O.###.O#....#.#O#.OO..#.......#..###..##.#O..O.O.........O.#OO.#.#.#.O.. +..#.O.#...O...##.O.O.#.......O............O.O..O....O...O#..O.#....O.#...O#...OO.#...#OO..##OO..O.#O +#..OOO...O.OO.....O..O#...O....#..O..#....#.##OO...#..#.O....O........#OO....OOOO...##O....O.#.##..# +.........#..#OO...OO....O.O#O##..O..O...O..#O#.O#......O..#..##..#......O.....O.......#..#.#.OOO.... +#...#..##...##.O...#.#O......OO....#...#.OO.OOO.##..##...O#O.#O....#.#....##...O.O..O......O...O.... +....O...#....O.OO.....OO............O#..#.......O...OO..O.O...#.#..##.....#.......O....O.....O..O..# +O.....#.##...O.....OO.....##O.......#.O.O.#O.OO..O......O....##OO#...#O#..##...O.#...O.....#.O.O.#.O +.O#..#....#.#..#.O.O.....O...#..##.O...#..O....O.O#O..O...#O...#.O..........O.O..O.##O#.#O##........ +.O#.#.#..#..#O...OO....#..OOO.......#..OOO.#O....O....O...#...#O##.....#.O.O#..#...O.OO..OO...#..O.. +.........O.OO...........O#..#..O##.......#.....O.#OO.....O...O..##...O...O...O#...#...O..OO....O.... +O#.....#...#....#....#O#....#..##OO#.O.#O...O#....O..OO#O.OO....#O#.#.O.#..O..##OO.O....##.O.#.O#O.. +O.#...O.O.#..##O..O.O.#O.#O.O##O#..#.#O.O..O..OOO...O#.#.#...OO.......#.....#O..##..##..O#......#... +.O..#...O.O..#O...O.O.O..O.........#..OO..#..#O.#.O.OO.#O.OO.##.......O.........#...O.#OO....OOO.O.. +...#O#....O#....O.#......O..........O....###....OO#O.......O..OO....#O...O.OO.O..O......#...O.....## +O.##.#...##..........O#...#O.O............#..O..#O#O#OO.O..O.......O#.....O#...O..O###OOO.O.#.....#. +O#.#O..O..#...O#..O.#..#..#.......O.#...O.........#.OO..O..O#O...O#..#O..O#...O#.#..........#O.O...# +O..####.....#....#OO#.O#O..#..#...O..##....O.......#.O.OO....O...O.......O#O..#.....#.#......O.O.... +..O#..O...O#..O.......#..#O#...##.......O.#O.#..O.#..O...###.....O.O...#.....#.#......O...OOO.....#. +.....#O...#..#..O..#.OO#..#.O......OO.#..O#.###O.....#.OO..........OOO..##OO...##..OOO#O.#O.##...... +O...#..O.OO.O..OO..#..OO.#....#....#.O.....#..#...O...OO#........##O.......O..#.#.......OO#...O#.OO. +O...##............O...#..#OO#O........O.#..O....O#..OOO.....O.O........##.##.....##..#.#O..##....O.. +..#...#...OO..O..O...OO.....O.O.O....O.....OO.OOO..O...#O...O.O..#...O.##....#..#...OO##.O.O#.#.#.#. +.OO.....#.#...O.#...#.O.OO..###..O..#O.#.O##..O...O.O..#O.O.#...O...#.#O.O.O...#.#....#..O.......#.O +...O.O#O......O.........OO..#O..OO.....OO##O.O..#.O##O.O.#.....O..#.#.....OO#.#.O.#.O#...#O.#....O#. +..#...O..#.O...#.#..##..O..O..O.O.O.O...O.O..OO......O....#..O.O#...##..OO..O.#O..........#....#O.#. +.O...O##.#O.OO##.O..#.#.....O#....#....#O.O#.##....#..................O#..O.##.#OO..O..O##O.O.O..... +.OO......O##...O#.O......OO.OO.#..OO#..O..#.......O#...O.OO......OO##O.O...........#...#OOOO.#.O..#. +..#.O...#.#..O.....#.O.O#.O...O#.......O.#.O#...O.....#....#.#O...O..O...O#.O..........#O...#....#O. +.OO.......O#.#........#O..#...........OO.#........#OO.OO#....#..#O#..........OO.O..O.O.....#..#O.... +.OO#.......#.#.#..#.OO.#.O#.#.O....O..OO...O.#...O#O..#.O.....O#.OOO.#..O..O..#.#OO.#....##O........ +.#...O#O....O#..OOO....#....#......OO..#OOO....O.#....O...O.#..O..O.#OO..O#...#.O.....#......###OO.. +O...##.......#......O#OO.#O#O#O.O.O.O...O...#...O.#..O.......O#...#O.O##..#.O......##...#.O#.......O +#..#O#.......OO...OO.....#.#...OO..O.O..O#.OO..O#...O......#.##O..#.#...O..O#...#.#....#O.#O...O...# +..#.OO##O.O.O...##......##..#.###.O....##.O..O#.O.#..O..O.O..#.O#O#..O................O.....O......O +OO...O#O.OO..OO..O...#....#..O...O###.O...#.OO..O#....O..OO.#OO...........O.O.##..OO#.O......O.#..O. +..OO...#..#.O.O.....##..#O#.O...O..O#.##..#.#..#...OO.#...#..........#....O........O.#O#.....O....#. +#...O..O..###O.....O......O..O.#O..#......OO.....##....#.OO#.O..#..O..##.#..O..O....##..#O#....O...# +O#.#..O..O.#.OOO....O.....O....O..O#....#O#.O...O##..OO.#..#.........####..#O#O#.O.O...O.O.O.#.....O +.O...O......#.......OO...O.#.....##.O...O#...O.#..O.O#O....OO.#....O...#O#..#....OO...#.#......O.O.. +O..OO....O.O..#.O...O...OO......#.#..O..O.O.O.#.#.O.....O......#..#..##.O.##O#.#O........O.O....OO.O +..O.OOOO.........O#....O...##OO..O.O........O#.O.O.O##..#....#O...#.......##..#....O...O....O##..O#. +.#.#...#..O.#..O#.O..#.....#O..O...O#..#..O.#....O.#O...#O.O#O.##......O.O.#.#.##....##..O..#....O.. +O...#O.......OO..#.O.#.#..O.....OO.........O.O#..O#O.#.#......OO.#.OO..#..O.#.O..##..#.....O........ +..#.#.....#.O..O#.........O.O...#..O..O...##...........###O............#.O..O..#..O.......O....O.... +#O..O....O.#..##O..#.O.#.#...#O..#.##...OO.#.O...O..O..O..###O....OOOO..#O......#O.OO..#.OO#O......# \ No newline at end of file diff --git a/2023/14/part1.py b/2023/14/part1.py new file mode 100644 index 0000000..f8c4643 --- /dev/null +++ b/2023/14/part1.py @@ -0,0 +1,35 @@ + +map: list[list[str]] = [] + +for line in open("./input2"): + map.append([x for x in line.strip()]) + + +def printmap(): + for line in map: + print("".join(line)) + +printmap() + +moved = 1 +while moved: + moved = 0 + for i in range(1, len(map)): + for j in range(len(map[i])): + if map[i][j] == "O" and map[i-1][j] == ".": + map[i][j] = "." + map[i-1][j] = "O" + moved += 1 + +print() + +printmap() + +value = 0 + +for i in range(len(map)): + for j in range(len(map[i])): + if map[i][j] == "O": + value += len(map) - i + +print(value) \ No newline at end of file diff --git a/2023/14/part2.py b/2023/14/part2.py new file mode 100644 index 0000000..ea5274a --- /dev/null +++ b/2023/14/part2.py @@ -0,0 +1,83 @@ +from functools import lru_cache + +map: list[list[str]] = [] + +for line in open("./input1"): + map.append([x for x in line.strip()]) + + +def printmap(): + for line in map: + print("".join(line)) + +printmap() + +# @lru_cache(maxsize=20) +def north(map): + moved = 1 + while moved: + moved = 0 + for i in range(1, len(map)): + for j in range(len(map[i])): + if map[i][j] == "O" and map[i-1][j] == ".": + map[i][j] = "." + map[i-1][j] = "O" + moved += 1 + +# @lru_cache(maxsize=20) +def west(map): + moved = 1 + while moved: + moved = 0 + for i in range(len(map)): + for j in range(1, len(map[i])): + if map[i][j] == "O" and map[i][j-1] == ".": + map[i][j] = "." + map[i][j-1] = "O" + moved += 1 +# @lru_cache(maxsize=20) +def south(map): + moved = 1 + while moved: + moved = 0 + for i in range(len(map)-1): + for j in range(len(map[i])): + if map[i][j] == "O" and map[i+1][j] == ".": + map[i][j] = "." + map[i+1][j] = "O" + moved += 1 +# @lru_cache(maxsize=20) +def east(map): + moved = 1 + while moved: + moved = 0 + for i in range(len(map)): + for j in range(len(map[i])-1): + if map[i][j] == "O" and map[i][j+1] == ".": + map[i][j] = "." + map[i][j+1] = "O" + moved += 1 + +def cycle(): + north(map) + west(map) + south(map) + east(map) + +for i in range(1_000_000_000): + cycle() + +print() + +printmap() + + + +value = 0 + +for i in range(len(map)): + for j in range(len(map[i])): + if map[i][j] == "O": + value += len(map) - i + +print(value) \ No newline at end of file diff --git a/2023/14/src/main.rs b/2023/14/src/main.rs new file mode 100644 index 0000000..07a18f9 --- /dev/null +++ b/2023/14/src/main.rs @@ -0,0 +1,227 @@ +use std::{fs::File, io::{BufReader, BufRead}, fmt::{Display, Formatter}}; + +#[derive(Debug, Clone, Copy, PartialEq)] +enum Item { + Empty, + Solid, + Movable +} + +impl Display for Item { + fn fmt(&self, f: &mut Formatter) -> std::fmt::Result { + match self { + Item::Empty => write!(f, "."), + Item::Solid => write!(f, "#"), + Item::Movable => write!(f, "O") + } + } +} + +fn printmap(map: &Vec>) { + for row in map { + for item in row { + print!("{}", item); + } + println!(); + } +} + +fn value(map: &Vec>) -> usize { + let mut value = 0; + for (i, row) in map.iter().enumerate() { + for item in row { + match item { + Item::Movable => value += map.len() - i, + _ => () + } + } + } + value +} + +fn north(map: &mut Vec>) { + for x in 0..map.len() { + let mut rockcount = vec![]; + let mut _rock = 0; + let mut first_y = 0; + + for y in 0..map.len() { + match map[y][x] { + Item::Movable => _rock += 1, + Item::Solid => { + rockcount.push((first_y, _rock)); + _rock = 0; + first_y = y + 1; + }, + _ => () + } + } + if _rock > 0 { + rockcount.push((first_y, _rock)); + } + + let mut rockshift = 0; + + for y in 0..map.len() { + if map[y][x] == Item::Solid { + rockshift += 1; + continue; + } + map[y][x] = if rockshift < rockcount.len() && rockcount[rockshift].0 + rockcount[rockshift].1 > y { + Item::Movable + } else { + Item::Empty + } + } + } +} + +fn south(map: &mut Vec>) { + for x in 0..map.len() { + let mut rockcount = vec![]; + let mut _rock = 0; + let mut first_y = 0; + + for y in (0..map.len()).rev() { + match map[y][x] { + Item::Movable => _rock += 1, + Item::Solid => { + rockcount.push((first_y, _rock)); + _rock = 0; + first_y = y + 1; + }, + _ => () + } + } + if _rock > 0 { + rockcount.push((first_y, _rock)); + } + + let mut rockshift = 0; + + for y in 0..map.len() { + if map[y][x] == Item::Solid { + rockshift += 1; + continue; + } + map[y][x] = if rockshift < rockcount.len() && rockcount[rockshift].0 + rockcount[rockshift].1 < y { + Item::Movable + } else { + Item::Empty + } + } + } +} + +fn east(map: &mut Vec>) { + for y in 0..map.len() { + let mut rockcount = vec![]; + let mut _rock = 0; + let mut first_x = 0; + + for x in (0..map.len()).rev() { + match map[y][x] { + Item::Movable => _rock += 1, + Item::Solid => { + rockcount.push((first_x, _rock)); + _rock = 0; + first_x = x + 1; + }, + _ => () + } + } + if _rock > 0 { + rockcount.push((first_x, _rock)); + } + + let mut rockshift = 0; + + for x in 0..map.len() { + if map[y][x] == Item::Solid { + rockshift += 1; + continue; + } + map[y][x] = if rockshift < rockcount.len() && rockcount[rockshift].0 + rockcount[rockshift].1 > x { + Item::Movable + } else { + Item::Empty + } + } + } +} + +fn west(map: &mut Vec>) { + for y in 0..map.len() { + let mut rockcount = vec![]; + let mut _rock = 0; + let mut first_x = 0; + + for x in 0..map.len() { + match map[y][x] { + Item::Movable => _rock += 1, + Item::Solid => { + rockcount.push((first_x, _rock)); + _rock = 0; + first_x = x + 1; + }, + _ => () + } + } + if _rock > 0 { + rockcount.push((first_x, _rock)); + } + + let mut rockshift = 0; + + for x in 0..map.len() { + if map[y][x] == Item::Solid { + rockshift += 1; + continue; + } + map[y][x] = if rockshift < rockcount.len() && rockcount[rockshift].0 + rockcount[rockshift].1 < x { + Item::Movable + } else { + Item::Empty + } + } + } +} + +fn main() { + let mut map = vec![]; + + let file = File::open("input1").expect("File not found"); + let reader = BufReader::new(file); + + for line in reader.lines() { + let line = line.unwrap(); + let mut row = vec![]; + for c in line.chars() { + match c { + '.' => row.push(Item::Empty), + '#' => row.push(Item::Solid), + 'O' => row.push(Item::Movable), + _ => panic!("Unknown item") + } + } + map.push(row); + } + + printmap(&map); + + println!("\nnorth"); + north(&mut map); + printmap(&map); + println!("\nwest"); + west(&mut map); + printmap(&map); + println!("\nsouth"); + south(&mut map); + printmap(&map); + println!("\neast"); + east(&mut map); + + printmap(&map); + + println!("Value: {}", value(&map)); +} diff --git a/2023/15/input1 b/2023/15/input1 new file mode 100644 index 0000000..62f7ed0 --- /dev/null +++ b/2023/15/input1 @@ -0,0 +1 @@ +rn=1,cm-,qp=3,cm=2,qp-,pc=4,ot=9,ab=5,pc-,pc=6,ot=7 \ No newline at end of file diff --git a/2023/15/input2 b/2023/15/input2 new file mode 100644 index 0000000..af14219 --- /dev/null +++ b/2023/15/input2 @@ -0,0 +1 @@ +fb-,kgf=2,xdr-,fqqg=7,cgth-,hkpjg-,gl=7,nrq-,jp-,rvf=8,rxr-,lzp-,pbhz=6,gh-,qkb=8,mrl-,lzp-,bn=7,vmxr-,lpc=9,mmzp=2,dnv=1,mdx=7,gqm-,czn-,qdczs=1,gs-,jbg-,hfqg-,tk=7,xbg=1,th=5,bk-,dch-,gb-,ck-,jpxzcb-,tdlh=3,jsvs=1,sqs-,nzrql-,rvd=7,dmpknl-,qmb=2,kb-,rd-,bn-,nkvtl-,kpmr=9,kgs-,nn=7,th-,rvf-,cx-,hqv-,vmc-,qrsptd=2,ztv=3,lkr=1,jvsgt=7,cqcks-,nmr=7,bg-,ntr-,zcb-,kbc=1,nzrql-,mr=4,zp=5,zm-,ldcs-,dq-,tlf-,bl=9,jnvc=8,cqt=5,mh=1,pdjnj-,jfm=8,fsks-,jj-,tkg-,lbv=2,hhffl-,njn=5,csrzc=9,ln=8,tdv=8,vp-,frvg=8,djx-,crzk-,nr=6,vjfd=1,ktpdxl-,bc=2,hrj-,pdjnj-,jpxzcb=6,cqt-,lv=3,plgkb-,mk=4,qk=7,tdlh-,mr=2,gg-,mpb=8,lbp-,kbm-,dbk-,xrh=9,mgdcbs=2,ctrv-,mtvs=1,cpxg=4,zlfqp-,hz-,pkml=1,kpt-,rqz=5,tlf-,mjz-,psmcv=8,nzrql=3,gv=9,txcfv-,jhbpln-,rvf=6,thr-,mq-,mj=1,blts-,sddb-,ddmp-,rgnz=8,dcfs-,qk-,dmf-,cqcks=9,vr=7,kd=3,hllngz-,strnx=4,lp-,cqq=7,kgf=9,vmc=8,mtvs=3,st=8,blts=8,kmp=2,fsks=2,skpvm=3,psrg-,jjsn-,dzx-,lvg=3,xpnr-,nkvtl=2,qs=5,gnl=2,gzv-,dch-,tmd=3,dnq-,jq=6,srg=7,hm-,dk=1,nhq-,gnl=2,srp=3,crkv=3,pk-,vmxr=3,jlgb-,mvt-,mftr=7,ctrv=5,rxr=1,qgk=2,qgq-,xnqh=2,hrgm-,fp-,hrj=6,fvqp=7,rsk=2,vr=7,zm=3,rx-,lp=3,jbf-,zdr-,tsd-,mdh-,czn-,tpv-,phvczf-,zzc-,jxv-,hkhl-,lkr-,fmj=6,zb-,nxb=1,cgg-,gxn=5,hm-,jzkkr=4,jvb=7,ccrk-,clcvf=8,lt=1,crzk=4,jvsgt-,fx-,jxznrg-,csrb-,bjt-,cgth=5,hn=9,hhbm=3,nhpgr=7,vh=9,zh=5,vx-,th=3,pkxb-,nr-,zjb-,ddmp-,pplfsx-,njk-,rpdbc=5,vmc-,rpml-,jj=2,jp=9,kjhbbv=1,ptsvb=5,xx=6,vhv-,lcc=1,bkf-,ngzh=5,jlgb=5,vnd-,mr-,gr-,gd=4,dnq-,mkr-,hhffl=6,glz=3,qnq-,xvh=2,vr=7,vnd=6,rpdbc=2,vr-,hg-,jtv=8,zq-,qckn=4,gv=5,dxd=9,zbb-,qfmd=1,fk-,jjsn=5,mjz-,ch-,zqdhd=4,lcc-,ztn-,mj-,zk-,ccrk-,kmp=9,bg-,gd=6,ztv=1,ft-,rbg=2,drzs-,vnd=9,drk-,fk-,trf=6,ntt-,cpxg=6,fnd-,gr=6,hdr-,nczs=9,pds-,jm=3,pdjnj=2,fbzp-,hbb-,zcb=2,drk=8,trf-,njk=1,ms-,bjnp-,mjz-,dsns-,fqfq=6,crzk-,sv-,dk=9,nxhr-,fvqp-,fdm=8,mc=3,zc=8,kbc=4,hqv=2,plgkb=1,rlhbg-,hkhl-,mc=4,dmf=2,pkxb=6,nrmf=5,sqs-,czf=9,dhj=7,skpvm-,dq=8,fkhh=6,cgg-,ppr=7,dtfc=3,crkv-,jfm-,hfpxsx-,xss=4,lv-,qgk-,znq=1,rps-,hbp-,cl=5,rxr-,tmj-,gqm-,ps-,qq-,cbrkq=8,vh-,jz-,pl-,fzbc-,pz-,sgdm=2,mglgk-,mh=5,rp-,bdx=8,nr=7,lbg=2,czc=2,pz-,jvh-,hllngz-,vr=7,jvb-,dtfc-,ccrk-,jj-,ngzh-,jxb-,xp-,ztn=2,czf-,pdstc-,jz=7,bml-,nr-,dmf=4,mm=8,ch-,ngl-,dtfc-,mdx=1,vnr=7,ztn-,szk=1,fk-,qckn-,kbvs-,djx=6,ms=4,vnd-,drzs=3,zjb-,xh-,mrl=7,lcc-,qjnd=7,svv=6,sq-,ncgv=4,rtq=9,qq-,zv=8,hjvb-,jxb=7,jb=8,mp-,vnr=7,rp=4,hhffl=3,mr-,sk=9,tdlh-,tmd-,lh-,kbm-,pq-,pdjnj-,hkpjg-,vzm=8,kgs=3,kkj-,vmjvdd=9,ltcqqb-,xthp-,djx-,kkmsc-,skpvm-,ztv=6,fdm-,jxml=7,cfnhn-,gr-,xfthj=8,dqj-,lt=3,rqg=1,nhpgr-,zb-,mdgl-,vr=8,pr=1,gmb=7,zv-,tk-,sddb-,czf=8,kmp-,xq-,pk=5,cbrkq-,lkr=9,djx=8,lnd-,mm-,dmf=7,tl=2,cqcks=4,ntr=6,xthp=7,qk=3,st=4,gl=3,fgl=7,srp=8,lp=6,cqt=3,nmr-,xx-,rx-,fqqg-,vmc-,jnvc-,rqz-,xftl-,rsrtlj-,hz-,znq=7,dq=2,brt-,ntt-,vh=4,tvk=8,hhx=5,xgf=9,tx=6,bs-,mfp-,rc-,gnx=9,zc=9,psrg=2,jbbtl-,mq-,nq=9,qj-,kmmc=6,qs-,dr-,kthbhp-,kqx=1,bc-,strnx=6,kd=9,tr-,bbd-,mh=2,rtq=4,qs=3,ztv-,lcc-,nv=2,nrmf-,znq=3,strnx=7,mtlb=1,xvh=3,zlfqp=4,bc-,psrg=3,dk-,dxx-,ptd-,ngl-,kxh=9,srp-,xj-,dcfs=6,bjt-,zqdhd=1,xp-,csrzc=7,ttj-,tl-,bggd=2,pm-,skpvm-,kgs-,bbd-,xx-,nhq=5,dqj=2,xvh=2,mm=8,zcb=8,mh=6,cjbvjf-,dkr-,tbc=6,rq=3,mhng-,kbvs=7,pz=7,xdr-,lp=8,mh=7,ctrv=1,fhfb-,mmzp-,pq-,fkd-,dtfc=4,vz-,hdr-,mc=6,ps=8,dqj=4,bgb-,kh=8,hvcx-,nhpgr-,dxd=4,zvpf=6,rqg-,ncgv=9,km-,ksf-,szk-,xq-,fzbc=5,zh-,zs=7,pp-,jvb-,ndhfl-,nzm=9,mrl-,zdf=2,jvsgmg=9,bbd-,ps=1,zq-,mtvs-,lnd=1,th=5,ckdx=6,hhbm=1,mq=1,glz-,jxb=5,lsf-,mtlb=4,vx=1,xx=6,sv=2,jbg-,vjfd=6,ccxz=8,xsbrcq=6,ckdx=8,srpp-,pg-,vzr=4,xvh=1,jq=4,rzj-,lj-,xls=8,lbp-,jqf=6,bbd=2,vmc-,jfm-,xssfm=8,dfbnf=3,cfnhn=4,vmjvdd-,kbc-,hhbm-,nkvtl=3,gl=3,rrssrj=5,vmjvdd-,tdlh=6,bf=5,nbmcd-,mvt-,qj-,kmmc-,kpmr=4,tsd-,rsrtlj=7,mhng-,gnl=9,qgk-,mdh=6,bk-,kkmsc-,lfv-,hkk=3,mr-,rp-,jsvs-,nbl=5,fkhh-,sc=1,jzkkr=7,sk-,hvcx=6,jfm-,cp=4,ttj-,qckn=7,glz-,lpc=7,zzc-,rjmcrf=4,szk=1,tt=5,tgc=5,xrh-,hjvb=7,bkf-,pzvz=7,tpv=6,mkr=9,dtfc=5,bdx=3,jvsgt-,pbhz-,jjvnr=4,pzvz-,fbzp=4,kqx=9,xp=3,jqf-,bz-,vmxr=2,xpnr=9,rfj=1,kpmr=9,zzc=1,rc=1,jhdh-,qc=1,dzd=3,dlflk-,mjz=1,mfp=6,ds-,bdx=2,hrgm-,rbg-,jhbpln=7,mglgk-,lfv-,nsk=1,rqg-,xh=8,nq=4,rzj=9,kjhbbv-,hfpxsx-,hxd=9,mdgl-,ch=9,xrh-,gnl-,gq=2,jvld=4,cs=6,svh=6,vnd-,hxd-,qrsptd=9,vzm=3,js-,pplfsx-,nrmf-,vz-,svh=1,cqcks-,dxd-,qdczs=6,ms-,vfz=2,zk-,fmj-,qmmn=6,np-,vjfd-,jqf-,pvx-,tr=6,csx=3,ntr-,vjfd=9,mgdcbs=2,vhv=7,rx=1,zb=9,nbz=3,sct-,vv=7,psrg-,jhdh-,hzq=4,ptsvb=6,hdtvj=8,nrmf=4,nv=9,sx-,tcdnx-,fbzp=7,strnx-,fr=8,zvpf-,fkd-,gb-,kjhbbv-,ksf=6,bjnp=6,pg=2,fp-,gfkzd-,nn=7,vmxr=3,pvz=1,csrb-,lt-,psmcv=6,ksf=4,zqdhd=5,mfp=9,zcb-,hbcd=5,xq=8,jtv-,srpp=5,cssvp=7,pz=5,zfhl-,kbvs-,bdx=1,zkp=4,bggd-,tckh=8,mkr=1,jxznrg-,sc=7,zdf=4,lv=7,zzc=8,xdr=1,czn-,np=5,nr-,fsks=6,xss-,qc-,dd-,zb-,zm=7,bk-,sp=5,hz-,ntr-,fsks-,xx=3,lkr-,cqm-,zs=3,dnv-,xp=3,fvqp=5,dtfc=4,qdczs-,kbvs-,ktpdxl-,mrlmn=1,cl=7,ptd-,ckdx=6,njk=3,dlbzz-,fk=1,mc-,cnq-,fg=5,ksf-,fqfq=7,lsf=9,sk=3,dbqh-,hfqg-,znnz-,tmd=6,clc=5,jlgb=6,hxd=7,njn=7,dkr-,pzvz-,jvsgt-,mdh-,bgb-,djx-,kjhbbv-,zv-,lfv=1,dcfs-,sptrn=5,dlflk=4,ck=6,vx=3,gr-,vg-,prc=5,cssvp-,tvk-,pkml-,vlgp=7,vmc-,sc-,srg=7,bn-,cqcks-,vnd-,dlflk-,xssfm=3,znq-,lsv-,hfck=9,bf-,tr=3,jxznrg=5,cqt-,xx-,dmpknl=8,xssfm-,xsbrcq-,mtlb-,xvh=6,bg=5,zdr=3,dqp=6,xls-,cl-,dk=6,zqdhd=3,qjnd=1,tkg=2,gb-,ghm-,bg-,nrmf=5,dk-,lpc=5,sgdm-,pr-,bn-,vzm-,xx-,zbb-,bz=8,dmpknl-,fhfb=3,lkr-,cqq-,ks-,jvsgt=4,czf-,jvh-,ltcqqb=7,tm=3,pkml-,lt=6,kthbhp=3,pz=1,tdlh-,mq-,hm-,czf-,jmb=6,njk=1,pqm-,mqm-,kkmsc=8,tnpm-,hdr-,bz=7,dlflk=7,tkg-,qmmn=6,tfk-,gg-,sh=3,mvt=2,gstj-,jxb=9,rsrtlj-,qc-,pp-,hfqg=5,znnz-,czf=2,xqrbf-,pm-,srpp=3,nxb-,lkr-,mmdmrf=9,mjd=1,dcfs-,jxml-,fbzp=3,pvsvg=3,kb=4,jvvt=6,ztv-,jzkkr-,vh=1,ctrv-,tsd=3,gv-,qdczs=9,vs=7,jhbpln-,kbvs-,kbvs-,hm=6,cnq=8,qgq-,hhx-,vlgp=7,qfr-,dqvh=1,pvsvg=9,mqm-,trf-,jhdh=9,mm=7,bggd=5,cgth=1,pq=5,qrsptd-,dlbzz=9,hzq=3,vvvfl-,lzp-,mj-,nzm=4,mf-,qmb=1,tdv-,cx-,hrgm=9,dqp=1,zh-,thr=3,brt-,qkb=9,np-,sgdm=5,lpc=2,kgs=5,mgkc-,tdv=6,dbqh=9,mvt-,zdr=3,trf-,zk-,jxml-,ch=8,jfm=3,cjbvjf-,jvvt=1,bml=3,qj-,cf=4,hn=9,vx=3,djx=5,nv=9,cqcks=8,sk=5,dr-,mkr=7,tdv-,mrlmn-,sptrn=7,pp-,cjbvjf-,rgnz-,rd=2,zb=4,cssvp=1,rvd-,lfv=2,pkxb-,jzkkr=9,rlhbg=6,vlgp=1,vhv-,dq-,csrb-,vz=1,bg=1,vf=7,cpxg=8,bkz=8,bnr-,djx-,dk=1,pm-,rvf-,kgs-,dg=5,kh=3,dfbnf=6,dnq-,hqv-,qnq=5,fbzp=8,hdtvj=9,kpt=8,sm=9,llnfxt-,fb-,ccxz=3,xp=7,strnx=1,sc-,rtq=8,ppr-,zgp-,tk-,drk=8,mrl=2,rq=6,lnd-,dch=4,rtq-,dbq-,cqq-,jbbtl-,cfnhn=2,sv=6,ldcs=8,hjvb-,ld=7,gq=7,lfv=4,hfqg=4,bf=7,rqz-,gd=3,hfqg=1,xrh-,zs-,mdgl-,cx-,rxr=4,ncgv=7,rsrtlj=1,gx-,pds-,fnd=4,lkt=2,gd=6,vcd=5,psrg-,ztn-,mf=7,hkhl-,lzp=8,psrg-,qqv-,jxv-,tdlh=3,cfnhn=3,pg=9,qrsptd-,fhfb=4,vv=2,bn-,kbm-,zc=6,rpml-,vz-,dbqh=4,zc-,dmpknl=8,bmt-,tz-,mtlb=6,jpxzcb=1,zdr=3,tdv-,zh-,tvk-,rq-,fgl-,dbk-,hrgm-,mqm=2,pkml=1,mvb-,hm-,gnl=5,zcb-,csrb-,kqgfd=2,mjd=6,gv-,hkhl=1,sv-,hn-,zqdhd-,bkz=1,dxx=3,hs=2,th=2,fk=4,qmmn-,xfthj=2,njn=8,vmxr-,jvh=1,vnr=8,dzn=8,fg=8,nq=9,bdx=4,rjfx=4,pkml-,nczs-,bggd-,hpm=7,nv=3,kh-,qgq-,strnx-,lkr=8,lzzjgp=1,rjmcrf=1,tkg=3,tr-,rgnz=5,ngl-,ktpdxl=6,qnq=1,xftl-,nq-,pz-,drqml-,pkxb=3,phvczf-,cgg-,cgth-,hbp=5,fdm-,njn-,fdm=9,js=8,njn=1,jp-,gvqz-,skpvm-,mqm-,sc-,ddmp-,ch-,crkv-,tx=9,qh=5,cssvp-,lnd-,mdh-,kgs-,prc-,tk=3,zbb-,mpb=7,ldcs-,ch=8,rl=9,tvk-,hvcx=9,pp-,hrgm-,xfthj-,clcvf-,ztv=3,pdjnj=6,pp=5,sk-,xj-,mdx=4,jpxzcb=5,bgb=8,hkhl-,svv=1,sqs-,dch=5,hv=5,jvb-,jxml-,bkf-,ckdx-,jnvc=9,kpjg=9,pvz=7,cx-,jz-,vmjvdd-,nczs=1,mvb-,nbl=9,ttj=7,mgkc-,rp=2,dg-,dbk=2,mjz-,xftl-,qmb=2,gg-,ckc-,hv-,rsk-,pj-,hdtvj-,jsvs-,bgb=4,cqcks-,hphz-,ghm-,zs-,zg=9,rtq-,mpb-,tzb=2,kkj=8,fg-,fqtnq-,dq=7,jbf-,rfj=8,xfthj=3,hhffl-,hf-,bm=9,szk=6,mkr-,kbvs=5,pbhz=9,jhdh=5,cp-,pzvz=2,dd=7,psmcv=8,dbqh=6,xls-,qkb-,cs=7,xbg=6,tbc=6,zdf-,mp=9,mdgl-,fbzp-,gv-,vfz=6,skpvm-,mrlmn-,prc=7,gp=6,np=7,njk-,sx-,mgdcbs-,hhx=8,qqv-,pqm-,jm=8,pzvz=2,jb=8,jj=9,bml=4,rc=7,rc=5,dqp=9,lsv-,tdv=2,zk-,vzm-,frvg-,sq=7,lcc=5,mhng=5,dxx-,hpm=2,rxr-,fv-,vf-,nczs-,jtv=7,tm=4,st-,fkd=2,dxx=1,mk-,cl-,xftl=2,mr=9,nrq=9,lqfb=9,bs=3,lj-,kbvs=7,fn-,hvcx=8,mdx=2,rj=5,jz-,rlhbg-,pjrh=8,nbmcd=1,ppr=6,mk=9,rzj-,rqz=1,qq-,fx=3,fsks=1,dzd-,mgdcbs-,cp-,gb-,vhv-,mqm-,nq=7,tvk-,tt-,pvsvg-,fqfq=2,dd-,lkr=6,mjz-,pvbm-,lzp-,pvx=5,hhffl-,fkhh-,frvg-,fbzp=8,tckh-,vhv-,lh=7,cbrkq-,kmmc-,pm-,cjbvjf-,dk=1,zqdhd-,mgkc=6,dnv=5,rbg-,vp=3,rvf=2,hn=8,zjb-,sv-,rvf=2,pz=3,pvbm=3,nsk=1,gg=9,fzbc=1,mm=9,ld=9,rxr=9,czn-,mjd=9,jp-,lbg-,tvk-,fqqg-,cqt-,hf=9,cpxg-,vjfd-,xbcx=9,kgs=2,tbc=9,ps-,blts=4,fv-,phvczf-,mkr-,hkk=1,ntr-,cqq-,hdtvj=6,czf=3,qq=4,kbc-,hbb-,tmd=1,xfthj=8,kthbhp=4,qfmd-,cqt=3,rqg-,mrlmn-,hqv=3,rq-,fr=6,kmp-,fqfq=2,ckc-,pbhz-,pjrh=5,pz=8,tz-,ghm=2,kqgfd=6,ldcs=9,szk-,bs=7,mtlb=7,bk=6,hpm=4,fv=3,jp-,mp=3,bs=2,qrsptd-,slj=6,pvsvg=7,bjt-,qfr=5,fqqg-,bmt=7,jsvs=2,rps-,mfp=1,vg=6,hqv=3,tr-,lsv-,qjnd-,jm-,xqrbf-,rq=4,ntt=6,fk=7,zgp-,bg=6,prc-,qjnd-,ldcs-,pplfsx=5,vfz=9,dfbnf-,sddb-,cbrkq=1,plgkb=2,dmpknl=5,xpnr-,ntt=1,rl=8,qgq-,hjvb=1,dk=6,czf-,fkd-,kgf-,bc=3,zk-,bk-,pjrh-,xgf=3,mfp=9,jqf-,sqs=3,jbg=1,ptsvb-,tlf-,hs-,zfhl-,rqz-,rpdbc=3,jxml-,mjz-,nmr=7,rvf=7,sddb-,bmt=7,tpv=4,mfp-,kpmr=9,ljrjs-,qbkp=4,ch=3,fzbc=6,hfck-,vx=9,qj=8,tckh-,lbg=2,mftr-,zq=3,rhstqx-,tmd-,xq=3,hz=4,trf=8,mvb=5,nbz=7,vnr=4,jxb-,bjnp=3,ntt-,vp=4,gl-,rfj=1,tm-,ddmp=6,bg=7,clcvf-,jmb-,zp-,dsns=9,jbg=3,rqz-,rpdbc=8,pbhz=6,czc=8,jq-,st=9,ksf=5,tr=8,cgg=3,dmpknl=7,gqm=5,jj=5,hfqg-,qqv-,qqv-,cqm-,lbv=8,xbg=6,lfv=8,mftr-,ztv=6,rlhbg-,jz=3,xdr-,sddb=8,ngzh=2,ms=3,hg=3,hs=1,bgb-,bkz-,czc=8,cf=8,pj=9,th=8,jp-,xftl=5,zk-,ksf-,nsk=3,vx=8,bjt=9,djx=4,hfqg=9,vlgp=7,zh-,fbzp-,gnx-,rsrtlj=1,fvqp-,jhdh-,mvb-,kh-,qgq=7,sd-,xfthj=1,nbz-,vmc-,shx-,fsks=9,cgth=9,jfm=9,xvh=4,vr=4,fdm=8,tkg-,jbbtl=7,dxx=4,cfnhn-,ln=4,tt-,fn-,mqm=5,tt-,hv=3,phvczf-,lbv=3,rl=5,zcb=5,drk=9,jvb-,sptrn-,jzkkr=1,sx=3,kb-,jhdh=1,ntr=2,fb-,rgnz-,pm=3,qj=9,sc-,srg=4,rqz-,clcvf=4,vcd-,zm=9,kkmsc=6,brt-,xx=8,ddmp-,nzm-,bdx=2,fmj-,qh=7,thr=8,kjhbbv=5,pz=8,bkz-,gstj=2,km-,km-,jp=1,qgk=1,mq-,xthp=1,jxml-,jbg=4,zp-,bm-,hpm=8,jxv-,hhbm=3,xssfm=8,crkv=7,fsks=5,jvsgt-,xthp=2,vr-,cl=8,hdtvj=4,ltcqqb-,fp-,dlbzz-,gzv-,hfpxsx=9,qh-,xqrbf=7,thr-,xftl-,fk=4,tk-,ksf-,nbl=3,gl-,bl-,pplfsx=9,mgdcbs=2,qnq-,pvz-,cgg=5,cqq=6,nq=5,hllngz=6,rsrtlj-,qqv-,tgc=7,hv=1,rp=8,sct=3,pds=1,ghm=4,mgdcbs-,tl=2,bl-,xqrbf-,zv=2,rjmcrf-,pj=5,nn-,mpb-,dqp=1,znnz-,xsbrcq-,znq-,jm-,qnq-,srhq-,nsk-,kbvs-,bmt=7,drqml-,fx=3,tnpm=8,jvvt-,bjnp-,njn=1,vcd=5,nv-,dnq-,xj-,glz-,lsv-,qkb-,qkb=8,kgs-,vzr-,lbg=5,rp=3,zp-,czn-,fqqg=9,cs=7,fj=8,zcb-,txcfv=9,xbg=9,jqf=2,rsrtlj=3,srg-,jmb=2,trf=8,jvh=6,hz=7,kkmsc=7,fx-,dq-,gs=7,bs=6,zm=6,lv-,jm-,tvk=4,znnz=9,zbb=5,kxh-,gfkzd-,zp-,mqm-,cfnhn=6,fk-,bbd-,gd-,lbv=2,dxd-,tgc=9,lh-,cpxg=3,zv-,qk=1,fr=4,cl-,rgnz-,hjvb=5,lbg=9,fmj=9,mqm-,jjvnr-,sct-,fb=5,rhstqx=5,ncgv=4,zvpf=8,qdczs-,nkvtl-,dzx=1,qgk=6,nbl-,xqrbf-,mpb-,tr=4,ccrk-,pbhz=1,pz-,mglgk=9,hpm-,np=6,nhz-,jvh=3,hfqg=3,dqvh-,kb=1,dtfc=7,fvqp-,pvbm=4,rpml-,tmj-,tlf-,fp-,zc=2,czc=8,hbp-,zvpf=6,nhpgr-,nbmcd=9,pg-,rl=8,trf=8,tsd=4,hrgm-,jpxzcb=6,ch-,xpnr=1,bk=3,fn-,dsns=2,slj=6,pg-,bdx-,jq-,jp=9,qckn-,cf=7,jz-,crkv-,tzb-,ztn=3,shx=4,dr-,bgb-,znq-,rvf=4,ds=8,ltcqqb-,rx-,hkk-,xthp-,hkk=2,bggd-,ptd-,zs=4,ntr=2,mftr=9,zkp=9,bkz=8,qgk-,zv-,dsns=4,gnl=4,gx=5,csx=7,jlgb-,thr=8,sc-,sgdm-,fqfq-,nq-,kqx=9,dqj-,fzbc=7,srhq-,cjbvjf-,zcb=2,qdczs-,km-,fsks-,kpt-,ptd=6,km=7,kr-,nr-,fp-,qrsptd=1,jb=3,kbc=6,gq=8,gg-,vzr=5,lqfb-,ktpdxl=3,czf-,bf-,dbk-,bdx=3,xq=7,ckc-,dsns=1,rzj=6,lh-,hxd=6,tmj=1,jfm-,tpv=4,blts-,pplfsx-,szk-,sct=4,kmmc-,jxb-,hpm-,qgq-,hhbm=5,ptd-,pdjnj-,ldcs=6,mtlb-,ch-,hxd-,jqf-,mglgk-,csrb-,hxd=2,nn-,njk-,qckn-,vmxr=5,nbz-,ptsvb=7,pzvz=4,dmpknl-,fsks=9,kpt-,zdr-,ppr=1,xq=5,zbb-,bn-,vnd=7,pqm=5,vf=5,mdx-,txcfv=1,rc-,xthp=8,tmj-,tgc-,jtv-,rp=3,fx-,bg=2,srhq=9,bz-,drqml=3,ttj-,pvz-,fr=3,jmb=2,jtv=3,hkk=1,djx-,tt-,lbp=1,fsks-,gx=9,cpxg-,qh-,zjb-,tcdnx=9,fkhh=7,hvcx-,bz=5,pr-,cl-,jxb=9,bc-,gv-,jpxzcb-,jzkkr-,rsk=1,hn-,qvf-,dtfc=2,gg=9,pg=1,js=9,hrj=4,nkvtl-,zm-,rtq-,srpp-,ch-,kmmc=2,fzbc=2,hkk-,drzs=7,pkml-,tm-,xthp-,rps-,hrgm-,hhffl-,st-,srhq=5,nzm-,cl=6,xfthj=4,zdf-,rl=2,rq-,kbvs-,jlgb-,qgq=6,mkr=7,ms=7,ckdx-,vp-,bjt=2,pds-,pz=5,cs=6,dmf=3,xrh-,mmdmrf-,hm-,fsks=5,lcc=3,kmp=5,lrd=7,rpml-,kbvs-,tk-,lrd-,rpml=2,rd=7,gnx=6,jnvc-,cjbvjf=4,fp=5,jbbtl=6,pvx-,nr-,svh-,rjfx=9,fkd-,pm-,nzm-,mj-,xpnr=5,xgf-,lfv=7,fk-,ps=2,xgf-,lt-,vp=2,qjnd=5,zc-,kkmsc=3,njn=6,nrmf=2,tt-,vr=8,rsrtlj=8,fn=8,qckn-,srhq=5,rzj-,nkvtl-,dlbzz-,xss=2,hfpxsx-,tnpm=2,clcvf=2,lqfb-,vzm-,xbcx=2,kd-,pvsvg-,qgk=9,tdlh=3,hn-,rrssrj-,vr-,rhstqx=2,jhdh-,bc-,ck=3,cl=6,lkt-,fzbc-,cssvp-,nbz=5,rjmcrf=4,xsbrcq=9,fr-,pkml-,jpxzcb=9,fb=7,fv=3,jzkkr-,mrl-,lfv=5,gqm-,csx=2,bjnp=2,gnl=2,dqp-,kkmsc-,gq-,nsmmn=1,qfr-,xgf=8,xnqh-,km=3,pvsvg=1,cf-,xthp-,jjsn=2,nbz=2,dcfs-,jq=7,cp-,cnq=4,fvqp=7,cqt-,cqm-,vzm=5,nmr-,dqj-,hdtvj-,mgkc=7,ks-,rvf-,vlgp-,zdr=4,dgnq-,tr-,tgc-,pjrh=3,jtv=2,rqz=8,sptrn=6,ntt=6,fg-,kb-,kmp-,mjd=5,kjhbbv=6,hkk-,fqqg-,pr-,ldcs=8,bm-,st-,jbbtl-,jvh=9,xssfm=4,np=4,mp-,mjd=7,dqp=9,dr-,qhbk-,fnd=7,hqv-,kbvs-,cf=3,xqrbf-,jm=2,lkr=3,zg=1,hf=1,xssfm-,nxb-,kqgfd=9,jbg=4,svh=4,tdv-,xdr=8,zv=2,strnx-,sc=7,ctrv=1,qj-,lp=5,cssvp=8,ps=9,sgdm-,hdr-,bgb=8,hs=2,tvk-,nsk-,bjnp-,pds-,dtfc=3,plgkb-,jtv-,fmj=1,bg-,csx-,sptrn=2,fn=9,brt=1,sptrn-,bk-,cx=2,tk-,gb=2,tkg-,jhdh=8,nczs=9,tm-,jjsn-,xrh=6,tpv-,ntt=4,nv=7,fk=9,lbv-,lj=3,pvz=1,rtq-,bl-,cjbvjf=7,zm-,jvsgt=8,kpt-,csrb=7,hdr=7,ch-,pplfsx-,jzkkr=2,jzkkr=6,hz=6,jxznrg-,pp=8,qgk-,hkk-,ld=9,pdjnj-,hkk-,rfj-,dr-,frvg=9,gs=3,bg-,tr-,bdx-,mq-,cpxg-,jz=3,lcc=2,jpxzcb-,tpv=9,tmd=2,rzj-,fmj-,jjsn-,ztn-,bjnp=3,xbs=8,shx=5,lcc-,gxn=3,ncgv-,drzs=9,fg-,rxr-,tzb=3,lnd=9,rbg-,ntr=6,njk=7,nr=8,dnq-,hf-,kb=8,csx-,tgc=5,fgl=8,pvsvg-,pvsvg-,ks=3,gqm=2,lqfb=4,zh-,jsvs-,jxml-,sptrn=8,lrd=7,tpv-,rqg=9,kpt=3,mrlmn-,xx=7,jbg=2,nbl=6,qmmn=9,dbk=1,ckdx-,srpp-,ntr-,mb=6,qdczs-,mq=9,zc-,rd=5,qdczs-,pvbm-,vmc-,pplfsx-,kbvs=1,ft-,ft=8,dxd-,jtv=8,gd=6,gx-,dg=9,sptrn-,mftr=6,dbq-,ttj=3,nhz-,dsns-,lh=3,jjsn-,mmzp-,tmd=8,jfm-,mc-,cx=3,jhdh=3,gfkzd=6,bg-,xfthj=5,clcvf=2,hbcd-,mjz-,rtq=3,czf-,jpxzcb=8,vlgp=1,gzv=2,vvvfl=8,phvczf-,bgb=8,gq-,ft-,pzvz-,xpnr-,lsv-,rp-,hbb=1,lbv=2,mf-,rl=8,rx-,qgk-,hbb=4,nzm-,ztv-,cqq=9,pq=4,mtlb-,rjfx-,xls=4,jxznrg-,xbs-,cqcks=2,dd=3,rvf-,mkr=5,nsmmn=1,sgdm-,hfpxsx-,fp-,rlhbg-,jvh-,km=4,nxb-,mvt-,cssvp=7,jqf=8,pq=4,hn=3,shx-,mdx-,kpt-,xbs=7,jbg=7,rvf=4,dch-,tgc=8,vv-,lj-,jvsgt=3,shx=4,zk=9,crkv=4,srhq=7,kpmr=4,cnq=9,jj=4,ngl-,kkj-,skpvm=9,sk-,rrssrj-,slj=5,vfz=1,bbd=5,jxml=6,gs=9,ft=4,gq-,dqvh=7,dqvh=1,ccxz-,hfqg=3,xthp=7,jpxzcb=1,qgq=5,tdv=8,fg-,bdx=9,llnfxt=3,tt-,sc=9,ljrjs=7,fzbc=2,hkpjg=3,tmd-,psmcv-,xpnr=5,pds-,fqtnq-,dsns=6,lrd-,prc-,sh=6,dxd-,drqml=5,cf=2,dhj=7,pz=3,lh=2,ldcs-,js-,zbb-,np-,rgnz-,rl-,xj-,jvb=3,mgdcbs=4,njn=3,zfhl=7,hvcx=5,pjrh-,hvcx-,csrb=1,bl=5,trf-,qckn-,qbkp=9,ctrv=3,fb-,bz-,rqz-,bjt-,gs-,lkt-,kthbhp=4,rvd=7,ldcs-,ln=8,kpjg=9,tvk=9,sc-,lp-,czf=7,vh=4,cgg-,fsks=4,vlgp=8,hm-,bk=7,srpp=9,pplfsx-,xdr=8,mfp-,rq-,ldcs=9,mrlmn=2,pl-,nsmmn-,lp-,vf-,hfqg=9,srg-,qvf-,cssvp=3,tpv-,cf=7,dqj=4,bml-,vmxr-,bl=2,xssfm-,nhq=9,qkb=8,nv-,ptsvb-,vlgp=2,pl-,km=1,vlgp=9,gq-,rzj=6,phvczf=1,qfmd=8,jhdh=5,tvk-,lbg-,jvvt-,bz-,dk-,dqp-,nxhr-,pj=8,ljrjs-,vnd=6,ghm-,mq=2,hfqg=9,blts=1,ks-,hf-,ttc-,rqz=8,tk-,rrssrj=5,gx=8,csrb=7,cnq=8,mdx=4,pdstc=5,ttc-,cjbvjf-,njk=8,ttc=1,lkt=8,gvqz=7,tt=4,hm=3,sqs-,zjb-,rzj=2,fr=3,sq-,mb=2,hg-,rps=3,gp-,vzr-,hv-,dhj-,ks-,cf=4,tcdnx-,pdjnj-,pl=1,bggd=6,rps-,lsv=4,nr=4,jxznrg-,vmxr-,zlfqp=9,hhx-,pz=1,qqv-,jz-,kd-,rq-,bkf=1,txcfv-,jvh-,mq-,ngzh-,hfpxsx-,zkp=3,mkr-,bk-,xqrbf-,ksf-,kbc=8,rc=5,ztv=1,dnh=3,nbz=4,djx-,zq=5,kqx-,rfj-,xgf=1,pkml-,jp-,lbv=1,hbcd-,vz=9,qgq-,pjrh-,mmzp=4,xrh-,pdjnj-,zbb-,sqs-,bbd-,jbf-,ltcqqb=7,xssfm=9,qs-,dxd-,jsvs-,xh=3,hfpxsx=1,fkhh-,hf-,nzm-,zv=9,jvsgt=7,sh-,fqtnq-,np=6,hhx-,jlgb-,sptrn=8,ld=1,tdv=1,fj=1,qhbk-,kqx-,hbb-,dxd-,rtq=5,hqv-,vmxr=9,vz-,ck=8,czf-,lzp-,ppr-,prc=3,fnd=2,rgnz-,rhstqx=9,lbg-,jhbpln=9,qvf-,rsrtlj-,txcfv-,ngl-,mf-,lj-,mdh=5,fx-,dzd=8,jvb=4,gzv-,csx-,hg-,zs=1,hbp-,fqqg-,bmt-,dlflk=9,qrsptd=7,tk-,kbm-,szk=9,xss=5,gd-,dk=8,mpb=4,bf-,jzkkr=9,ft=6,nhpgr=5,shx-,mvt-,svv=3,kpt=3,qfmd-,ps-,nbmcd-,vnr-,xsbrcq-,zv=1,dqj=4,xss=4,dtfc=3,skpvm-,zv-,mdh-,csrb=2,tnpm=3,sgdm-,jvld=2,tcdnx-,sddb=7,nhpgr=5,qfr=5,qqv-,fqqg=4,bdx=7,ctrv-,llnfxt-,kbvs-,ds-,nrq=4,znnz=5,jbg=5,zv-,cqt=3,gs-,srhq=1,jvld-,kh=5,nzrql-,ld-,zjb-,fzbc-,dbk-,vv=3,svh-,kb=1,hhbm-,qdczs=4,mjz-,xpnr-,pg=4,mgdcbs-,xvh=3,mdh-,lt-,hm-,tcdnx-,djx-,nn=5,fp-,xthp=9,rxr-,dbk-,lkr=5,jzkkr-,vf=7,tckh=9,tnpm-,sm=4,hqv-,mfp=2,nr=9,xqrbf-,zb-,lh=2,xsbrcq-,mr=5,pvbm-,frvg-,thr=9,dkr=5,bnr=4,dxd=1,kpjg=8,xbg-,dr-,kqx-,fdm-,tt=5,ttj=2,ttj-,tt=5,njk-,slj=3,rsrtlj-,hkpjg=4,fp-,vlgp-,sd=5,dtfc=2,dqp=1,rhstqx=1,bc-,csx=6,gmb-,sptrn=5,pg-,zlfqp=4,jpxzcb-,rx=7,bbd=5,kqgfd=9,ddmp-,bjnp-,gp=3,qqv-,hxd=7,jxznrg=4,dzx-,gg-,pbhz=4,lrd=7,zs=9,tlf=8,zc-,dnq=2,pdstc-,vzm-,ljrjs-,pg=8,psmcv=7,cqq-,hzq-,jvsgt-,kmp-,bs=9,ghm=1,hdtvj=2,vs=4,qmmn-,cqt-,zqdhd=7,qgq-,kd-,tckh=1,jxml-,ldcs=4,zdr=1,xpnr-,nczs-,mmdmrf-,xftl-,ks=9,qrsptd-,dmpknl-,hrj=5,xthp-,tdlh=4,plgkb=3,jzkkr-,jxml-,fkd-,rrssrj-,qj=1,vnr=8,jxb-,zc-,fqqg=8,lkr-,rzj=8,zg-,ckc-,fp-,vmjvdd=9,rxr-,rq=3,vs=1,nhz=9,lj-,xh=1,hkpjg-,xftl-,rp-,vzm=7,ptsvb=8,cqt-,xftl=3,tk=4,skpvm-,kmp=1,gl=5,kmp=3,zs-,sct=1,psrg-,dbq=7,jq=4,hfck=1,fr=4,jj-,rhstqx-,dxx=8,hbcd=4,bkf-,tmd-,vp=9,ntt=8,nbl-,pkxb-,hbcd-,bjt-,ltcqqb=4,mb-,nxb-,ztn-,jbbtl=6,jtv-,dxx=8,bnr=1,fqfq-,vx=5,dch-,fnd=2,fdm=3,dr-,nrmf=4,zm=2,cp-,hfck-,szk-,csrzc=1,nzrql=5,hbp-,tgc=9,nxb-,mtvs=8,mfp=9,xbg=2,nsmmn=2,qj=1,zjb-,ghm=5,cx=1,jnvc=1,zbb-,rc-,mc-,crzk=8,srpp=4,xqrbf=9,lqfb=5,pq=2,lkr=5,mm-,fzbc=4,xp=4,kpt-,xbg=9,drqml=8,bjt=3,kthbhp=3,txcfv-,ltcqqb=3,fj-,rvd-,njk-,gx-,ds=1,plgkb-,ksf-,dlflk=8,rtq-,lnd-,sh-,qh=2,qj=4,sct-,zkp-,mrl-,xh=6,cl=7,dbq-,jhdh=8,ld=3,llnfxt-,rpml=6,mkr-,bg=8,xqrbf=2,xnqh=8,xqrbf-,ptd-,nq=2,ccxz=9,tmd-,rjfx=8,sx=4,kpjg-,fkd=8,vz=4,dtfc=9,pbhz=6,qgk-,vv=5,hvcx-,frvg-,tmd=8,kgf-,bggd=7,tpv-,gl-,kmmc=5,qmb=1,zvpf-,hbcd=3,lh-,cssvp-,hrgm=6,jfm=1,jm=6,plgkb-,bn=3,dgnq-,ltcqqb=7,nbz=5,ncgv-,hrj-,pkxb-,sm-,ldcs-,nbmcd-,dnh-,zbb=8,vjfd-,zvpf-,zkp-,nbmcd-,nn=3,mk-,fr=4,gv=1,sc-,bm=2,drk=6,rpml-,vf-,njk=3,njk-,tzb=6,sk=5,csrzc-,mftr=5,dlbzz-,sd=9,mk-,rl=1,njn-,qbkp=6,dfbnf-,gstj-,lpc=4,jb-,dtfc=6,tkg=1,dsns=5,rvd-,rc-,lkr=6,kbvs-,cqm-,rrssrj-,bbd-,jjvnr=2,mh-,pbhz=5,lnd-,tdlh-,tzb=1,mtlb-,tl-,mmzp=4,ks=3,dqj=1,fhfb=5,ch-,fqfq=1,rl=9,fkd=9,kpt-,jj-,qdczs-,lbv=7,vnd-,gg-,bdx-,xp-,txcfv-,ckdx=1,fhfb=7,jj=7,dzx=8,vnr=1,dg=4,pq=5,pl=8,fp-,mb=2,kxh=8,dd=9,kqgfd-,szk=4,jvb-,pg-,vv=9,hf-,rlhbg=6,xrh-,fmj=3,dzx-,rq=4,rvd=9,kbm=7,nzm-,nrmf-,mkr=9,srp-,qnq-,jbf-,cjbvjf=6,jxml=3,nsmmn-,srpp=1,lbg-,srhq-,jbf-,lv=9,znq-,znq=8,mgkc=1,zzc=5,kbvs=3,qhbk-,rxr-,rhstqx-,dlflk-,ghm=1,gr=3,vcd=2,dcfs-,tdlh=1,dqvh-,bf=1,kpmr-,zm-,zv=6,mkr-,lcc-,nhq-,tckh-,bcd=2,fqfq=6,srp=5,tzb-,hrj-,ptsvb=4,xrh=7,qh=2,ztv=5,jvld=1,fb-,zk=6,lp=8,bbd-,hfck-,jxv=4,xls-,ln-,fsks=1,ksf-,fb-,gs-,tcdnx-,fv-,cgth=8,lsv=6,qrsptd=7,jvsgmg=2,svh-,jpxzcb=9,xss=3,bgb=6,ddmp-,cgth=7,mmzp-,cqcks-,skpvm=9,zq-,hpm=4,ckc=7,sgdm=6,zv=5,lnd=9,rp-,cgth=4,dr-,cs-,dbk=3,lqfb-,lqfb=3,ptd-,ks=1,rvf-,lkr-,fbzp=7,ckdx-,xp=8,fnd-,fvqp=4,gv-,bml-,pdstc=8,qkb-,tvk=6,qhbk-,mmdmrf-,gmb-,mvt=2,fkhh=4,pzvz-,sq=1,fvqp-,jlgb-,rpdbc-,zh-,kthbhp=2,qk=7,jvvt=4,kmp-,pzvz=6,bc-,sc=6,mgkc=7,jp=8,jq=3,kpjg-,mtlb-,gv=5,fqfq-,gb=5,kmp-,dhj=2,nxhr=4,pg=3,dcfs=4,sm-,trf-,hm=1,tgc=7,kr-,hbp=9,rpml-,txcfv-,czc=8,hhbm-,bl=6,tzb=6,bkf-,znq=9,dqp-,srp-,rp-,vf-,dzx=7,jbg-,pz-,pl=5,ncgv-,zzc-,kbvs-,vfz-,rx=7,gxn-,fqfq=4,qdczs=1,ln=3,kgs-,sc=4,ntr=4,cbrkq=6,szk-,dkr=4,zk=4,gmb-,qdczs=7,fdm-,dlflk-,tgc-,dkr-,gqm-,ck-,fsks-,rvf-,tk-,lh=2,lv=2,ds-,czc-,cssvp=5,dgnq-,fv=7,glz-,kjhbbv-,zjb-,pvsvg-,xbg-,jnvc-,jnvc=2,rd=9,mjd=4,sc-,ccrk-,rqz-,jxv=5,qhbk-,vz-,xqrbf=6,vmjvdd-,hrgm-,kxh=9,brt-,nczs=8,dbqh=5,fqqg-,bdx-,fqfq-,cgth=4,ngzh=1,mgkc-,bdx=6,dk-,vmjvdd=8,bggd=3,jbg=5,rl-,tdlh=8,sk=6,jxv-,tmj-,crzk=1,vv-,mpb=3,qmmn-,hdr-,rbg=6,dbqh-,zm=4,bz=8,dnq-,tnpm=4,qdczs=2,xsbrcq=9,pvsvg-,zvpf-,hhx-,jvvt=1,st=2,rhstqx=8,gd=6,dzx=5,jmb=3,mpb=7,fgl-,cf-,kbm=5,tdlh-,cqm-,nrq=6,tt-,dq-,pj-,nrq=6,hz-,qk=2,jxznrg=1,hz=8,dtfc=3,tvk-,vnd-,pvbm=7,qfmd=8,qk-,cqcks=2,jsvs=8,tzb=4,xbg=4,jmb=3,cqq=5,kgf=8,gs-,xgf=4,tx=7,drqml-,vv-,jsvs-,dhj=8,mqm=3,fgl-,qrsptd-,ps=9,bjnp-,mc=1,crkv-,dqvh=1,mdgl-,bs=3,rqz=7,sm=6,vx=3,mfp=2,qrsptd=7,tk=8,cssvp-,ch-,jzkkr-,jxv=7,cpxg-,cssvp-,srhq=2,sk-,kbc-,nxb-,srhq-,cssvp-,fqqg-,fv=8,gvqz=1,lkt-,rq-,fp=3,lh=2,cf=4,jvld=8,bbd=9,jbg-,kthbhp=6,zc-,mk=1,nq=6,tt-,jfm=4,pzvz-,xnqh=5,gs=1,rd=7,qnq-,bmt=8,zqdhd-,jpxzcb-,cgth=5,ps=9,dhj-,kh-,hdtvj-,hkhl=9,mtlb=8,mmzp-,plgkb=9,vvvfl=1,jp-,jpxzcb-,pk-,dlflk=6,mftr-,bm-,nxb-,bm-,hv=9,vs=2,dbqh-,xss-,gs=1,kxh=7,nsk=1,xbs=4,jb=3,dcfs=1,kgf=7,gg=1,mkr-,pk-,nsk-,mb-,hxd=3,vjfd=9,hdtvj=3,jvh-,cgg=7,rc=6,cbrkq-,pq=3,zgp=3,ntr=4,qfr=4,tnpm=7,drzs-,qvf-,zdf-,vhv=4,mgdcbs=9,slj-,qdczs-,sd-,rhstqx=2,gnl=8,dqj=2,dxx-,gvqz-,sct=8,dgnq-,rx-,fqtnq-,fr=8,pp-,rd=8,rj=4,jvsgt=5,hphz=7,bjt-,trf-,cl=8,hm=1,fqqg-,rxr-,ntt=5,xbcx-,qj-,jq=4,lcc=1,pplfsx-,pds-,tl-,vnr=2,lzzjgp=8,szk=2,rpdbc-,xbg=1,xgf-,jvvt=4,pp-,vcd=7,vzm=8,xls=7,rpdbc=2,pzvz-,bjnp-,trf-,nsk-,ccxz=3,gqm=7,hfpxsx=6,fv-,lzp-,vx-,gzv=2,jvh-,vf=6,dk=1,xbs-,fx-,rqz=1,rtq-,nhz=6,bggd-,xssfm-,nhpgr-,hn-,vhv-,hg=9,nxb-,hjvb-,dq-,ch=1,jqf-,hkhl-,thr-,cs-,svh-,fvqp=6,crzk=2,mvb-,mgkc=8,kkmsc=8,xfthj=3,nr=2,vs-,mf-,ctrv=3,lkr-,rjmcrf-,hz-,mj-,pplfsx-,kthbhp-,nv=3,tmd-,xfthj=4,dg-,ds-,mp-,ptsvb=7,fx=7,hkhl=2,ltcqqb-,fqtnq-,rxr-,dcfs=3,sddb-,txcfv-,jvsgmg=6,gqm-,gx=3,lvg=6,xrh-,km-,srpp=5,pz-,jm=2,tl=3,tl=3,st-,ft-,mdx=3,lkr=2,gg-,sq=4,fgl=1,rlhbg=7,nbl-,vg=5,srp-,xgf=1,zp=7,qrsptd=6,mmzp-,cbrkq=7,dd-,kpt=1,tckh=2,zs-,qckn-,rxr-,jlgb-,mftr-,qkb-,ztv-,ft=9,hg=3,nkvtl-,gstj-,mrl=2,nmr-,ds=1,fx=2,srp-,cgth=3,tgc=9,rlhbg=2,sp-,vmxr=4,gl-,sd-,hdtvj=5,lcc=4,rps=5,nxhr-,hdtvj=2,rps-,vs-,tx-,xftl=7,hfck-,xvh-,drzs=7,trf-,lbp=8,bs-,zs=1,hpm-,pz=4,sddb-,ngzh=3,gnl-,qbkp=7,zfhl=3,qq=5,lvg-,fzbc=1,hpm-,xthp=4,mfp-,lj=8,xqrbf-,zv=3,gstj-,xdr=1,hvcx-,kr=5,mgkc=7,mfp=7,mj=2,jvsgt-,fvqp=1,zq=7,ncgv-,glz=7,rj-,hllngz=3,vr=7,pm-,bgb=3,cqt-,csx=7,lzp=4,jvld=7,bl-,fr-,gb-,vp=7,fk-,pvbm-,ldcs-,jvsgt-,ckc-,hhffl=2,qqv-,gh=2,fkd=1,rl=8,mk=8,dch-,nhpgr=2,phvczf-,bml-,xthp=9,dqvh=9,slj=3,vnr-,vzr=4,rjmcrf-,hzq-,pk-,sk-,js=6,jxml-,qh-,gv=8,mc=7,tdv-,thr=8,blts=2,dbqh-,bml=9,lkr-,cfnhn-,mtlb=1,vz=2,hqv=7,lbp-,nhpgr=8,lkr=5,tkg-,fzbc=7,lcc=1,bdx-,xgf-,jmb=3,ptsvb-,fgl-,dsns=8,vmxr-,lt=2,gvqz-,hrgm=7,lbp-,mjz-,fx=6,tcdnx=7,dcfs=5,tnpm-,drzs-,qq-,tdv=8,mgkc=7,lzp-,csx=6,psrg=5,fr=3,ln=2,qbkp=9,csrb=4,rc=8,pvx=5,mhng=6,rxr=4,kmmc-,mf=5,clcvf=9,lkr=8,qckn-,ms=9,qmmn-,kgs=2,dr-,hv-,xfthj-,tcdnx-,zbb-,zjb=2,dbq-,szk-,qrsptd=6,fp-,zvpf=2,bl=7,qfmd=5,tzb=4,dzn=8,nxhr-,bggd-,ntr-,fj=3,pdstc-,jlgb-,tmd-,plgkb-,nn-,jvsgmg=5,pq=2,gfkzd=3,hrgm-,qvf-,tt-,mpb-,vhv=3,nzrql=8,rlhbg=9,vr=2,dhj=6,kh-,pz-,vcd-,ck-,vvvfl-,jjvnr-,fn-,fmj=1,dr-,tz=8,qbkp=5,psrg=6,czf-,pplfsx-,fx=5,bml-,lkt-,gl=5,ppr-,bc-,lbv-,glz=4,gr-,zv-,fj=1,bl-,sqs-,tmj-,xgf=4,xsbrcq=3,gx-,vlgp=3,gx-,clc-,hv-,dq-,ncgv-,znnz-,pl-,dq-,vf=9,kpmr=4,vjfd=7,ms=2,bm=4,sd=3,hv-,dqvh-,vx-,ptd-,ms-,shx=2,pqm-,kbvs=8,mglgk=2,cgth=4,bn=2,fzbc=4,mb-,tzb=9,jbg=6,lv-,pkml-,rxr-,xsbrcq=1,bdx-,czn-,fqtnq-,nzm-,znq-,dtfc=7,vr-,jp-,xvh-,tkg-,jj-,tcdnx=7,mrl=4,lh=8,ft-,rtq-,mgkc-,cp=5,vfz-,crkv=1,xp=5,kmp=1,plgkb=9,mvb=1,srp-,vv-,hfpxsx=7,dbq=2,nhz=4,tkg- \ No newline at end of file diff --git a/2023/15/part1.py b/2023/15/part1.py new file mode 100644 index 0000000..89dde07 --- /dev/null +++ b/2023/15/part1.py @@ -0,0 +1,19 @@ + +content = "" + +for line in open("./input2"): + content += line.strip() + +values = [] +for part in line.split(","): + currentValue = 0 + for letter in part: + asciiValue = ord(letter) + currentValue += asciiValue + currentValue *= 17 + currentValue %= 256 + + values.append(currentValue) + +print(values) +print(sum(values)) \ No newline at end of file diff --git a/2023/15/part2.py b/2023/15/part2.py new file mode 100644 index 0000000..8958f58 --- /dev/null +++ b/2023/15/part2.py @@ -0,0 +1,43 @@ +import re + +content = "" + +for line in open("./input2"): + content += line.strip() + +boxes = [] +for i in range(256): + boxes.append([]) +# print(boxes) +for part in line.split(","): + currentValue = 0 + key, value = re.split(r"=|-", part) + for letter in part: + if letter == "=": + # find if key is in boxes[currentValue]. Boxes is a list of tuples with (key, value) + # if it is, replace it + # if it is not, append it + for i in range(len(boxes[currentValue])): + if boxes[currentValue][i][0] == key: + boxes[currentValue][i] = (key, value) + break + else: + boxes[currentValue].append((key, value)) + break + if letter == "-": + boxes[currentValue] = [x for x in boxes[currentValue] if x[0] != key] + break + asciiValue = ord(letter) + currentValue += asciiValue + currentValue *= 17 + currentValue %= 256 + # print(key, value) + # print(boxes) + +totalPower = 0 + +for i in range(len(boxes)): + for j in range(len(boxes[i])): + totalPower += int(boxes[i][j][1]) * (i + 1) * (j + 1) + +print(totalPower) \ No newline at end of file