- commit
- d94a3b4129af946d8981c9031efee339de9454c0
- parent
- adfcef78c31a3f0ffecaefd93f503d266492d43e
- Author
- Tobias Bengfort <tobias.bengfort@posteo.de>
- Date
- 2024-12-21 10:22
2024-12-20
Diffstat
| A | 2024/20/input.txt | 141 | ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| A | 2024/20/solution.rs | 82 | ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ |
| A | 2024/20/test.txt | 15 | +++++++++++++++ |
3 files changed, 238 insertions, 0 deletions
diff --git a/2024/20/input.txt b/2024/20/input.txt
@@ -0,0 +1,141 @@ -1 1 ############################################################################################################################################# -1 2 #.....#.......#...#...#...#.....#.......###...###.......#.......###.....#.....#.....#...###.....#...#...###.........#.......#...#...###.....# -1 3 #.###.#.#####.#.#.#.#.#.#.#.###.#.#####.###.#.###.#####.#.#####.###.###.#.###.#.###.#.#.###.###.#.#.#.#.###.#######.#.#####.#.#.#.#.###.###.# -1 4 #.#...#...#...#.#.#.#...#.#...#.#...#...#...#.....#...#.#.....#...#...#...#...#...#...#.#...#...#.#.#.#.#...#.......#.....#...#...#...#.#...# -1 5 #.#.#####.#.###.#.#.#####.###.#.###.#.###.#########.#.#.#####.###.###.#####.#####.#####.#.###.###.#.#.#.#.###.###########.###########.#.#.### -1 6 #.#...#...#.#...#.#.....#.....#.#...#...#...#.......#...#...#.#...###...#...#####.....#.#.#...#...#.#.#.#...#.....#.....#...#.........#.#...# -1 7 #.###.#.###.#.###.#####.#######.#.#####.###.#.###########.#.#.#.#######.#.###########.#.#.#.###.###.#.#.###.#####.#.###.###.#.#########.###.# -1 8 #...#.#.#...#...#...#...#.....#.#.....#.....#.....#...###.#.#.#.#...#...#.#...#...#...#.#.#...#...#.#.#.###.#.....#.#...#...#...###.....#...# -1 9 ###.#.#.#.#####.###.#.###.###.#.#####.###########.#.#.###.#.#.#.#.#.#.###.#.#.#.#.#.###.#.###.###.#.#.#.###.#.#####.#.###.#####.###.#####.### -1 10 #...#.#.#.#...#...#.#...#...#...#...#...#...#...#.#.#.#...#.#.#.#.#.#...#.#.#.#.#.#...#.#...#.###.#.#.#.....#...#...#.....#...#...#.#.....### -1 11 #.###.#.#.#.#.###.#.###.###.#####.#.###.#.#.#.#.#.#.#.#.###.#.#.#.#.###.#.#.#.#.#.###.#.###.#.###.#.#.#########.#.#########.#.###.#.#.####### -1 12 #...#...#...#...#.#.###...#...#...#...#.#.#.#.#...#.#...#...#.#.#.#.#...#...#.#.#...#.#.###.#...#.#.#.....#.....#.#.....#...#.....#.#.......# -1 13 ###.###########.#.#.#####.###.#.#####.#.#.#.#.#####.#####.###.#.#.#.#.#######.#.###.#.#.###.###.#.#.#####.#.#####.#.###.#.#########.#######.# -1 14 #...#.....#...#...#.....#.#...#...#...#...#.#...#...#...#.#...#.#.#.#.....#...#...#...#.....#...#.#.###...#.###...#...#.#.#...#...#.#.......# -1 15 #.###.###.#.#.#########.#.#.#####.#.#######.###.#.###.#.#.#.###.#.#.#####.#.#####.###########.###.#.###.###.###.#####.#.#.#.#.#.#.#.#.####### -1 16 #...#...#.#.#.........#...#.#.....#...#...#.#...#.....#.#.#...#.#.#...###.#.#...#.....#.......#...#...#...#...#...#...#...#.#.#.#.#.#...#...# -1 17 ###.###.#.#.#########.#####.#.#######.#.#.#.#.#########.#.###.#.#.###.###.#.#.#.#####.#.#######.#####.###.###.###.#.#######.#.#.#.#.###.#.#.# -1 18 #...#...#...###...###...#...#...#.....#.#.#.#.#...###...#.#...#.#.#...#...#...#.#.....#.......#.#...#...#...#.#...#.....#...#...#...#...#.#.# -1 19 #.###.#########.#.#####.#.#####.#.#####.#.#.#.#.#.###.###.#.###.#.#.###.#######.#.###########.#.#.#.###.###.#.#.#######.#.###########.###.#.# -1 20 #.....#...#.....#...###.#.#####.#.#.....#.#.#.#.#.#...#...#.#...#.#...#.#.....#.#.....#.......#...#.#...#...#.#.#.......#.#...........#...#.# -1 21 #######.#.#.#######.###.#.#####.#.#.#####.#.#.#.#.#.###.###.#.###.###.#.#.###.#.#####.#.###########.#.###.###.#.#.#######.#.###########.###.# -1 22 ###.....#.#.....#...#...#...#...#.#.....#.#.#.#.#.#...#.###.#...#...#.#...#...#.....#.#...#...###...#...#.#...#.#...#...#.#.#...###.....#...# -1 23 ###.#####.#####.#.###.#####.#.###.#####.#.#.#.#.#.###.#.###.###.###.#.#####.#######.#.###.#.#.###.#####.#.#.###.###.#.#.#.#.#.#.###.#####.### -1 24 #...#...#...#...#...#...#...#...#...#...#...#.#.#...#.#...#.#...#...#.....#...#...#...#...#.#...#.....#.#.#.###.#...#.#...#...#...#.#.....### -1 25 #.###.#.###.#.#####.###.#.#####.###.#.#######.#.###.#.###.#.#.###.#######.###.#.#.#####.###.###.#####.#.#.#.###.#.###.###########.#.#.####### -1 26 #...#.#...#...#...#...#.#...#...#...#.#.....#.#.#...#...#.#.#...#.#.......###...#.....#...#.#...#...#.#.#.#.#...#.....#.........#...#.....### -1 27 ###.#.###.#####.#.###.#.###.#.###.###.#.###.#.#.#.#####.#.#.###.#.#.#################.###.#.#.###.#.#.#.#.#.#.#########.#######.#########.### -1 28 ###...###...#...#...#...#...#.#...###...#...#.#.#...#...#.#.#...#.#.......#...#...###.#...#.#.#...#.#.#.#.#...#...#...#.......#.....#...#...# -1 29 ###########.#.#####.#####.###.#.#########.###.#.###.#.###.#.#.###.#######.#.#.#.#.###.#.###.#.#.###.#.#.#.#####.#.#.#.#######.#####.#.#.###.# -1 30 #.....###...#.#...#.#...#.....#.#...#...#...#.#.#...#...#.#.#.#...#.......#.#.#.#.....#.###.#.#...#...#.#.#.....#...#.#.....#.....#...#.#...# -1 31 #.###.###.###.#.#.#.#.#.#######.#.#.#.#.###.#.#.#.#####.#.#.#.#.###.#######.#.#.#######.###.#.###.#####.#.#.#########.#.###.#####.#####.#.### -1 32 #...#...#.....#.#.#...#...#...#.#.#.#.#.#...#...#.#.....#...#.#...#.#...#...#.#.....#...#...#...#.....#.#.#.#.....#...#...#.#...#.#...#.#...# -1 33 ###.###.#######.#.#######.#.#.#.#.#.#.#.#.#######.#.#########.###.#.#.#.#.###.#####.#.###.#####.#####.#.#.#.#.###.#.#####.#.#.#.#.#.#.#.###.# -1 34 ###...#.........#.###...#...#.#.#.#.#.#.#.......#.#...#.......###.#.#.#.#.#...#...#.#.###.#.....#...#.#.#.#...#...#.......#...#.#...#.#.....# -1 35 #####.###########.###.#.#####.#.#.#.#.#.#######.#.###.#.#########.#.#.#.#.#.###.#.#.#.###.#.#####.#.#.#.#.#####.###############.#####.####### -1 36 #...#...........#.#...#.......#...#...#...#...#.#.#...#.#.....#...#.#.#.#.#.#...#.#.#...#.#.....#.#.#.#...#...#...#...........#.......#.....# -1 37 #.#.###########.#.#.#####################.#.#.#.#.#.###.#.###.#.###.#.#.#.#.#.###.#.###.#.#####.#.#.#.#####.#.###.#.#########.#########.###.# -1 38 #.#.............#...#.....#.............#...#.#.#.#...#.#.#...#.#...#.#...#.#.###.#.#...#...###.#.#...#.....#.#...#.#...#.....#...#...#.#...# -1 39 #.###################.###.#.###########.#####.#.#.###.#.#.#.###.#.###.#####.#.###.#.#.#####.###.#.#####.#####.#.###.#.#.#.#####.#.#.#.#.#.### -1 40 #.....................###...#...###...#...#...#.#.....#.#.#...#.#...#...#...#...#.#.#.....#...#.#.....#.....#...###.#.#...#.....#...#...#...# -1 41 #############################.#.###.#.###.#.###.#######.#.###.#.###.###.#.#####.#.#.#####.###.#.#####.#####.#######.#.#####.###############.# -1 42 #.............................#.....#.....#...#.......#.#.###...###...#.#.#.....#...###...#...#.#.....###...###...#.#.#...#...#.............# -1 43 #.###########################################.#######.#.#.###########.#.#.#.###########.###.###.#.#######.#####.#.#.#.#.#.###.#.############# -1 44 #.#...................#...#...#.....###...###.....#...#.#.....#.......#.#.#.#.....#.....#...###.#.#.......#...#.#.#.#...#...#.#.............# -1 45 #.#.#################.#.#.#.#.#.###.###.#.#######.#.###.#####.#.#######.#.#.#.###.#.#####.#####.#.#.#######.#.#.#.#.#######.#.#############.# -1 46 #...#...###...#.......#.#.#.#...###.....#.......#.#.###.......#...#...#.#.#.#...#...#...#.###...#.#.........#...#...#.......#.#...........#.# -1 47 #####.#.###.#.#.#######.#.#.###################.#.#.#############.#.#.#.#.#.###.#####.#.#.###.###.###################.#######.#.#########.#.# -1 48 #.....#.....#.#.........#...###...........#.....#...#.....#.....#.#.#.#.#...###...#...#.#...#.....###.........#.....#.#...###.#.#...#...#...# -1 49 #.###########.#################.#########.#.#########.###.#.###.#.#.#.#.#########.#.###.###.#########.#######.#.###.#.#.#.###.#.#.#.#.#.##### -1 50 #...#...#...#...#...#...###...#.........#.#.#...#...#...#.#.#...#.#.#...#...###...#...#...#.#...#...#.......#.#...#.#...#.....#...#...#.....# -1 51 ###.#.#.#.#.###.#.#.#.#.###.#.#########.#.#.#.#.#.#.###.#.#.#.###.#.#####.#.###.#####.###.#.#.#.#.#.#######.#.###.#.#######################.# -1 52 #...#.#...#...#.#.#...#...#.#...........#.#...#...#.....#...#.###.#.#.....#.....#...#.#...#.#.#...#.#.......#.....#...#.....#...#...#.......# -1 53 #.###.#######.#.#.#######.#.#############.###################.###.#.#.###########.#.#.#.###.#.#####.#.###############.#.###.#.#.#.#.#.####### -1 54 #.....#...###.#...#.....#.#.........#...#...........#...#...#...#.#.#.#.......#...#...#.....#.....#.#...........#...#.#.###.#.#.#.#...#...### -1 55 #######.#.###.#####.###.#.#########.#.#.###########.#.#.#.#.###.#.#.#.#.#####.#.#################.#.###########.#.#.#.#.###.#.#.#.#####.#.### -1 56 #.....#.#.#...#...#.###.#.#...#...#...#...........#.#.#.#.#.#...#.#.#.#.#.....#.#...###...#...#...#.........#...#.#.#.#...#...#...###...#...# -1 57 #.###.#.#.#.###.#.#.###.#.#.#.#.#.###############.#.#.#.#.#.#.###.#.#.#.#.#####.#.#.###.#.#.#.#.###########.#.###.#.#.###.###########.#####.# -1 58 #...#.#.#.#.....#...#...#...#...#.................#.#.#...#.#.###...#.#.#...#...#.#.....#...#...#...#.....#.#.....#.#...#.....###...#.#.....# -1 59 ###.#.#.#.###########.#############################.#.#####.#.#######.#.###.#.###.###############.#.#.###.#.#######.###.#####.###.#.#.#.##### -1 60 ###.#...#.#...#.....#.............................#.#...#...#.......#...###...###.........#...#...#.#...#.#.........###.....#.....#...#.....# -1 61 ###.#####.#.#.#.###.#############################.#.###.#.#########.#####################.#.#.#.###.###.#.#################.###############.# -1 62 #...#...#.#.#.#...#...............#.....#.........#.....#...#...#...###...................#.#...###.....#.....###.........#...#...#...#.....# -1 63 #.###.#.#.#.#.###.###############.#.###.#.#################.#.#.#.#####.###################.#################.###.#######.###.#.#.#.#.#.##### -1 64 #...#.#.#...#.....#.............#.#.###...#...###...#.....#.#.#...#.....#...#.....#...#...#.#.........###...#.....#.......###...#.#.#.#.....# -1 65 ###.#.#.###########.###########.#.#.#######.#.###.#.#.###.#.#.#####.#####.#.#.###.#.#.#.#.#.#.#######.###.#.#######.#############.#.#.#####.# -1 66 ###...#.............###...#.....#.#.........#...#.#.#.#...#.#.....#.....#.#.#.#...#.#...#.#.#.......#.....#.........#...........#...#.......# -1 67 #######################.#.#.#####.#############.#.#.#.#.###.#####.#####.#.#.#.#.###.#####.#.#######.#################.#########.############# -1 68 #.......................#...#...#.....#.......#...#...#...#.#.....#.....#.#...#.....###...#.#.......#.................#.........#...#.....### -1 69 #.###########################.#.#####.#.#####.###########.#.#.#####.#####.#############.###.#.#######.#################.#########.#.#.###.### -1 70 #...................#...#...#.#.#...#...#...#.....#.......#...#...#.......#...#.........#...#...#...#.#.......#...#.....#...#.....#.#...#...# -1 71 ###################.#.#.#.#.#.#.#.#.#####.#.#####.#.###########.#.#########.#.#.#########.#####.#.#.#.#.#####.#.#.#.#####.#.#.#####.###.###.# -1 72 #.....#...........#.#.#.#.#.#.#...#.......#.....#.#.........#...#.#.....#...#.#.....#.....#####.#.#...#.....#...#...###...#...#.....###.#...# -1 73 #.###.#.#########.#.#.#.#.#.#.#################.#.#########.#.###.#.###.#.###.#####.#.#########.#.#########.###########.#######.#######.#.### -1 74 #...#.#.........#...#.#...#...#.................#.....#...#.#...#.#...#.#...#.......#.#...###...#.#.........#...###.....#.......#.......#...# -1 75 ###.#.#########.#####.#########.#####################.#.#.#.###.#.###.#.###.#########.#.#.###.###.#.#########.#.###.#####.#######.#########.# -1 76 #...#.......###.......#.......#.......#.........#...#.#.#.#.....#...#.#...#.....#...#.#.#.....#...#...........#.....#.....###...#.#.......#.# -1 77 #.#########.###########.#####.#######.#.#######.#.#.#.#.#.#########.#.###.#####.#.#.#.#.#######.#####################.#######.#.#.#.#####.#.# -1 78 #.#...#...#.............#...#.........#.#.......#.#.#...#.#...#.....#.#...#.....#.#.#.#...#...#.#...........#...#...#.........#...#...###...# -1 79 #.#.#.#.#.###############.#.###########.#.#######.#.#####.#.#.#.#####.#.###.#####.#.#.###.#.#.#.#.#########.#.#.#.#.#################.####### -1 80 #.#.#...#...#...#.....#...#.............#.......#.#.....#.#.#.#.#.....#...#.......#...###...#...#.....#...#.#.#...#.#.....#.....#...#.......# -1 81 #.#.#######.#.#.#.###.#.#######################.#.#####.#.#.#.#.#.#######.###########################.#.#.#.#.#####.#.###.#.###.#.#.#######.# -1 82 #.#...#...#...#...###...#.......................#.#.....#.#.#...#.....#...###.....#...........#...###...#.#.#...#...#...#...###.#.#.......#.# -1 83 #.###.#.#.###############.#######################.#.#####.#.#########.#.#####.###.#.#########.#.#.#######.#.###.#.#####.#######.#.#######.#.# -1 84 #...#.#.#.............###...................#...#.#.#...#...#.....#...#...#...#...#.........#.#.#.#...#...#.....#...#...#...#...#.......#.#.# -1 85 ###.#.#.#############.#####################.#.#.#.#.#.#.#####.###.#.#####.#.###.###########.#.#.#.#.#.#.###########.#.###.#.#.#########.#.#.# -1 86 ###...#.............#.......................#.#...#...#...#...#...#.#.....#...#.....#.......#...#...#.#...........#.#.....#.#...#.......#.#.# -1 87 ###################.#########################.###########.#.###.###.#.#######.#####.#.###############.###########.#.#######.###.#.#######.#.# -1 88 #...#...#...........#...#...#.......#...#...#.#...........#...#...#.#...#...#.#.....#.....#.........#.............#.#.......###.#.......#.#.# -1 89 #.#.#.#.#.###########.#.#.#.#.#####.#.#.#.#.#.#.#############.###.#.###.#.#.#.#.#########.#.#######.###############.#.#########.#######.#.#.# -1 90 #.#...#...#.......#...#...#...#.....#.#.#.#.#.#.###....S#...#...#.#.#...#.#...#.#.....###...#...#...#.............#.#.........#.#...#...#...# -1 91 #.#########.#####.#.###########.#####.#.#.#.#.#.###.#####.#.###.#.#.#.###.#####.#.###.#######.#.#.###.###########.#.#########.#.#.#.#.####### -1 92 #...#...#...#.....#.###...#...#.......#...#...#...#.#####.#...#.#...#.###.#.....#.#...#...#...#.#.#...###.........#.......#...#.#.#.#.......# -1 93 ###.#.#.#.###.#####.###.#.#.#.###################.#.#####.###.#.#####.###.#.#####.#.###.#.#.###.#.#.#####.###############.#.###.#.#.#######.# -1 94 #...#.#.#.#...#...#.#...#...#.....................#.#####...#.#...#...#...#...#...#...#.#.#...#.#...#...#.....#.......###...###...#...#.....# -1 95 #.###.#.#.#.###.#.#.#.#############################.#######.#.###.#.###.#####.#.#####.#.#.###.#.#####.#.#####.#.#####.###############.#.##### -1 96 #.....#...#.....#...#.......................#.......#####...#...#.#...#.#.....#.#.....#.#.#...#.#...#.#.....#...#.....#...........###.#.....# -1 97 ###########################################.#.###########.#####.#.###.#.#.#####.#.#####.#.#.###.#.#.#.#####.#####.#####.#########.###.#####.# -1 98 #.........###...........#...................#.###########.....#.#.#...#.#...#...#...#...#.#...#.#.#.#.....#.......#...#.#.........#...#...#.# -1 99 #.#######.###.#########.#.###################.###############.#.#.#.###.###.#.#####.#.###.###.#.#.#.#####.#########.#.#.#.#########.###.#.#.# -1 100 #.......#.....#...#...#.#...............#...#.#####.....#...#.#.#.#.###.#...#.#.....#...#.#...#...#.#...#.........#.#...#.........#.#...#.#.# -1 101 #######.#######.#.#.#.#.###############.#.#.#.#####.###.#.#.#.#.#.#.###.#.###.#.#######.#.#.#######.#.#.#########.#.#############.#.#.###.#.# -1 102 ###...#.........#...#.#.#...............#.#...#####...#.#.#...#.#.#...#.#.#...#...#...#.#.#.#...#...#.#...........#.#...........#.#...###.#.# -1 103 ###.#.###############.#.#.###############.###########.#.#.#####.#.###.#.#.#.#####.#.#.#.#.#.#.#.#.###.#############.#.#########.#.#######.#.# -1 104 #...#...........#.....#...#...#.....#...#.....#######.#.#...#...#.#...#.#.#...#...#.#.#.#.#...#.#.###...............#.........#.#.......#...# -1 105 #.#############.#.#########.#.#.###.#.#.#####.#######.#.###.#.###.#.###.#.###.#.###.#.#.#.#####.#.###########################.#.#######.##### -1 106 #.#.....#.....#...#.....#...#...###...#...#...#######.#...#.#...#.#...#.#.#...#.#...#.#.#.#...#.#.#...#...#...#...#...#...#...#.#.....#.#...# -1 107 #.#.###.#.###.#####.###.#.###############.#.#########.###.#.###.#.###.#.#.#.###.#.###.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.###.#.###.#.#.#.# -1 108 #...###...###.......###...###...#...#.....#...#######...#.#.#...#.#...#.#.#...#.#.###...#.#.#.#.#.#.#...#.#.#...#.#.#...#...###...#...#...#.# -1 109 #############################.#.#.#.#.#######.#########.#.#.#.###.#.###.#.###.#.#.#######.#.#.#.#.#.#####.#.#####.#.###############.#######.# -1 110 #.......#...#.........#...#...#...#...#...#...#######...#.#.#...#.#...#.#.#...#.#...###...#.#.#.#.#.....#.#.....#.#...............#.....#...# -1 111 #.#####.#.#.#.#######.#.#.#.###########.#.#.#########.###.#.###.#.###.#.#.#.###.###.###.###.#.#.#.#####.#.#####.#.###############.#####.#.### -1 112 #.....#.#.#...#.....#.#.#...#...#.....#.#.#...#..E###...#.#.#...#.#...#.#...###...#...#...#.#.#.#.#...#.#.#...#.#.#...#...........#...#...### -1 113 #####.#.#.#####.###.#.#.#####.#.#.###.#.#.###.#.#######.#.#.#.###.#.###.#########.###.###.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.###########.#.####### -1 114 #.....#...#...#.#...#...#...#.#.#.#...#.#.#...#.#...#...#...#.....#...#.###.......#...###.#.#.#.#...#.#.#...#.#.#.#.#.#.............#.......# -1 115 #.#########.#.#.#.#######.#.#.#.#.#.###.#.#.###.#.#.#.###############.#.###.#######.#####.#.#.#.#####.#.#####.#.#.#.#.#####################.# -1 116 #.#.........#...#...#...#.#.#.#.#.#...#.#...###...#.#...........#.....#...#.....#...#.....#.#.#...###.#.....#.#.#.#.#...#...................# -1 117 #.#.###############.#.#.#.#.#.#.#.###.#.###########.###########.#.#######.#####.#.###.#####.#.###.###.#####.#.#.#.#.###.#.################### -1 118 #...#.......#.......#.#.#.#...#.#.#...#...#.....#...#.....#...#.#.#.....#...###.#.###...#...#...#...#.#...#.#.#.#...###.#.........#.........# -1 119 #####.#####.#.#######.#.#.#####.#.#.#####.#.###.#.###.###.#.#.#.#.#.###.###.###.#.#####.#.#####.###.#.#.#.#.#.#.#######.#########.#.#######.# -1 120 ###...#...#.#.........#.#...#...#.#.#...#.#...#.#.#...###...#.#.#.#.#...#...#...#.....#...#.....#...#...#.#.#.#.......#...#...#...#.#.......# -1 121 ###.###.#.#.###########.###.#.###.#.#.#.#.###.#.#.#.#########.#.#.#.#.###.###.#######.#####.#####.#######.#.#.#######.###.#.#.#.###.#.####### -1 122 #...#...#.#.............#...#...#.#.#.#...#...#...#.........#.#.#...#...#...#...#.....#.....#...#.#.....#.#.#.#...#...###.#.#...###.#.....### -1 123 #.###.###.###############.#####.#.#.#.#####.###############.#.#.#######.###.###.#.#####.#####.#.#.#.###.#.#.#.#.#.#.#####.#.#######.#####.### -1 124 #...#...#.#.............#.#.....#.#.#.#.....#...#.....#.....#.#...#####...#.#...#.#.....#...#.#.#...#...#.#.#.#.#.#.#...#.#.........#...#...# -1 125 ###.###.#.#.###########.#.#.#####.#.#.#.#####.#.#.###.#.#####.###.#######.#.#.###.#.#####.#.#.#.#####.###.#.#.#.#.#.#.#.#.###########.#.###.# -1 126 #...#...#...###.........#.#.#...#.#.#.#...#...#.#...#.#.....#...#...#.....#.#.....#.#.....#.#.#...#...###...#.#.#.#...#.#...#.........#...#.# -1 127 #.###.#########.#########.#.#.#.#.#.#.###.#.###.###.#.#####.###.###.#.#####.#######.#.#####.#.###.#.#########.#.#.#####.###.#.###########.#.# -1 128 #.#...###.......#.....#...#.#.#.#.#.#.#...#...#.#...#.#.....#...#...#...#...###.....#.#.....#...#.#.........#.#.#.#...#.#...#.......#...#...# -1 129 #.#.#####.#######.###.#.###.#.#.#.#.#.#.#####.#.#.###.#.#####.###.#####.#.#####.#####.#.#######.#.#########.#.#.#.#.#.#.#.#########.#.#.##### -1 130 #...#...#.....#...#...#.###.#.#...#...#...#...#.#...#.#.....#...#.###...#.#.....#...#.#.#...#...#.#.........#.#.#.#.#.#.#.#...#...#...#.....# -1 131 #####.#.#####.#.###.###.###.#.###########.#.###.###.#.#####.###.#.###.###.#.#####.#.#.#.#.#.#.###.#.#########.#.#.#.#.#.#.#.#.#.#.#########.# -1 132 ###...#.......#...#...#.#...#...#...#...#.#.###.#...#.....#...#.#...#...#.#.....#.#.#.#...#.#.#...#.........#...#.#.#...#...#.#.#.......#...# -1 133 ###.#############.###.#.#.#####.#.#.#.#.#.#.###.#.#######.###.#.###.###.#.#####.#.#.#.#####.#.#.###########.#####.#.#########.#.#######.#.### -1 134 #...#.....#...#...#...#.#...#...#.#...#...#...#.#.###...#.....#.#...#...#.#.....#.#.#...###...#.#...#.....#.....#.#...#...###.#.......#.#...# -1 135 #.###.###.#.#.#.###.###.###.#.###.###########.#.#.###.#.#######.#.###.###.#.#####.#.###.#######.#.#.#.###.#####.#.###.#.#.###.#######.#.###.# -1 136 #...#.###...#.#...#...#.###.#.###.........#...#.#.....#.....###.#.###.....#...#...#...#.#.......#.#.#...#.#.....#.#...#.#...#...#.....#.....# -1 137 ###.#.#######.###.###.#.###.#.###########.#.###.###########.###.#.###########.#.#####.#.#.#######.#.###.#.#.#####.#.###.###.###.#.########### -1 138 #...#.#.......#...#...#.#...#...#.........#...#.#.....#...#...#.#.......#.....#.#.....#.#...#...#.#.#...#.#...#...#.....#...#...#...........# -1 139 #.###.#.#######.###.###.#.#####.#.###########.#.#.###.#.#.###.#.#######.#.#####.#.#####.###.#.#.#.#.#.###.###.#.#########.###.#############.# -1 140 #.....#.........###.....#.......#.............#...###...#.....#.........#.......#.......###...#...#...###.....#...........###...............# -1 141 #############################################################################################################################################
diff --git a/2024/20/solution.rs b/2024/20/solution.rs
@@ -0,0 +1,82 @@
-1 1 #[path = "../lib.rs"]
-1 2 mod lib;
-1 3
-1 4 fn parse_input() -> Vec<(usize, usize)> {
-1 5 let mut start = (0, 0);
-1 6 let mut map = vec![];
-1 7 for (y, line) in lib::iter_input().enumerate() {
-1 8 let mut row = vec![];
-1 9 for (x, c) in line.bytes().enumerate() {
-1 10 row.push(match c {
-1 11 b'#' => false,
-1 12 b'.' => true,
-1 13 b'S' => {
-1 14 start = (x, y);
-1 15 true
-1 16 },
-1 17 b'E' => true,
-1 18 _ => unreachable!(),
-1 19 });
-1 20 }
-1 21 map.push(row);
-1 22 }
-1 23
-1 24 let mut path = vec![];
-1 25 let (mut x, mut y) = start;
-1 26 loop {
-1 27 path.push((x, y));
-1 28 map[y][x] = false;
-1 29 if map[y - 1][x] {
-1 30 y -= 1;
-1 31 } else if map[y + 1][x] {
-1 32 y += 1;
-1 33 } else if map[y][x - 1] {
-1 34 x -= 1;
-1 35 } else if map[y][x + 1] {
-1 36 x += 1;
-1 37 } else {
-1 38 break;
-1 39 }
-1 40 }
-1 41
-1 42 return path;
-1 43 }
-1 44
-1 45 fn main() {
-1 46 let path = parse_input();
-1 47 let mut count1 = 0;
-1 48 let mut count2 = 0;
-1 49
-1 50 for t1 in 0..path.len() {
-1 51 let (x1, y1) = path[t1];
-1 52
-1 53 for t2 in (t1 + 102)..(t1 + 121).min(path.len()) {
-1 54 let (x2, y2) = path[t2];
-1 55 let d = x1.abs_diff(x2) + y1.abs_diff(y2);
-1 56 if t2 >= t1 + d + 100 {
-1 57 if d <= 2 {
-1 58 count1 += 1;
-1 59 }
-1 60 if d <= 20 {
-1 61 count2 += 1;
-1 62 }
-1 63 }
-1 64 }
-1 65
-1 66 // perf: check t2 >= t1 + d + 100 if we already know it is true
-1 67 // saves ~33%
-1 68 for t2 in (t1 + 121)..path.len() {
-1 69 let (x2, y2) = path[t2];
-1 70 let d = x1.abs_diff(x2) + y1.abs_diff(y2);
-1 71 if d <= 2 {
-1 72 count1 += 1;
-1 73 }
-1 74 if d <= 20 {
-1 75 count2 += 1;
-1 76 }
-1 77 }
-1 78 }
-1 79
-1 80 println!("part1: {}", count1);
-1 81 println!("part2: {}", count2);
-1 82 }
diff --git a/2024/20/test.txt b/2024/20/test.txt
@@ -0,0 +1,15 @@ -1 1 ############### -1 2 #...#...#.....# -1 3 #.#.#.#.#.###.# -1 4 #S#...#.#.#...# -1 5 #######.#.#.### -1 6 #######.#.#...# -1 7 #######.#.###.# -1 8 ###..E#...#...# -1 9 ###.#######.### -1 10 #...###...#...# -1 11 #.#####.#.###.# -1 12 #.#...#.#.#...# -1 13 #.#.#.#.#.#.### -1 14 #...#...#...### -1 15 ###############