From 5f7666ee13fc6f70c7f2792825a687bb18a34001 Mon Sep 17 00:00:00 2001 From: Steven Le Rouzic Date: Wed, 25 Dec 2024 15:55:31 +0100 Subject: Day 25, no part 2 lmao --- day25/data.txt | 3999 +++++++++++++++++++++++++++++++++++++++++++++++++++++ day25/example.txt | 39 + day25/go.mod | 3 + day25/main.go | 64 + go.work | 1 + 5 files changed, 4106 insertions(+) create mode 100644 day25/data.txt create mode 100644 day25/example.txt create mode 100644 day25/go.mod create mode 100644 day25/main.go diff --git a/day25/data.txt b/day25/data.txt new file mode 100644 index 0000000..cb714bd --- /dev/null +++ b/day25/data.txt @@ -0,0 +1,3999 @@ +##### +#.### +..### +...## +...## +...#. +..... + +##### +###.# +###.. +#.#.. +#.#.. +#.#.. +..... + +..... +...#. +#..#. +#.### +##### +##### +##### + +..... +..... +....# +..#.# +#.#.# +###.# +##### + +..... +...#. +.#.#. +.#.## +.#.## +.#.## +##### + +##### +##### +###.# +###.# +#.#.# +..#.. +..... + +..... +..... +..... +...#. +...#. +#.##. +##### + +..... +..... +#.#.. +####. +####. +##### +##### + +##### +####. +##.#. +.#.#. +...#. +...#. +..... + +##### +##### +##### +##.#. +##.#. +.#... +..... + +..... +...#. +..### +#.### +##### +##### +##### + +..... +.#..# +.##.# +###.# +##### +##### +##### + +##### +###.# +###.. +.##.. +..#.. +..... +..... + +##### +##.#. +##... +#.... +#.... +#.... +..... + +..... +....# +.#.## +.#.## +##.## +##### +##### + +..... +..... +....# +.#..# +.##.# +.#### +##### + +##### +##### +.##.# +..#.# +..#.. +..... +..... + +..... +..#.# +..#.# +..#.# +.#### +.#### +##### + +..... +..... +.#.#. +.#### +##### +##### +##### + +##### +#.### +#.#.# +#.... +..... +..... +..... + +..... +...#. +...#. +.#.#. +.#.#. +.#.## +##### + +..... +..... +#..#. +#.##. +#.### +#.### +##### + +..... +..... +..... +#.... +#.#.. +###.# +##### + +..... +..... +.#... +##..# +###.# +###.# +##### + +..... +..... +.#..# +.#.## +.#### +##### +##### + +##### +##### +#.##. +...#. +...#. +..... +..... + +..... +..... +#...# +#..## +#..## +#.### +##### + +..... +..#.. +#.#.. +#.#.# +#.#.# +##### +##### + +..... +#.... +##... +##.#. +##.## +##.## +##### + +..... +...#. +...#. +...#. +#.##. +##### +##### + +##### +####. +####. +##.#. +#.... +..... +..... + +##### +#.##. +#.#.. +#.#.. +#.#.. +..#.. +..... + +..... +..... +#..#. +##.#. +##### +##### +##### + +##### +##### +#.#.# +#...# +..... +..... +..... + +##### +####. +####. +#.##. +#.#.. +#.#.. +..... + +..... +..... +..#.. +#.#.. +###.# +###.# +##### + +..... +..#.. +..#.. +..#.. +..#.# +#.### +##### + +..... +....# +...## +..### +.#### +##### +##### + +##### +###.# +###.# +###.# +.#..# +....# +..... + +##### +#.### +#..#. +#.... +#.... +#.... +..... + +..... +..... +..... +..#.. +..#.. +#.##. +##### + +..... +..#.# +..#.# +..### +.#### +##### +##### + +..... +..#.# +..#.# +..### +#.### +#.### +##### + +##### +###.# +###.# +#.#.# +#...# +#...# +..... + +..... +.#... +.#... +.#..# +##.## +##.## +##### + +..... +..#.. +#.#.. +#.#.. +#.#.. +#.#.# +##### + +##### +##### +##.## +.#.## +...#. +..... +..... + +..... +..... +....# +....# +...## +.#.## +##### + +##### +#.#.# +#.#.. +#.#.. +#.#.. +..... +..... + +..... +..... +.#... +##... +##..# +###.# +##### + +..... +.#..# +.##.# +.##.# +.##.# +###.# +##### + +##### +##.## +##.## +##.## +#..## +#..#. +..... + +##### +#.### +#.### +#.### +#.#.# +....# +..... + +##### +.#### +.##.# +..#.# +..#.. +..... +..... + +##### +##### +##### +####. +#.#.. +#.... +..... + +..... +...#. +...#. +...## +#.### +##### +##### + +##### +##.## +##.#. +.#... +.#... +..... +..... + +##### +.#### +.#.## +.#.## +.#..# +..... +..... + +##### +#.### +...## +...## +...#. +...#. +..... + +##### +###.# +###.. +#.#.. +#.#.. +#.... +..... + +##### +##### +##### +#.### +..#.# +..#.# +..... + +##### +##.#. +#..#. +#.... +#.... +#.... +..... + +..... +.#... +.#..# +##..# +##.## +##.## +##### + +##### +.#.## +.#..# +....# +..... +..... +..... + +##### +#.### +#.#.# +#.#.# +..... +..... +..... + +##### +.#### +.#### +.#.## +.#.#. +.#.#. +..... + +##### +###.# +###.# +.#..# +..... +..... +..... + +..... +.#... +##... +##... +##..# +###.# +##### + +..... +...#. +...#. +..##. +.#### +##### +##### + +##### +####. +####. +##.#. +.#.#. +.#.#. +..... + +..... +..... +#.... +#.... +#.... +##.#. +##### + +..... +....# +.#..# +.##.# +.##.# +.#### +##### + +##### +##### +#.### +..### +..#.# +..... +..... + +##### +##### +##### +#.#.# +#.#.# +#.#.# +..... + +##### +##.#. +##... +##... +.#... +.#... +..... + +##### +##### +.#.## +.#.## +...#. +..... +..... + +##### +##.## +##.## +##.## +.#.#. +.#... +..... + +##### +##### +#.### +#.### +#.### +..#.# +..... + +..... +#.... +#.#.. +#.#.. +#.##. +####. +##### + +..... +..... +..... +.#... +.##.. +####. +##### + +..... +..... +..... +#..#. +#.##. +#.##. +##### + +##### +###.# +###.# +###.# +#.#.# +#.#.# +..... + +##### +.#### +.#### +.#.#. +.#.#. +..... +..... + +##### +#.### +#.##. +..#.. +..... +..... +..... + +..... +..#.# +..#.# +.##.# +.##.# +.#### +##### + +##### +##.## +##.## +#...# +..... +..... +..... + +##### +##.## +#..## +#...# +..... +..... +..... + +##### +##### +.###. +.#.#. +.#.#. +.#.#. +..... + +##### +##### +.#### +.###. +..#.. +..#.. +..... + +..... +..#.. +.##.. +.##.# +##### +##### +##### + +..... +...#. +...#. +...#. +..### +#.### +##### + +##### +#.### +#.### +#..## +#...# +#.... +..... + +##### +##### +##### +.#.## +...## +....# +..... + +##### +##.#. +.#.#. +...#. +...#. +..... +..... + +..... +#...# +#...# +##..# +###.# +##### +##### + +##### +.###. +..#.. +..#.. +..#.. +..... +..... + +##### +.###. +..##. +..#.. +..... +..... +..... + +..... +..... +..... +#.#.. +#.#.. +####. +##### + +##### +##.## +##.#. +.#.#. +...#. +..... +..... + +##### +##### +#.#.# +#.#.# +#.#.. +#.... +..... + +##### +##### +####. +####. +##.#. +#.... +..... + +..... +.#.#. +.#.#. +.#### +.#### +##### +##### + +..... +..... +...#. +#.##. +#.### +#.### +##### + +##### +##### +#.##. +..##. +..#.. +..#.. +..... + +..... +#.... +#.#.. +###.# +###.# +##### +##### + +##### +##.## +.#.## +.#.#. +.#.#. +.#... +..... + +..... +..... +#.... +#...# +##..# +##.## +##### + +..... +..... +..... +...#. +#..## +##.## +##### + +..... +.#... +.#.#. +.#.## +.#.## +.#### +##### + +..... +..... +..#.. +..#.. +#.##. +#.##. +##### + +..... +..... +.#... +.#..# +.#..# +###.# +##### + +..... +#...# +#..## +##.## +##.## +##### +##### + +##### +##### +####. +#.##. +#..#. +..... +..... + +..... +...#. +...## +#..## +#.### +#.### +##### + +##### +#.### +#.##. +..##. +..#.. +..#.. +..... + +..... +.#... +.##.. +.###. +####. +##### +##### + +..... +..... +....# +.#.## +.#### +.#### +##### + +##### +##### +##.## +#..#. +#.... +#.... +..... + +##### +##### +##.## +#..## +#...# +#.... +..... + +..... +..#.. +..#.. +.##.. +###.. +###.# +##### + +##### +#.### +#.### +..### +..#.# +..#.. +..... + +##### +##### +##### +.#### +..##. +..#.. +..... + +..... +.#.#. +.#.#. +####. +####. +####. +##### + +##### +##### +###.# +.#..# +.#... +.#... +..... + +..... +....# +..#.# +..### +#.### +#.### +##### + +..... +.#.#. +.###. +####. +##### +##### +##### + +##### +.###. +.##.. +.##.. +..#.. +..... +..... + +..... +..#.# +..#.# +.##.# +.##.# +##### +##### + +..... +.#... +.#..# +.#..# +.#.## +.#### +##### + +##### +##### +####. +####. +#.##. +...#. +..... + +##### +##### +##.## +.#.#. +.#.#. +.#.#. +..... + +##### +##### +##### +.#.## +...#. +..... +..... + +..... +.#... +.#.#. +.#.#. +.#.#. +.#.## +##### + +..... +.#... +.#... +.#.#. +##.#. +##### +##### + +..... +..#.. +..#.. +..#.. +#.##. +#.### +##### + +..... +....# +.#..# +##.## +##### +##### +##### + +##### +##### +###.# +#.#.. +#.... +#.... +..... + +..... +..#.. +..#.. +.##.# +.#### +.#### +##### + +..... +..#.. +..##. +#.##. +#.##. +####. +##### + +##### +####. +###.. +.##.. +..#.. +..#.. +..... + +..... +..... +.#.#. +.#### +.#### +##### +##### + +..... +....# +.#..# +.#..# +.#.## +##.## +##### + +##### +#.### +#.### +#..#. +..... +..... +..... + +..... +..... +#.#.# +#.#.# +##### +##### +##### + +##### +#.##. +#..#. +#..#. +#..#. +#..#. +..... + +##### +##.#. +#..#. +#..#. +#..#. +..... +..... + +##### +##### +##.## +.#.## +.#.#. +...#. +..... + +..... +.#.#. +.#.#. +.#.#. +##.#. +##.#. +##### + +..... +..... +..... +.#... +##.#. +##.## +##### + +..... +..... +.#... +.##.# +##### +##### +##### + +##### +##.## +.#.## +.#..# +....# +..... +..... + +..... +..... +....# +....# +.#.## +.#### +##### + +..... +...#. +.#.#. +.#.#. +.#.#. +##.## +##### + +..... +..#.. +..#.. +..#.. +.##.# +.#### +##### + +..... +..... +..#.. +.##.. +.###. +.###. +##### + +..... +..#.. +.###. +.###. +##### +##### +##### + +##### +##### +##### +.#### +..#.# +....# +..... + +..... +..#.# +#.#.# +###.# +###.# +###.# +##### + +##### +##### +###.# +#.#.. +#.#.. +..... +..... + +##### +##.## +##.## +#..## +#..#. +#.... +..... + +..... +#.... +#.#.. +#.#.. +###.. +###.# +##### + +##### +##.#. +##.#. +##.#. +#..#. +...#. +..... + +..... +....# +..#.# +..### +.#### +.#### +##### + +..... +#.... +##.#. +##.#. +##.## +##### +##### + +..... +.#... +.#.#. +.###. +##### +##### +##### + +..... +..... +..... +#.#.. +#.#.# +#.#.# +##### + +##### +.#.## +.#.## +.#.## +.#.## +.#.#. +..... + +..... +.#... +.#... +.#... +##.#. +####. +##### + +..... +..... +..... +.#... +.#... +##.#. +##### + +##### +#.### +..##. +..##. +..#.. +..... +..... + +##### +##.## +##.## +##.#. +##.#. +.#... +..... + +..... +..#.# +..### +..### +.#### +.#### +##### + +..... +..... +#.... +#...# +#.#.# +##### +##### + +##### +###.# +#.#.# +#.... +#.... +..... +..... + +..... +.#..# +##.## +##.## +##### +##### +##### + +##### +#.##. +..#.. +..... +..... +..... +..... + +..... +..... +.#..# +.#..# +.#..# +###.# +##### + +..... +.#... +.#..# +###.# +###.# +##### +##### + +##### +###.# +.##.# +.#..# +..... +..... +..... + +##### +#.### +#.##. +#.#.. +#.... +..... +..... + +..... +#.... +#..#. +##.#. +####. +####. +##### + +##### +##### +#.### +#.##. +..#.. +..#.. +..... + +##### +.#### +.#.#. +.#.#. +.#.#. +.#... +..... + +..... +.#.#. +.#.## +.#.## +.#.## +.#### +##### + +..... +.#... +.#... +.##.. +####. +####. +##### + +##### +##.## +#..## +#..## +#..#. +#..#. +..... + +##### +#.##. +#..#. +#.... +#.... +..... +..... + +##### +##### +.#.## +...## +....# +..... +..... + +..... +..... +....# +..#.# +.#### +##### +##### + +..... +.#... +##... +##... +##.#. +##.#. +##### + +##### +##### +.#### +.#### +.##.# +..#.# +..... + +..... +..#.. +..#.. +..#.# +..### +#.### +##### + +##### +.#### +..### +..#.# +..#.. +..#.. +..... + +..... +.#... +.#.#. +.#.#. +##.## +##### +##### + +##### +##### +####. +###.. +#.#.. +#.... +..... + +..... +....# +..#.# +#.#.# +#.#.# +###.# +##### + +..... +..... +.#... +.#... +##..# +###.# +##### + +..... +..... +...#. +.#.#. +.#### +.#### +##### + +..... +...#. +...#. +#.##. +#.##. +####. +##### + +##### +##.## +#..#. +#..#. +..... +..... +..... + +##### +##### +#.##. +..#.. +..... +..... +..... + +##### +##### +##.#. +#..#. +...#. +...#. +..... + +..... +#.... +##... +##.#. +##.## +##### +##### + +##### +#.### +#.##. +#.##. +#.##. +...#. +..... + +##### +##### +##### +##### +##.## +.#..# +..... + +..... +..... +#.... +##.#. +##.#. +####. +##### + +##### +##.## +##.#. +.#.#. +.#.#. +.#.#. +..... + +##### +###.# +###.# +.#..# +.#... +.#... +..... + +##### +##### +##### +.##.# +.##.# +.#..# +..... + +##### +###.# +###.. +#.#.. +..#.. +..#.. +..... + +##### +#.### +#..## +....# +....# +..... +..... + +..... +..... +...#. +#..#. +#.### +#.### +##### + +..... +.#..# +.##.# +.#### +.#### +.#### +##### + +##### +##.## +##.## +##..# +#...# +#.... +..... + +##### +##### +##.## +.#.## +...#. +...#. +..... + +..... +#.... +#.... +##..# +##.## +##.## +##### + +..... +..... +...#. +...#. +.#.#. +####. +##### + +##### +#.### +#.### +#.#.# +..#.. +..... +..... + +##### +.#.#. +...#. +...#. +...#. +..... +..... + +..... +.#..# +##..# +##..# +###.# +###.# +##### + +..... +...#. +...## +#..## +##.## +##.## +##### + +##### +####. +###.. +###.. +###.. +.#... +..... + +..... +..... +..... +...#. +#.##. +#.##. +##### + +##### +##### +##### +#.##. +..#.. +..... +..... + +##### +####. +##.#. +##... +##... +#.... +..... + +..... +....# +....# +..#.# +#.#.# +#.### +##### + +##### +###.# +###.# +#.#.. +..#.. +..... +..... + +##### +##### +##.## +##.## +##..# +.#..# +..... + +##### +#.### +#.##. +#..#. +#.... +..... +..... + +..... +.#... +##... +###.# +##### +##### +##### + +..... +..#.# +#.#.# +#.### +#.### +#.### +##### + +##### +#.##. +#.#.. +..... +..... +..... +..... + +..... +.#... +.##.. +.##.. +###.. +####. +##### + +..... +..#.. +#.#.. +#.#.. +###.# +##### +##### + +##### +##### +##### +#.### +#..#. +#.... +..... + +##### +#.### +#..## +...#. +..... +..... +..... + +..... +...#. +...#. +#.##. +####. +##### +##### + +##### +##### +##### +.###. +.#.#. +..... +..... + +..... +..... +....# +...## +.#.## +.#### +##### + +..... +..... +.#... +.#.#. +.###. +##### +##### + +..... +..#.# +..#.# +#.#.# +###.# +##### +##### + +..... +..... +..... +.#.#. +.#.#. +####. +##### + +..... +..... +..#.. +#.#.# +###.# +##### +##### + +##### +##### +#.### +#.##. +...#. +...#. +..... + +##### +.#### +.###. +.###. +.#.#. +.#... +..... + +##### +##### +#.### +#..## +....# +....# +..... + +##### +.##.# +..#.# +..#.. +..... +..... +..... + +..... +#.... +#.... +#.#.# +#.#.# +#.### +##### + +..... +..#.. +#.#.# +#.#.# +#.#.# +###.# +##### + +..... +..... +..... +..... +#.#.. +####. +##### + +##### +#.### +..##. +..##. +...#. +...#. +..... + +##### +##### +.###. +.###. +.###. +..#.. +..... + +..... +..... +.#... +.#.#. +.#.## +.#### +##### + +..... +..#.. +..#.. +#.##. +#.### +#.### +##### + +##### +###.# +#.#.# +#.#.# +..#.# +..#.# +..... + +..... +..... +..#.. +#.#.. +###.# +##### +##### + +..... +....# +..#.# +.##.# +###.# +###.# +##### + +##### +#.#.# +#.#.# +..#.# +..#.# +..... +..... + +##### +##### +.#### +.#.#. +.#.#. +.#... +..... + +##### +####. +##.#. +##... +##... +.#... +..... + +##### +###.# +##... +.#... +.#... +..... +..... + +##### +.#.## +.#.## +.#.## +...## +...#. +..... + +##### +##### +####. +####. +####. +#.#.. +..... + +..... +..... +..#.. +..#.# +#.#.# +#.#.# +##### + +##### +.#### +.#### +.###. +..#.. +..#.. +..... + +..... +#.#.. +#.##. +#.##. +##### +##### +##### + +..... +..... +..... +.#..# +##.## +##.## +##### + +..... +.#... +.#..# +##..# +##..# +##.## +##### + +##### +##### +.#### +.#### +..#.# +..... +..... + +..... +.#... +##... +###.. +###.# +###.# +##### + +##### +##.## +##.## +##.#. +##... +#.... +..... + +##### +##.#. +##.#. +#.... +#.... +..... +..... + +..... +.#.#. +.###. +.###. +.###. +.#### +##### + +..... +....# +....# +..#.# +.##.# +###.# +##### + +..... +..... +....# +.#.## +.#.## +##### +##### + +..... +.#.#. +##.#. +##.#. +####. +##### +##### + +..... +..... +#..#. +##.## +##.## +##.## +##### + +##### +##.## +##.## +##.## +##..# +.#... +..... + +..... +.#... +.##.# +.#### +.#### +##### +##### + +..... +..... +.#..# +.#..# +##.## +##.## +##### + +##### +##### +##### +#.### +..##. +...#. +..... + +..... +..#.. +..##. +..##. +.###. +.#### +##### + +..... +...#. +...#. +#.##. +#.### +#.### +##### + +..... +#.#.. +###.. +####. +####. +##### +##### + +##### +.#### +.##.# +.#..# +.#... +.#... +..... + +##### +##### +##.## +##.## +#..#. +..... +..... + +##### +##### +###.# +###.# +#.#.# +..... +..... + +##### +##### +#.### +#.### +#..## +....# +..... + +##### +.##.# +.##.# +..#.. +..... +..... +..... + +..... +..... +#.... +##... +##.#. +##### +##### + +..... +.#... +.#... +.#... +##.#. +##.## +##### + +##### +##### +#.### +..##. +..##. +...#. +..... + +##### +###.# +###.# +.##.# +..#.# +....# +..... + +##### +#.#.# +....# +....# +..... +..... +..... + +..... +....# +....# +#...# +#..## +##.## +##### + +##### +##### +####. +###.. +#.#.. +..... +..... + +##### +###.# +###.# +###.# +#.#.# +#.#.. +..... + +##### +##### +.##.# +..#.. +..#.. +..... +..... + +##### +#.### +#..## +...## +...## +....# +..... + +..... +..#.. +.##.. +.##.# +.#### +##### +##### + +..... +..... +#...# +#...# +#...# +##.## +##### + +..... +..#.. +..#.. +.###. +##### +##### +##### + +##### +##### +#.#.# +#.#.. +#.#.. +#.#.. +..... + +..... +.#... +.##.. +.##.. +.##.. +.###. +##### + +..... +..... +...#. +.#.## +.#.## +##.## +##### + +..... +...#. +.#.#. +.#.#. +.#.#. +##.#. +##### + +##### +#.### +#.##. +#.##. +#..#. +..... +..... + +..... +#.... +#...# +#.#.# +#.#.# +#.### +##### + +..... +..... +..... +.#.#. +.#.#. +.#### +##### + +..... +..... +.#... +.#... +.##.# +.#### +##### + +##### +##### +##.## +##.#. +##.#. +.#... +..... + +##### +##### +.###. +.###. +..#.. +..#.. +..... + +..... +...#. +.#.#. +.#.#. +.#.## +##.## +##### + +##### +####. +#.##. +..##. +..#.. +..... +..... + +##### +####. +#.#.. +#.#.. +#.#.. +..... +..... + +##### +#.### +..### +..### +..### +...#. +..... + +##### +##.## +.#.#. +.#.#. +...#. +...#. +..... + +..... +#...# +##.## +##.## +##### +##### +##### + +##### +#.#.# +#.#.. +..... +..... +..... +..... + +##### +##.## +.#.## +.#.## +.#..# +.#... +..... + +..... +.#... +.#..# +.##.# +.#### +.#### +##### + +##### +##### +##.## +#...# +..... +..... +..... + +..... +..#.. +..#.. +.##.. +.##.. +.##.# +##### + +..... +..... +.#... +.#... +.##.. +.###. +##### + +..... +..... +....# +#...# +#.#.# +#.### +##### + +##### +##### +###.# +#.#.# +#.#.# +#.... +..... + +##### +##### +.###. +.#.#. +.#.#. +.#... +..... + +..... +.#... +###.# +###.# +##### +##### +##### + +##### +###.# +.##.# +.##.# +.##.# +.#... +..... + +##### +#.#.# +#...# +#...# +#...# +#...# +..... + +..... +..... +..#.. +..#.# +#.#.# +###.# +##### + +##### +.#.#. +.#.#. +.#... +..... +..... +..... + +##### +#.### +#.### +#.##. +#.#.. +..... +..... + +..... +..#.# +.#### +.#### +.#### +.#### +##### + +..... +.#... +.##.. +.##.. +.##.. +####. +##### + +##### +###.# +#.#.# +#.#.# +#.#.# +..#.. +..... + +..... +.#... +.#... +.#.#. +.#.## +##### +##### + +##### +#.### +#.#.# +#.#.# +..#.# +..... +..... + +..... +#.#.. +#.#.. +####. +##### +##### +##### + +..... +.#... +.#..# +.#..# +.##.# +.##.# +##### + +##### +##### +#.### +#.##. +...#. +..... +..... + +##### +##.## +##.## +#..#. +#.... +..... +..... + +##### +.#### +..### +..##. +..#.. +..... +..... + +##### +##### +#.### +#.##. +#..#. +#.... +..... + +##### +.#.## +...## +...## +....# +..... +..... + +##### +##### +##.## +##..# +##..# +.#... +..... + +##### +##.## +##..# +##..# +#.... +#.... +..... + +##### +#.### +#.### +#..## +#..## +#...# +..... + +##### +####. +####. +#.#.. +#.... +#.... +..... + +##### +####. +##.#. +##.#. +#.... +#.... +..... + +##### +###.# +###.# +.##.# +.#..# +....# +..... + +..... +...#. +.#.#. +.#.#. +.###. +.###. +##### + +..... +..... +....# +#...# +#...# +##.## +##### + +##### +.#### +.#### +.###. +.#.#. +.#... +..... + +##### +#.##. +#.##. +#.##. +#.#.. +#.... +..... + +##### +####. +####. +#.#.. +#.#.. +..#.. +..... + +##### +##.## +##.## +.#..# +.#... +..... +..... + +##### +##### +####. +.##.. +.##.. +.#... +..... + +##### +.#.#. +.#.#. +.#... +.#... +.#... +..... + +##### +#.### +#.##. +#.##. +#..#. +...#. +..... + +..... +#.#.. +###.. +###.. +###.# +##### +##### + +##### +##.## +##.## +##.#. +.#.#. +...#. +..... + +##### +.#.## +.#.## +.#.## +.#.#. +.#... +..... + +..... +..... +....# +..#.# +..#.# +.#### +##### + +##### +##### +#.##. +#.##. +#.#.. +..#.. +..... + +..... +#.... +#...# +#.#.# +#.#.# +###.# +##### + +##### +##.## +##..# +##..# +.#..# +....# +..... + +..... +...#. +...#. +.#.## +.#.## +.#.## +##### + +##### +#.### +#.#.# +#.#.# +#.#.. +..... +..... + +##### +##### +##### +.#### +.#.## +....# +..... + +..... +.#... +##..# +##.## +##.## +##### +##### + +..... +....# +.#..# +.#..# +.#.## +.#.## +##### + +##### +#.#.# +#.#.# +#.#.# +..#.# +....# +..... + +##### +##### +.###. +.###. +.##.. +..#.. +..... + +##### +##.## +##.#. +##.#. +##.#. +.#.#. +..... + +..... +#...# +##..# +##.## +##.## +##### +##### + +##### +#.### +#.##. +#.##. +..#.. +..#.. +..... + +..... +#.... +#..#. +#..#. +#..#. +##.## +##### + +..... +..... +#...# +#.#.# +#.#.# +###.# +##### + +..... +..... +#...# +#.#.# +#.#.# +#.#.# +##### + +..... +....# +....# +....# +.#..# +###.# +##### + +##### +##### +###.# +###.. +.#... +..... +..... + +##### +##### +#.#.# +#.#.. +#.#.. +#.... +..... + +..... +...#. +...## +.#.## +.#.## +##.## +##### + +..... +....# +....# +...## +...## +#.### +##### + +..... +..... +.#... +.##.# +.##.# +.#### +##### + +##### +##### +##### +#.##. +#.##. +...#. +..... + +..... +....# +....# +#..## +##.## +##.## +##### + +..... +..... +.#... +##..# +###.# +##### +##### + +..... +..... +..... +....# +.#.## +##### +##### + +..... +.#... +###.. +###.. +###.. +###.# +##### + +..... +.#... +.#... +##... +##.#. +##### +##### + +##### +.#.## +...## +...## +...#. +...#. +..... + +..... +.#... +.#... +###.# +##### +##### +##### + +##### +.#.## +.#.## +.#..# +..... +..... +..... + +..... +#...# +#.#.# +#.#.# +#.#.# +#.### +##### + +..... +..... +..#.. +..##. +.###. +.#### +##### + +..... +..#.. +..#.. +..#.. +.##.# +##### +##### + +..... +..... +...#. +...#. +.#.#. +##.## +##### + +##### +#.### +#..## +#..## +#...# +....# +..... + +##### +####. +##.#. +##.#. +#..#. +...#. +..... + +##### +##### +###.# +###.# +.##.. +..#.. +..... + +..... +.#... +.#..# +.#..# +###.# +##### +##### + +..... +...#. +#..#. +#..#. +#.##. +#.### +##### + +..... +..... +..#.. +#.#.. +###.. +###.# +##### + +##### +##### +####. +####. +.#.#. +...#. +..... + +..... +.#... +.#..# +.#.## +##### +##### +##### + +##### +##.## +##.## +##.#. +#.... +#.... +..... + +##### +##### +.#.#. +...#. +..... +..... +..... + +..... +#.#.# +#.#.# +###.# +###.# +##### +##### + +..... +#.#.. +#.#.. +#.#.. +#.#.# +#.#.# +##### + +..... +.#.#. +.#.#. +.#.#. +##.#. +##### +##### + +..... +..#.. +..#.# +..#.# +#.#.# +#.#.# +##### + +..... +..... +#...# +##..# +##.## +##.## +##### + +##### +##### +##### +#.#.# +..#.# +....# +..... + +..... +...#. +.#.## +##### +##### +##### +##### + +..... +..... +...#. +.#.#. +.#.## +##.## +##### + +##### +##### +###.# +.##.. +.#... +.#... +..... + +##### +##### +##### +###.# +.#..# +....# +..... + +##### +#.### +..#.# +..#.# +....# +..... +..... + +##### +.#### +.#.#. +.#.#. +.#.#. +...#. +..... + +##### +.#### +.###. +..##. +...#. +..... +..... + +..... +..... +.#... +.#.#. +.#.#. +.#.#. +##### + +##### +###.# +###.. +.#... +.#... +.#... +..... + +##### +##### +##### +#.### +...## +....# +..... + +..... +..#.# +..#.# +..#.# +..#.# +#.#.# +##### + +..... +#.... +#.... +#.#.. +#.#.. +#.#.# +##### + +..... +.#..# +.#.## +##.## +##### +##### +##### + +##### +##### +##### +###.# +#.#.# +..#.. +..... + +..... +..#.. +..##. +.#### +.#### +.#### +##### + +..... +..... +....# +..#.# +..#.# +#.### +##### + +##### +.###. +.#.#. +.#.#. +.#.#. +..... +..... + +##### +##### +.#### +..#.# +....# +....# +..... + +..... +#.... +##... +##..# +##.## +##.## +##### + +##### +##### +#.### +#.#.# +#...# +....# +..... + +##### +#.### +...#. +..... +..... +..... +..... + +##### +##.## +#..## +#..## +...## +...#. +..... + +..... +..... +..#.. +..#.# +..### +.#### +##### + +##### +#.### +..### +..### +..#.# +..#.. +..... + +##### +####. +##.#. +#..#. +#..#. +#.... +..... + +..... +#..#. +##.#. +##.## +##### +##### +##### + +..... +..#.# +..#.# +#.### +#.### +##### +##### + +##### +###.# +###.# +###.# +.#... +.#... +..... + +##### +##.## +##..# +##... +#.... +#.... +..... + +..... +#...# +#.#.# +#.#.# +#.### +##### +##### + +..... +.#... +.#..# +.#..# +.#.## +##### +##### + +##### +###.# +###.# +###.# +.##.# +..#.. +..... + +##### +##### +##### +.#### +.#.## +.#.#. +..... + +..... +..... +..#.. +.##.# +.##.# +.#### +##### + +..... +#.... +#.#.# +#.### +#.### +#.### +##### + +..... +..... +#.#.. +#.#.. +#.##. +#.### +##### + +##### +#.### +..##. +...#. +..... +..... +..... + +##### +##### +##### +##### +###.# +.#..# +..... + +##### +.#### +..#.# +..#.# +..#.. +..#.. +..... + +##### +.#.## +.#.## +...#. +...#. +..... +..... + +..... +..... +....# +#..## +#.### +##### +##### + +..... +..#.# +..#.# +.##.# +.##.# +###.# +##### + +##### +#.### +#.#.# +#.... +#.... +..... +..... + +..... +....# +...## +.#.## +.#.## +##.## +##### + +..... +..... +..... +#.... +#...# +##.## +##### + +..... +...#. +.#.#. +.#.## +##.## +##### +##### + +..... +.#... +.#... +.##.. +.###. +##### +##### + +##### +###.# +#.#.# +....# +....# +....# +..... + +..... +.#..# +.#..# +.#.## +.#.## +##.## +##### + +##### +#.### +#.#.# +#.#.# +#.#.# +#.#.# +..... + +..... +..... +..... +#.... +##.#. +##.#. +##### + +##### +##### +###.# +#.#.. +#.#.. +..#.. +..... + +..... +...#. +...#. +#.##. +#.### +##### +##### + +##### +###.# +#.#.# +#.#.# +#.#.# +#.#.. +..... + +##### +.#### +.#.#. +.#.#. +.#... +.#... +..... + +##### +##### +##### +.#.#. +.#.#. +.#.#. +..... + +##### +##### +###.# +.#... +.#... +.#... +..... + +..... +...#. +...## +.#.## +.#.## +.#.## +##### + +..... +..#.. +#.#.. +#.##. +#.##. +##### +##### + +##### +##### +.###. +.##.. +.#... +..... +..... + +..... +..... +..... +...#. +.#.#. +##.## +##### + +..... +....# +.#..# +##.## +##.## +##### +##### + +..... +..#.. +.##.. +.###. +##### +##### +##### + +##### +##### +##### +.###. +.#.#. +.#... +..... + +##### +#.##. +#..#. +..... +..... +..... +..... + +..... +..#.. +.##.. +.##.. +.##.# +###.# +##### + +##### +####. +###.. +##... +#.... +#.... +..... + +##### +.#### +.##.# +.##.# +..#.# +..#.. +..... + +##### +##### +####. +#.#.. +#.... +..... +..... + +..... +#.... +#.#.. +#.#.# +#.#.# +##### +##### + +..... +..... +..#.. +..##. +#.##. +#.### +##### + +..... +..... +..#.# +..#.# +..#.# +#.### +##### + +..... +#.#.# +#.#.# +#.### +#.### +##### +##### + +##### +####. +#.##. +#..#. +#..#. +..... +..... + +..... +...#. +...#. +...#. +#..#. +##.#. +##### + +..... +.#... +.#... +.#.#. +##.## +##.## +##### + +##### +##### +.##.# +..#.# +....# +....# +..... + +..... +#..#. +##.## +##.## +##### +##### +##### + +..... +...#. +...#. +#..#. +##.#. +##.#. +##### + +##### +##### +##.#. +##.#. +.#.#. +.#.#. +..... + +..... +..... +..#.# +..#.# +#.#.# +###.# +##### + +..... +..... +#.... +#.#.# +#.#.# +##### +##### + +..... +..... +...#. +...#. +.#.#. +.#.#. +##### + +##### +###.# +###.# +##..# +#...# +..... +..... + +##### +####. +####. +.##.. +.##.. +..#.. +..... diff --git a/day25/example.txt b/day25/example.txt new file mode 100644 index 0000000..8e29855 --- /dev/null +++ b/day25/example.txt @@ -0,0 +1,39 @@ +##### +.#### +.#### +.#### +.#.#. +.#... +..... + +##### +##.## +.#.## +...## +...#. +...#. +..... + +..... +#.... +#.... +#...# +#.#.# +#.### +##### + +..... +..... +#.#.. +###.. +###.# +###.# +##### + +..... +..... +..... +#.... +#.#.. +#.#.# +##### diff --git a/day25/go.mod b/day25/go.mod new file mode 100644 index 0000000..ea5e3a9 --- /dev/null +++ b/day25/go.mod @@ -0,0 +1,3 @@ +module stevenlr.com/aoc2024/day25 + +go 1.23.3 diff --git a/day25/main.go b/day25/main.go new file mode 100644 index 0000000..907c397 --- /dev/null +++ b/day25/main.go @@ -0,0 +1,64 @@ +package main + +import ( + "bufio" + "fmt" + "os" +) + +func main() { + fmt.Println(part1(readData("example.txt")), 3) + fmt.Println(part1(readData("data.txt")), 3) +} + +type Data struct { + keys [][5]int + locks [][5]int +} + +func fits(k, l [5]int) bool { + for i := range k { + if k[i]+l[i] > 5 { + return false + } + } + return true +} + +func part1(data Data) (count int) { + for _, k := range data.keys { + for _, l := range data.locks { + if fits(k, l) { + count++ + } + } + } + return +} + +func readData(fileName string) (data Data) { + data = Data{} + fp, _ := os.Open(fileName) + scanner := bufio.NewScanner(fp) + + for scanner.Scan() { + isKey := scanner.Text()[0] == '.' + code := [5]int{0, 0, 0, 0, 0} + for i := 0; scanner.Scan() && i < 5; i++ { + line := scanner.Text() + for j := range 5 { + if line[j] == '#' { + code[j]++ + } + } + } + scanner.Scan() + if isKey { + data.keys = append(data.keys, code) + } else { + data.locks = append(data.locks, code) + } + } + + return +} diff --git a/go.work b/go.work index ccb55d7..8410e2f 100644 --- a/go.work +++ b/go.work @@ -17,6 +17,7 @@ use ( ./day22 ./day23 ./day24 + ./day25 ./day2 ./day3 ./day4 -- cgit