Skip to content

Commit f37a64d

Browse files
committed
Solution to day 3
1 parent ed5c327 commit f37a64d

File tree

4 files changed

+359
-0
lines changed

4 files changed

+359
-0
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
target/*

input/2020/day3.txt

+323
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,323 @@
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+
.##...##....#...#....#..###.#.#

src/day3.rs

+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
#[aoc_generator(day3)]
2+
pub fn generator_input(input: &str) -> Vec<String> {
3+
input.lines().map(|a| a.to_string()).collect()
4+
}
5+
6+
#[aoc(day3, part1)]
7+
pub fn solve1(ski_map: &Vec<String>) -> u64 {
8+
return solve(ski_map, 1, 3);
9+
}
10+
11+
#[aoc(day3, part2)]
12+
pub fn solve2(ski_map: &Vec<String>) -> u64 {
13+
solve(ski_map, 1, 1) * solve(ski_map, 1, 3) * solve(ski_map, 1, 5) * solve(ski_map, 1, 7) * solve(ski_map, 2, 1)
14+
}
15+
16+
pub fn solve(ski_map: &Vec<String>, slope_rise: usize, slope_run: usize) -> u64 {
17+
let mut trees_hit: u64 = 0;
18+
let mut column: usize = 0;
19+
20+
let maximum_rows = ski_map.len();
21+
let maximum_columns = ski_map[0].len();
22+
23+
for row in (0..maximum_rows).step_by(slope_rise) {
24+
let square = ski_map[row].chars().nth(column).unwrap();
25+
26+
if square == '#' {
27+
trees_hit += 1;
28+
}
29+
30+
column = (column + slope_run) % maximum_columns;
31+
}
32+
33+
return trees_hit;
34+
}

src/lib.rs

+1
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,6 @@ extern crate aoc_runner_derive;
55

66
pub mod day1;
77
pub mod day2;
8+
pub mod day3;
89

910
aoc_lib!{ year = 2020 }

0 commit comments

Comments
 (0)