- 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 ###############