this repo has no description
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

feat: third day

+418
+323
input/day_03
··· 1 + ..#...##...###.........#..#..#. 2 + #.###........#..##.#......#...# 3 + #.#.###..#.#..#.#............#. 4 + .##............#......#...#.#.. 5 + ..#..#.....##..##..##.......... 6 + ...#...........###.#.##........ 7 + ....#.#...#..#..##............# 8 + ....#....##...##..##........#.. 9 + .#..#..#....#...#..##.....##... 10 + .#.###..#......####........##.. 11 + ..#...###....#......#.....##.## 12 + ..#...#.......#......#..##....# 13 + #...##....#.#..#.......#....#.. 14 + .#......#..#...........#....##. 15 + .##.#......#.#.#.....##........ 16 + .....#.................#.#..#.# 17 + ....#..#........##......#..#.#. 18 + ..#...#..##.......#..##...#..#. 19 + ..#.......#.............#.#.... 20 + .#.................#.........#. 21 + ..#..#.#.#.#............##.#..# 22 + .#.#.##.#.....#.....#..#......# 23 + ..#.#..#.#..........##........# 24 + .........#...#.....#.#...#####. 25 + ##..#.....##.##........#...##.. 26 + .#.....#....##.#..#....##...##. 27 + .##.....#.#....#.#.....#......# 28 + .....#..#.##.....#.#....#.#..## 29 + #......##..##....##...###..#... 30 + .......#..#...........#......#. 31 + #...#......#........#..#....... 32 + ##..#.....##.....#...#...#....# 33 + .###..##..#.#........#..#.#.... 34 + #.#...#...#......##........#.#. 35 + ......#....#.#........##...#..# 36 + .#.....#..#.#.....#......##.... 37 + .....#.....#.#.#....###.....#.. 38 + #.......##.#......#.#.#....###. 39 + .......#..#..#...#.#.##........ 40 + .#......##..#.........###..#... 41 + ....#..##.......##.###...###... 42 + .##............#..#.##.....#.## 43 + ..##.#.......##....#.......##.# 44 + #..###............#.#...#...#.# 45 + ...##.#.#.#..#.##........#.#... 46 + .#.....#...##.#..###..##.##...# 47 + ..............#.#.#.........#.. 48 + .....#...........#.#...#....#.. 49 + .....#...##.##.#....#.###..#... 50 + #..###.........#......#.#.#.... 51 + .....#..#...##...###.#....#.... 52 + #..........#.#.#....#..#......# 53 + ###...................#......#. 54 + ........####......#.#.......... 55 + .......#.....#...#.......#...#. 56 + .....#.....................#... 57 + ...#.#...#...#...........#..... 58 + ..#.........#...#....###..#.... 59 + .....#.#..##......##........##. 60 + ..#.............#............#. 61 + .#....##.......#..#............ 62 + .#............#.#..#.##....#... 63 + .####...##.#....#.....#...#.... 64 + ##..#....#.#.#...........#..#.# 65 + ...#..#...........#...#..#....# 66 + .....##.....#..#...#.........#. 67 + ...##........#....##........#.. 68 + .##.#...#...#..#.....#....##.#. 69 + #.#...#.#.#.#.#..#....#....#... 70 + #..#.#...#..#........#....#.#.. 71 + ....#.#.....#......##...#....#. 72 + .###.##...#....##.#...###..#..# 73 + ###..#...##..#......#.........# 74 + ..#.#......##.......#.....#...# 75 + ..#...#........#.........#.#... 76 + #....#..#.........###.#......## 77 + ...#..#....#...#.......##.#.#.. 78 + ....#.......#....###...##.#.... 79 + ..#.....#.#.....###..#####....# 80 + ##......#....#.....##..#..#...# 81 + #...........#..#..#....#....#.. 82 + .#...#.##.#.#.#....#......#..#. 83 + .......#.#....#....#...#.#..#.. 84 + ..#.#..#.##..##...##..#..#..... 85 + ...##.##.................#.#... 86 + .....#...#......##.#....#.....# 87 + ......#..##.#..#.#.........#... 88 + .............##.#......#....... 89 + ..#.#.....#...#.#.....#..#..... 90 + .........#..#.#......#..#...... 91 + #..#.#.##..........#.##......## 92 + ......#.......#.....#..#.#...#. 93 + .#....#....#.#.....#.......#... 94 + #..#..##..................#.... 95 + ............#...........##.#... 96 + ####...#..##.#....#.##..#...... 97 + #...#...#.....#.#...#.#........ 98 + .......##.........#.....#.....# 99 + .....#...........##......#.#### 100 + .##....#.#.##......###.#.##.... 101 + ........#.####.......#.#...#... 102 + .#.#...##.#.#.#.........##..... 103 + ....#............###.##....#... 104 + ...##........##.#...#....#..### 105 + ..#.#.........#....##.#........ 106 + ..#..##..#...##..#.##...#.....# 107 + .#......#..#..#.........#...... 108 + ..#........##.#......#.....#... 109 + .##.......#....#.#......#...... 110 + #........#....#.####...#.#..... 111 + ##......#.............#....###. 112 + ..#....####.#.#.#.#...##......# 113 + #.#.#.....#...#.......#...##... 114 + ........#...#....#..#......#.#. 115 + #..#...#.#.##.....#.#....#....# 116 + #...#....#......#.........##.## 117 + ..##.#..##............#........ 118 + #.........####.........#....... 119 + #.##.........#..##....#.#.#.#.. 120 + .###......##..#.#.....#.#...##. 121 + ...#.........#.#...##.##....#.. 122 + #..#......#....##..#.#...#...## 123 + ...#.......#.#.#.....#..##...#. 124 + ....................###........ 125 + #...........###......#.#...##.# 126 + .................#.#...###....# 127 + ...#..###..#.##...#..#....##... 128 + ###..#..#.#...#.....#.#.......# 129 + .........#..#.#.....#.........# 130 + .##..#.........#.#.....##...... 131 + .....#..........#.#.##....#.... 132 + ........#.##.....#...##...#.... 133 + #.#.#...#......##....#.###..... 134 + .#.##.....##.....#....#.##.#.## 135 + .#...#.....##.#.##....#.....#.# 136 + ...#.....#........#............ 137 + ##...####..#....#..##...#...... 138 + #.......#...#.#...#........#..# 139 + ......#.....#....#..#..#.#..... 140 + ..............##.....#.##....## 141 + .#..##.........###..#.......... 142 + ......#......#............#..#. 143 + #.....###...###..........#..... 144 + ...###...........#....##..#.... 145 + .....................#...#.##.. 146 + ###....#.#....#...#....#.#..##. 147 + ..#.............#.#....#..#.#.. 148 + .......#..###....#...#...#...#. 149 + .##..#....##..............##... 150 + ...#...#..#..#.##.#....##...#.. 151 + #..#....##......#....###..####. 152 + .##...#.#....#..#..#....#....#. 153 + .#.##..#..#.........#.#......## 154 + #..#.................#.....#... 155 + ..#............#........#...#.. 156 + ##.##.......#.#....#..#....##.# 157 + ..##...#.#.....#......#........ 158 + ......#.##.........##...#...... 159 + ......##.#......#.##....##.#..# 160 + .#.#......####.#.#.#.#..#...... 161 + ..#.#....#...###....#.#...###.. 162 + .#.#...#....##..###.#..#....... 163 + ..#.....##..#............#..#.# 164 + .#...#....#.....#....#..#.#.#.. 165 + ..#....#..#......##...##......# 166 + ....#.......#.##.#.........#..# 167 + #............#...##.....#..##.. 168 + ......#..#..........#.#..#..... 169 + ...........#.#..#...##.#...#..# 170 + .........###..#......##.###.#.. 171 + .....#....#......#...#....##... 172 + ..#.......#..#.#.#......#...... 173 + .#....#.....#.#.#.##...#....##. 174 + ....#.##.##.......#..#.....#... 175 + .#.....#......#.......#..#..... 176 + ....###.....##.....##..#.#...#. 177 + #.......#.#....#.#.#....#...... 178 + #...#..#.#......#...##.#....... 179 + ....##.##....#..#.......#..#.#. 180 + .#.##.#.#..#.....#.#.......##.. 181 + ..#..#..#..#.###............... 182 + #.#......##....##.#.#.....#.#.. 183 + ..##...#.........#.#..#.##..#.. 184 + .........####...#.....##.#..... 185 + ..#...................#.###.... 186 + ..#.....#..#....#..#........... 187 + .....###.#.........#.#......... 188 + #..#..#........#..#......#..#.. 189 + ###..##...#.......#........#.#. 190 + .#.#.#.###.#............##..... 191 + #..............#......#....#.## 192 + .#...#..###...###.#..#.#....... 193 + .###....##.#.......#.#.....###. 194 + .##.....#.#.................... 195 + #..#.....#.....#...#.....#..##. 196 + #.#....##..#......##..#...##..# 197 + ...........#....#..#.##.##....# 198 + ......#.......##....#.#....#.#. 199 + ###..#.#..........#.......#.#.. 200 + ..#.#..##....##............##.. 201 + ..#.....#..#....###............ 202 + .#...#...##...#..#..#..#.#....# 203 + ...#....#........#............. 204 + #.#......#.#.....##..........#. 205 + ....#..#...............#...##.. 206 + ........#..#....#..#..#..##.... 207 + ....#......#.#.#...#.......#.## 208 + .#.....#.#.#........###....#... 209 + .#..#.......#...........#...#.. 210 + #.#.#####..#......#...#.#.###.. 211 + ...##...#.#.....#..#...#...#... 212 + ..#....#.....#..#....#.#.....#. 213 + ....#.......#.....#........###. 214 + ..##..........#...###.......#.. 215 + #.#.##..#........##...#.#...... 216 + ....##...#......#..........#.#. 217 + #.......#..#.##.............#.. 218 + ......#..........#...#....#...# 219 + #.#.....#.##.#.#.............## 220 + #...#.........##.##......#.##.. 221 + .........##.....#....#...##..#. 222 + #.#...##.#...#.....##...#..#..# 223 + ......##.#.....#.#.....#.##.... 224 + ....#.............#...#.......# 225 + .#......##...#.#...#.##........ 226 + ...#..#..#...........#..#..#.#. 227 + .#...#...........#.#.##....#... 228 + ..#...#...#.#..#....#..#..#.... 229 + ..###..##..#..#.........#.#..#. 230 + ....#.##.#...#.......#...#..... 231 + .#.#.................#.......#. 232 + .#..#.....#.##...#.#.....#...#. 233 + .#.......#...#....#.......#.... 234 + ###....##....#..#...#.#..##.... 235 + .........#.#.#.#...###.......## 236 + ....##.......#......#......##.. 237 + ......##.###.#..#...#.#.#.#.... 238 + .#.###.#.#......#.#.......##... 239 + .#.....##..#.#.....#...#.##.... 240 + .#..##.#.....#........###...#.# 241 + .......#.#...........#........# 242 + ..........#...##..##.......#.#. 243 + ...#..#..#...#....#.#......#.#. 244 + ....#...#..#....#....#.#.##.... 245 + ...#.#...##...#...##..#........ 246 + ..#........#...##.#...##.#.#.#. 247 + ...##.#..#.......###.#.#.#..... 248 + ..##......#.#.#.........###.#.. 249 + .......#.#...##...#.#.......#.# 250 + .#....##..#..#....#..#...#..... 251 + .#....#.#.......#..#..##.#....# 252 + #.#..##..#.#............#....#. 253 + ##..#....#.##.#....#...#..##... 254 + .###.#.#..#...##........###.##. 255 + ...........#..#...#..#.#..###.. 256 + .#.#.#...#....#...##.##........ 257 + .....###.........#......#####.. 258 + #.#.#.....#....#..#...#.#.#.#.. 259 + ..##.....#..#..#.#.#...#....#.# 260 + ......#.##..##..#.#.#.......#.. 261 + ...#.#..###.........#........#. 262 + ......#.##..####...#...#..#...# 263 + #.......#.........#....#....### 264 + #......#...#........#.##....### 265 + .#.#..............#...#...###.# 266 + .#....####...#..##.###.....#... 267 + .......#......#..#...#..##.#... 268 + ...........#.......#........... 269 + ..............#...#.#.#.#...##. 270 + .###.....##.#.....#..........#. 271 + ##.##......#....##..#.....###.# 272 + #.......#...##...#....##...#... 273 + ##.#.##...#....#....#....#..... 274 + .....####...........#.#......#. 275 + ......#...#....#..#......#..... 276 + ...#...##..........#.......##.# 277 + .#....#..........#.####........ 278 + ...##...#..#...##........##..#. 279 + .........##....#...##..#.##.#.. 280 + ##.#.....#.......#.....#....... 281 + #..#....#.##.#........#........ 282 + #.#...#...##........#.#.....### 283 + ....#...................#.#.#.. 284 + .......#..#.#...#....#.##.#.... 285 + ....##...###.#.#.##...#...#.... 286 + .#....#....#...##.#......#...#. 287 + ............##..#.#.#........#. 288 + ...#....#.....#......#........# 289 + ...#.#.....#.##.....#....#...#. 290 + .....#..##.......#.##.......#.# 291 + ........##................#.... 292 + ....#..###...##.#..#...#......# 293 + .#.#.......#.......#....##.#..# 294 + ..#........#............#...... 295 + ..##.......#..#..#....#....#..# 296 + #...###.......#.##...#......... 297 + .....#...#...#..##..#....#..#.. 298 + .##.#..#...##.........###.#.... 299 + ..#.#..#...#...####.#...#.#.#.# 300 + #....#..###.....#......#.##..## 301 + ##......#...##...###......#.##. 302 + ...........#.....##...#...#...# 303 + ..#..#.#.....#..#.....###...#.. 304 + .............#..........###...# 305 + ....##............#....###.##.# 306 + ..##.#..##.....#.#.........#.#. 307 + ....#.#...........####......... 308 + .##.###.##.#.#......#.##.#.#... 309 + .....##.........#..#.......#... 310 + ...........#.........#....###.. 311 + ...#.#..#..........#.....#..#.. 312 + .#..###.......##........#.#.... 313 + .#...###.....#..#.#..#...#.##.. 314 + ##...###.#.#....#......#...#..# 315 + ....#.......#..#..##..#.#...... 316 + #.#......#.##..#......#..#....# 317 + ....#..#..#.....#.#......#..#.. 318 + ..#...###......##.............# 319 + ..#....####...##.#...##.#...... 320 + .....#.......###............... 321 + .......#...#.#.......#.#.##.### 322 + .#.#...#.....#...##.........#.. 323 + ..#..........#..#.........##...
+11
input/day_03_sample
··· 1 + ..##....... 2 + #...#...#.. 3 + .#....#..#. 4 + ..#.#...#.# 5 + .#...##..#. 6 + ..#.##..... 7 + .#.#.#....# 8 + .#........# 9 + #.##...#... 10 + #...##....# 11 + .#..#...#.#
+83
src/day_03.rs
··· 1 + pub fn count_trees(input: &str, slope_right: usize, slope_down: usize) -> usize { 2 + let map = parse_input(input); 3 + 4 + let mut tree_collision = 0; 5 + let mut position = 0; 6 + 7 + for row in map.iter().step_by(slope_down).skip(1) { 8 + position += slope_right; 9 + position %= row.len(); 10 + 11 + if row[position] == Space::Tree { 12 + tree_collision += 1; 13 + } 14 + } 15 + 16 + tree_collision 17 + } 18 + 19 + #[derive(Debug, PartialEq)] 20 + pub enum Space { 21 + Open, 22 + Tree, 23 + } 24 + 25 + fn parse_input(input: &str) -> Vec<Vec<Space>> { 26 + let mut out = vec![]; 27 + let width = input.lines().next().unwrap().len(); 28 + 29 + for raw_row in input.lines() { 30 + let mut row = Vec::with_capacity(width); 31 + for byte in raw_row.bytes() { 32 + let space = match byte { 33 + b'.' => Space::Open, 34 + b'#' => Space::Tree, 35 + _ => { continue; } 36 + }; 37 + 38 + row.push(space); 39 + } 40 + 41 + out.push(row); 42 + } 43 + 44 + out 45 + } 46 + 47 + #[cfg(test)] 48 + mod tests { 49 + use super::{count_trees}; 50 + use std::fs::read_to_string; 51 + 52 + fn get_sample_input() -> String { 53 + read_to_string("input/day_03_sample").unwrap() 54 + } 55 + 56 + fn get_test_input() -> String { 57 + read_to_string("input/day_03").unwrap() 58 + } 59 + 60 + #[test] 61 + fn sample() { 62 + assert_eq!(7, count_trees(&get_sample_input(), 3, 1)); 63 + } 64 + 65 + #[test] 66 + fn first_challenge() { 67 + assert_eq!(205, count_trees(&get_test_input(), 3, 1)); 68 + } 69 + 70 + #[test] 71 + fn second_challenge() { 72 + let trees = get_test_input(); 73 + 74 + let tests = vec![(1, 1), (3, 1), (5, 1), (7, 1), (1, 2)]; 75 + 76 + let mut result = 1; 77 + for (slope_right, slope_down) in tests { 78 + result *= count_trees(&trees, slope_right, slope_down); 79 + } 80 + 81 + assert_eq!(3952146825, result); 82 + } 83 + }
+1
src/lib.rs
··· 1 1 pub mod day_01; 2 2 pub mod day_02; 3 + pub mod day_03;