From caced29a1fef5528a7e7a2ef9840f6bf4a8238ba Mon Sep 17 00:00:00 2001 From: Dominic Date: Wed, 13 Dec 2023 18:16:27 +0100 Subject: [PATCH] day 13 part 1 --- inputs/day13.txt | 1344 +++++++++++++++++++++++++++++++++++++++++++++- src/bin/day13.rs | 36 +- 2 files changed, 1353 insertions(+), 27 deletions(-) diff --git a/inputs/day13.txt b/inputs/day13.txt index 3b6b5cc..0e5bc1d 100644 --- a/inputs/day13.txt +++ b/inputs/day13.txt @@ -1,15 +1,1331 @@ -#.##..##. -..#.##.#. -##......# -##......# -..#.##.#. -..##..##. -#.#.##.#. +..##### +..#.... +..##### +##...#. +.#..... +.####.# +.####.# +##..... +##...#. +..##### +..#.... +..##### +..##### -#...##..# -#....#..# -..##..### -#####.##. -#####.##. -..##..### -#....#..# +....#.. +###.... +...#.## +###.... +....##. +##.#.## +..##.## +###.#.. +..#.### + +##...#####..# +.###..#.##..# +......#...... +##..###...... +..###.#...##. +..#..####.##. +....##...#..# +..#.##..##### +##...#.##.... +###..##..#..# +###..#.##.... + +##......... +##......... +.#.######.. +#.#...#.##. +.##..##.### +##...##.... +.#.##..#### +##.##.#.#.# +.##.###..#. +.#....#.... +#....#.#.## +..##..#.... +..##..##... + +##.#..#.. +####.##.. +###.###.# +...##.#.# +...#####. +..##..... +###.#..#. +..#.#.### +####...## +####...## +..#.#.### +###.#..#. +..#...... +...#####. +...##.#.# + +#...##...#.#... +#...##...#.##.. +..##..##..####. +##.####.##.#.## +##..##..####.## +.###..###...#.# +.#..##..#.###.# + +###..#... +.##.##.## +#.#####.. +.#.#.##.# +####...## +#.####### +#..####.# +#..####.# +#.####### +####...## +.#.#.##.# +#.#####.. +.##.##.## +###..#... +###..#..# + +##....##...#### +#.####.#..###.# +##.##.#######.# +##.##.##.##...# +#......#.....#. +...##...####### +#.#..#.###.#..# +#.#..#.#...###. +..#..#..#.#.#.. +.######.#.#..#. +###..########## +###..###..###.# +..#..#...#..... +..#..#...##.... +###..###..###.# + +.#.##.#.# +##.#..#.. +..##.#... +.##.##### +##.##.### +##.##.### +.##.##### +..##.#... +##.#..#.. +.#.##.#.# +...##.#.# + +##..... +..####. +..#.##. +.#.#### +##.#..# +.#.#..# +..##### +..#.##. +.###..# +.###..# +..#.##. + +..##..####..# +#######..#### +######....### +#.##.##..##.# +.####.####.## +.####..##..## +#.##.#....#.# +##..##....##. +#....######.# +.#..#..##..#. +..##..####..# +.####.####.## +#....#....#.. +#.##.##..##.# +#....#....#.. +##..########. +#######..#### + +#..###...#### +....#.#..#### +####.#.#..##. +#..##.#..#..# +#..####...##. +.....#...#..# +######.###..# +#..###.##.... +###..#.#.#..# + +..#...######. +..##..#.##.#. +.#.#..######. +#.#...#....#. +#..##...##... +#..##...##... +#.##..#....#. +.#.#..######. +..##..#.##.#. +..#...######. +..###.##..##. +..#.#.##..##. +.#.#.##.##.## +#..#..######. +..##.#......# +...###......# +...#.###..### + +..#.##.#.###.#.#. +..#.####.###.#.#. +#####......##.##. +###...#.#.#.....# +####..##.#####.#. +....#..#.#.#...## +#######.......##. + +.####.#..#. +.####.###.# +..##......# +#....####.# +......##### +.####..##.. +#....#.#... +#....###... +##..###.#.# +#.##.#...#. +#.##.#.#.#. +#....###.#. +##..###.### +#.#..###.#. +##..######. +#....#.###. +#....#.###. + +..#.##... +.#.#..#.# +#..#.#... +##.#..#.. +###.###.. +#.###.... +.#...#### +.#...#### +#.###.... +###.###.. +##.#..#.. + +.###....#.... +##..#..#..##. +..###.###.... +..##.#..##### +.##.#.#.#.##. +.#...#.##.#.. +##.#...#..... +.###..##.#### +.###..##.#### + +.#....#...#####.. +.######...#...... +.######...#...#.. +.#....#...#####.. +.##..##..###..#.# +#......##.....### +#..##..#..#.##.## +...##...#..####.. +##.##.###....#... +##....######....# +..####..#.##.###. + +.#..#.#..##..#. +#.##.#........# +.#..#...#..#... +#.##.###...#### +#....##..##..## +#.##.##.#..#.## +......##....##. + +###.#..#. +#####.#.. +####..#.# +####..#.# +#####.#.. +###.#..#. +..##.##.. +####..##. +..###.... +...##.### +...###.## +...#.##.# +.#..#.### +..#..#### +....###.# + +#.#....#### +#.#....#### +##....#.##. +.#.#.#..##. +.##..#..##. +..#..#..##. +#.#.######. +.#.#....... +..###..#..# +.####.#.##. +####.###..# +#...#.##### +#....#..... + +....###...#.##. +....###.#.#.##. +##...#..#...### +######........# +##....#.#.##..# +..#.######...#. +....#.#..####.. +######....###.. +##.#...#.###..# +####..#.#...#.# +##..#..#.#.#### +##.##.####.#..# +###..#.#.#..... + +.....#..##.##.. +.##.###.#####.. +.##.###..##..## +....##.##....#. +.##.##.##.#.### +....#.####.##.# +#..#.######..#. +#..#...###..#.# +#..#...###..#.# +#..#.######..#. +....#..###.##.# +.##.##.##.#.### +....##.##....#. + +#..#.#..#.#.. +....##..##... +####......### +...#......#.. +...#......#.. +####......### +....##..##... +#..#.#..#.#.. +.#.#......#.# +####..##..### +..###.##.###. +###.....#..## +#..##.##.##.. + +........#..#. +.#.##.#.####. +##....###..## +.#....#...... +...##...#..#. +#.####.###### +.####.#.####. +..#..#..####. +........#..#. + +.##..##...##...## +.##..##..####..## +########.####.### +##.##.###.##.###. +...##....#..#.... +########..##..### +#......###..###.. +..#..#..#....#..# +.######..####..## +.#.##.#........#. +###..###...#..### +.#.##.#..####..#. +##....##......##. + +#####...####. +##.#.######## +.#......####. +..##..##....# +##.#..#.#..#. +......##....# +###...#...... +###...#...... +......##....# +.#.#..#.#..#. +..##..##....# +.#......####. +##.#.######## + +#.#######.. +..####.#### +.....##.... +#.#..###.## +#.#.##.#... +##.##..#.## +##.##..#.#. +##.##..#.#. +##.##..#.## +#.#.##.#... +#.#..###.## +.....##.... +..####..### +#.#######.. +#####.#.### +.##.#.#...# +.##.#.#...# + +.###.###.####.# +......###.##.## +###.##....#.... +....#..###..### +#.#.#####....## +.....#.#..##..# +####.#.#......# +#.####...#..#.. +#.####...#..#.. +####.#.#......# +.....#.#..##..# + +...##..####..## +...##..####..## +###.#.#....#.#. +..###..####..## +..##.#.####.#.# +##..#.#.##.#.#. +.#...#..##..#.. +##..#..#..#..#. +.###...#..#...# +#...##.#..#.##. +.##.##......##. +.##.#.#.##.#.#. +....##.#.##.##. +...##.######.## +.....#......#.. + +#....#.## +...###### +..###...# +...##.#.. +.#.###### +.#.###### +...##.#.. + +..##.#......#.##. +##.....#..#.....# +..###.##..##.###. +##..###.##.###..# +..####.#..#.####. +..#..#..##..#..#. +..#..##....##..#. +#######....###### +#####.#####..#### +..###..####..###. +##...###..###...# +..#.##......##.#. +##.###..##..###.# + +......#..#..#..#. +.#..#.#........#. +.####..###..###.. +#.##......##..... +..##..##..##..##. +#....##.######.## +#.##.####.##.#### +#######..#..#..## +######..#.##.#..# + +.####..## +#..#.##.# +#.##.##.# +.####..## +#..#....# +.#.#....# +..#.####. +...#.##.# +#.#.#..#. + +......#..#.#....# +#....####..##..## +######..###..##.. +#....#.#...###### +.####.#.##....... +######...##.####. +#.##.###.##.##.#. + +...#####..### +..###..####.. +###.....##... +.#..#...##... +##.....#..#.. +#......#..#.. +.#.##..####.. +#...####..### +.#####.####.# +.....######## +#......#..#.. +........##... +#.#####....## +.##.######### +#.###...##... + +#.#.....#....#... +##..#.#..#..##.#. +..#...##########. +..##.#.#.#..#.#.# +#####.#.######.#. +#####.#.######.#. +..##.#.#.#..#.#.# +..#...##########. +##..#.#..#..##.#. + +.#.###.###.##..## +.#.####..#.###### +##..#####........ +.##.#.###..##..## +###.#.####..#..## +.#...#.##.##.##.# +..#...#...##.##.# +###...####..#..#. +##.#####...##..## +#..####..######## +..#.###..##.####. +.##..#.#.##.#..#. +.###.###.#.##..## +.###.###.#.##..## +.##..#.#.##.#..#. + +#..#.##.#..#.#. +.#.#.##.#.#.#.# +#..######..#..# +##..####..##.## +.#.#....#.#.#.. +.#.#....#.#.#.. +##..####..##.## +#..######..#..# +.#.#.##.#.#.#.# +#..#.##.#..#.#. +#..######..#.#. +............##. +.#.#....###.##. +##........##..# +.####..####..## +##..####..##..# +#...####...#... + +###.#.. +...#.## +...#.## +#####.. +###..#. +####... +###.#.. +###.... +###.### +..#.#.. +....##. +###.### +..#.##. + +.#..#.#.##.####.# +.#.....#.#......# +...###..#..####.. +...###..#..####.. +.#.....#.#......# +.#..#.#.##.####.# +#.####...######## +.#.#.##..##.##.## +.####..###..##..# +#...############# +#.#..#..####..### +.#...##..#..##..# +.####...#........ +..#.#..##..#..#.. +###...########.## +.#.#.##.###....## +..##.#.###.####.# + +...#.#.#...##...# +.#.#.#..##.##.##. +##.......#....#.. +..#.#.....####... +..#.#.###..##..## +###...#.########. +..#.#....#....#.. +####.##.##....##. +##.##.#....##.... +####.....######.. +...#..##.#.##.#.# +..#..#..###..###. +...###.....##.... +#####..########## +...#.##.#.#..#.#. +###.#...########. +...##.#.###..###. + +#..##..#... +####..#.### +....###..#. +####..#...# +......##.## +.##.##.#..# +.##.##.#..# +......##.## +####.##...# +....###..#. +####..#.### + +..##.#....#.##. +..###..##..###. +##............# +......####....# +##....#..#....# +..#.##....##.#. +..#..##..##..#. +###.#.#..#.#.## +##............# + +....###...###.# +.###.#.....##.# +###.#.#....#..# +##.......###### +#####...#.###.# +##...#########. +###.###.#.#.... +###.###.#.#.... +##...#########. +#####...#.###.# +##.......###### + +####.##...#.. +.#.....##.#.# +....#.#....#. +..#..#..###.. +....####..### +..####..##... +..####..##... + +..##.######.##. +######.##.##### +##..#.####.#..# +.#..##.##.##..# +#.....####..... +#.............. +#....##..##.... +.####......#### +..#..#.##.#..#. +#.##........##. +.....#....#.... + +...####.....# +####..####... +#..#..#..#..# +#..#..#..###. +....##......# +.##.##.##...# +.##.##.##.#.. +....##....##. +####..#####.# +.##.##.##.#.. +#..#..#..###. + +.#..#..#.###.## +....#...##...## +#....##.#...### +#.##.#...#.#.## +#.##.#..#...### +#.##.#.....#### +.#..#...#.#.### +..##...##.###.. +#.##.##.#...#.. +#....###...##.. +.........####.. +#######.##.#.## +##..###.#...#.. + +#.#.###..##.# +.....#.....## +..#..#.....## +#.#.###..##.# +##########... +#.#.###.###.. +.####..#####. +#....#####... +#....#####... +.####..#####. +#.#.###.###.. +##########... +#.#.###..##.# + +.##..## +#..###. +.##...# +####... +.##..#. +.##.#.. +####... +#..#.#. +.....#. +....#.. +....#.# +#..#... +.##..#. +.##..#. +#..##.. + +##.....#..#.. +..####......# +###....####.. +##.#...#..#.. +##.####....## +..####......# +#######..#.## +##....#....#. +..#.####..### +##.##.######. +#####.#....#. + +.##...# +.##.##. +#..#.#. +....##. +####.## +####.## +#..#### +#..#### +####.## +####.## +....##. +#..#... +.##.##. +.##...# +....##. + +..##..###..## +######..#..#. +#.##.#..#..#. +##..##.#.##.# +#.##.###.##.. +.####..#.##.# +##..##.#....# + +..........##..... +.#..#.#.######.#. +##..###.#....#.## +#.##.#..........# +######..######..# +#....#....##....# +##..###.##..##### +#.##.###..##..### +.####..#..##..#.. +.####...##..##... +#######...##...## +#....#.#.#..#.#.# +.#..#.#..#..#..#. +......#.######.#. +.#..#..#..##..#.. +#.##.#.########.# +.####..#.#..#.#.. + +........#..##.. +#.#.....####### +.#####.######## +...##......##.. +..#..#.#.###### +#..#.#.###.##.# +.#.#.#...##..## +........#..##.. +.##.#####...... + +#####....######## +....#..##...##... +##..#.##......... +...###...###..### +....##..##......# +...#.#..#..#..#.. +...###..###....## +...#.####.#....#. +######.##........ +..#.##.#.#..##..# +###....##..####.. +#.##.#####......# +##.#####..#....#. + +...##.. +###..## +###..## +..#..## +###..## +#...... +###..## +#...... +.#....# +.#.##.# +.#.##.# +.#....# +#...... +###..## +#...... + +#..#..#..#. +..##...##.. +.####..##.. +.####..##.. +...#...##.. +#..#..#..#. +....##....# +..###..##.. +.##...#..#. +.##.#...... +.##..#....# +#....#....# +.####.#..#. + +#...... +##...## +##...## +#.#.... +.###### +..###.. +.###... +.###### +.###### +#####.. +.....## +###.### +###.### +#..##.. +#..#.## +...#### +.###### + +#.###.##. +##..#.##. +##.##.#.. +.....##.. +####.#.## +#....#### +#..#.#### +####.#.## +.....##.. +##.##.#.. +##..#.##. +#.###.##. +#.###.##. + +...######...#.# +..########....# +####.##.####..# +#.###..###.###. +#.#.####.#.##.. +#..#.##.#..#### +.#.#....#.#..#. +#..#.##.#..#.## +.###.##.###.#.. +....#..#....### +.#..####..#..#. +.#..##.#..#.### +#.##....##.##.. +#...####...##.# +.#.######.#.##. +.#.######.#.##. +#...####...##.# + +...#.#...#..#.. +...#.#...#..#.. +##.#####..##.## +##.....####..#. +#....#.#.#.###. +##.#.####...### +#######.###.### +...###.#..###.# +..#.#.###..##.# +..#.#.###..##.# +...###.#..###.# +#######.###.### +##.#.###....### +#....#.#.#.###. +##.....####..#. +##.#####..##.## +...#.#...#..#.. + +##..####...#. +####..##.#..# +##..##..##..# +##.....#.##.. +###....##.##. +..##....#..#. +....##.####.. +##.##..#..#.# +##.##.....#.# +....##.####.. +..##....#..#. +###....##.##. +##.....#.##.. +##..##..##..# +####..##.#..# +##..####...#. +##......##... + +.#.#.#.#... +###.####... +###.####..# +###.####..# +###.####... +.#.#.#.#... +..#..##.### +.###.....## +..####..#.. +...#..##### +..#.#.##..# +..##.....#. +..##.....#. +..#.#.##..# +...#..##### +..####..#.. +.###..#..## + +..#...#..#...#. +###...####...## +##.#...##...#.# +##...######..## +###...####...## +..#.###..###.#. +...#.#....#.#.. +##.###.##.###.# +..#..........#. +##.##......##.# +.....#....#.... +####.##..##.### +##..#.####.#..# + +...#### +..###.. +.#.#..# +......# +..#.#.# +..#.#.# +......# +.#.#..# +..###.. +...#### +#.####. +#..###. +...#### +..###.. +.#.#..# +......# +..#.#.# + +....###......#. +....###.....##. +##..##.##..##.. +#..####....##.. +##.#....######. +..##.###.#..... +.#####.#...#... +##.#...#.#...#. +..#..##.###.... +..#.#..#.#.#..# +#####.###..#.#. +#####.###..#.#. +..#.#..#.#.#..# +..#..##.###.... +##.#...#.#...#. +.#####.#...#... +..##.###.#..... + +..#.......##. +##.#.#....... +####.##...... +.###..##..... +.#####.##.##. +..###...#.... +.##..##...##. +.##..##...##. +..###...#.... +.###.#.##.##. +.###..##..... +####.##...... +##.#.#....... +..#.......##. +#####.#...... +.##.###...##. +#.#.#.##.#..# + +.##.##### +.##..##.# +#..#...#. +.##.....# +#..#.#.## +#..#.#.## +.##..#..# + +#..#..###.# +#..#..###.# +..#..#.###. +##...##.... +##.####..#. +##.####..#. +##...##.... +..#..#.###. +...#..###.# + +###...##..###.. +..###.##.#.#### +...####.#....## +...####.#....## +..###.##.#.#### +###...##..###.. +##.##.##...##.. +#..##.###..##.. +.#...#..#.###.. +#.####..#.##.## +#..###..#####.# + +##..##. +##..##. +..##... +#.##.#. +##...#. +.####.# +..##..# +..##... +#....## +##..### +#....#. + +.####..##.#.#.... +#.##.#..######### +..##...#..#..#### +......#..##..#..# +#....#.####...... +.####.#.##..#.... +......#.#.##....# +##..##..###.##..# +##..###.#.###.... +#######..#..#.... +.####......#.#..# + +#.###..#....##### +#.##..#.##..#...# +#.##.##.##..#...# +#.###..#....##### +#.###..#....##### +#.##.##.##..#...# +#.##..#.##..#...# +#.###..#....##### +##...###.#..##.#. +#.#####..###...## +###.##..#..#..... +..........#.##.#. +.####..##..####.. +#.###....####.### +...###..##....##. + +#.##..# +###..#. +#..#..# +.##.##. +#.##..# +#.##..# +.##.##. + +...#.#..... +###.#.#..#. +##..####### +##.#.###### +.##..#.##.# +.##..#.##.# +##.#.###### + +....##......# +##########.#. +.##.##.##.#.# +##########... +.#..##..#.##. +.##....##..#. +....##....##. +.##.##.##.#.# +.##.##.##.##. +#..#..#..#.## +....##......# + +.##.#..#.###.##.. +..#..##..#.###### +.....#.#........# +.....#.#........# +..#..##..#.###### +.##.#..#.###.##.. +.###.##.##...#..# +#.#.##.#.#.#.#.## +#..##.#..###.#### +.......#.#.###### +.......#.#.###### +#..##.#..###.#### +#.#.##.#.#.#.#.## +.######.##...#..# +.##.#..#.###.##.. + +#.#.####.#.#...## +..#.#..#.#...#..# +..#.#..#.#...#..# +#.#.####.#.#...## +..#..##..#..#..## +#....##....##...# +##..#..#..##..#.. +....####.....#.## +#..........#...## +##........##..### +..######.#..####. +.#.##..##.#...### +.#.#....#.#...#.# + +###.##.#..#.# +####.#......# +###.#.#....#. +##....#....#. +##.##...##... +###....####.. +..###..#..#.. +##.##........ +...########.# + +....##. +###.##. +###.##. +....##. +#.#..#. +##.#..# +#...... +....##. +#...##. +##..... +#..#### + +..##.#.#..#.# +#####.#.##.#. +...#.###..### +#..#.###..### +#####.#.##.#. +..##.#.#..#.# +##.....####.. +.##.#.#.##.#. +#..##..####.. +.#..##..##..# +#...#.##..##. + +#.#.###..##.#.... +.###..##...##.##. +#.###...#.....### +..##.#.#...##..#. +..##.#.#...##..#. +#.###...#.....### +.###..##...##.##. +#.#.###..##.#.... +.##..##.#..#.#..# +##...#######.#### +.#...##.##..##..# +.#..###.##..##..# +##...#######.#### +.##..##.#..#.#..# +#.#.###..##.#.... +.###..##...##.##. +#.###...#.....### + +##..#.####.#. +.#######.##.. +.#######.##.. +##..#.####.#. +#####.##.#### +.##...####### +##.##...##.## +...##..##..#. +...##..##..#. +##.##...##.## +.##....###### + +.#.##.##... +##.#.#....# +.#.#.#....# +.#.#.#....# +##.#.#....# +.#.##.##... +#####..#.## +..#.##...#. +..#...##.#. +..#...#.##. +...####.### +.#..###..#. +..##..####. +....##..#.. +.....##.#.# +.....##.#.# +....##.##.. + +..#.#....##.. +..###....##.. +######.#....# +......#.####. +.#####...##.. +...#...#....# +.####........ + +...#...#..#..###. +###....##.#.#..#. +###....##.#.#..#. +...#...#..#..###. +...###.#.......## +...#..######...## +###....###..#..## +##..#.#####.##.## +##.#....#.#..#... +..#..#######.#### +...#.#.##...##.## +..#...#.#....#..# +..#..#..#.#.#.... +#####...#..#.#### +#.#..##..##....## + +##..#..#..# +.####.#...# +.####.#...# +##..#.....# +..##....#.. +##.#.##.### +.####.....# +.####.....# +##.#.##.### + +..#.#..#.#....# +.####..####..## +.#..####..#..#. +##.#.##.#.####. +.#.#.##.#.#.##. +....#..#....### +....#..#....### +.#.#.##.#.#.##. +##.#.##.#.##### + +.#.###... +####.#### +.##...### +....###.. +##...#.## +#.##.#### +#...#..## +.###.##.. +.###..#.. + +.....#..####..# +.##..########## +.###.########## +.....#..####..# +#.#...###..###. +.##...##.##.##. +#..##..##..##.. +#..##..######.. +.####.#.#..#.#. +#..###.##..##.# +...#####.##.### +.#.#..##....##. +#.##.####..#### +#.#...#.####.#. +#.##.....##.... + +..#.##.#...##.# +#.#....#.###.## +..##..##...#.#. +.#.#..#.#....## +..#....#..##.## +####..######.#. +####..######.#. +..#....#..##.## +.#.#..#.#.....# + +....###..##..## +.....#........# +#.##.#.##..##.# +.#.##....##.... +####.....##.... +#....####..#### +......###..###. +......###..###. +##...####..#### + +.####..#.#. +..##..#.#.. +.......#..# +#.##.##.### +#######.##. +######..#.. +......#..## +#.##.###..# +.####..#.## +######..##. +#######.#.. +#######.#.. +######...#. +.####..#.## +#.##.###..# + +###.###..#. +.##........ +#.#####.... +###.#..#.## +##..##.###. +##..##.##.. +###.#..#.## +###.#..#.## +##..##.##.. +##..##.###. +###.#..#.## + +##....###.. +......#.#.. +..#..##.### +....#.##### +#..####..## +.###.####.. +..#...#.### +#.##...#### +####...#### + +.##..#.#.######## +######..#.##...#. +....######..#.... +###.###..##..#.## +##.#..#..#.##..## +.##.###.####.#..# +.##.###.####.#..# +##.#..#..#.##..## +###.###..##..#### +....######..#.... +######..#.##...#. +.##..#.#.######## +.##..#.#.######## +######..#.##...#. +....######..#.... + +.....## +###.### +###.### +.....## +.#.#... +##..##. +..##### +######. +##.#.#. +....#.. +...#..# + +..#..#..##..#..#. +.######.#.....##. +###..###..##....# +#.#..#.##.#...### +#.#..#.##.#...### +###..###..##....# +.######.#.....##. +..#..#..##..#..## +.#....#.###.##### +###..###.#..##..# +#.####.##..##.... +###..#####.##...# +..####.....#####. +.#....#..#.#.##.. +.######.#..#.#.#. diff --git a/src/bin/day13.rs b/src/bin/day13.rs index abb14d1..6f2a434 100644 --- a/src/bin/day13.rs +++ b/src/bin/day13.rs @@ -1,8 +1,8 @@ +// #![allow(clippy::never_loop)] #![forbid(elided_lifetimes_in_paths, unsafe_code)] use aoc23::read; -use chumsky::{prelude::*, text::int}; -use rayon::iter::{IntoParallelRefIterator as _, ParallelIterator as _}; +use chumsky::prelude::*; #[derive(Clone, Copy, Debug, Eq, PartialEq)] enum Cell { @@ -48,35 +48,45 @@ fn main() -> anyhow::Result<()> { let mut rows = Vec::new(); let mut cols = Vec::new(); - for Pattern { grid } in &patterns { - 'i: for i in 1 .. grid.len() - 1 { + for (pidx, Pattern { grid }) in patterns.iter().enumerate() { + eprintln!("Pattern {pidx}"); + 'i: for i in 1 .. grid.len() { for j in 0 .. i.min(grid.len() - i) { - if grid[i - j - 1] != grid[i + j + 1] { - eprintln!("discarding cut {i} due to rows {}/{}", i - j - 1, i + j); + if grid[i - j - 1] != grid[i + j] { + // eprintln!("discarding cut {i} due to rows {}/{}", i - j - 1, i + j); continue 'i; } } + println!("mirroring at row {i}"); rows.push(i); } - println!("rows: {rows:?}"); + // println!("rows: {rows:?}"); - 'i: for i in 1 .. grid[0].len() - 1 { + 'i: for i in 1 .. grid[0].len() { for j in 0 .. i.min(grid[0].len() - i) { - for k in 0 .. grid.len() { - if grid[k][i - j - 1] != grid[k][i + j] { - eprintln!("discarding cut {i} due to cols {}/{}", i - j - 1, i + j); + for row in grid { + if row[i - j - 1] != row[i + j] { + // eprintln!( + // "discarding cut {i} due to cols {}/{}", + // i - j - 1, + // i + j + // ); continue 'i; } } } + println!("mirroring at col {i}"); cols.push(i); } - println!("cols: {cols:?}"); + // println!("cols: {cols:?}"); + + // break; } + // 20464 is too low println!( "{}", - rows.iter().sum::() + 100 * cols.iter().sum::() + rows.iter().sum::() * 100 + cols.iter().sum::() ); Ok(())