Skip to content

Commit 9f1b953

Browse files
committed
D03.
1 parent 3aea7cd commit 9f1b953

File tree

4 files changed

+389
-0
lines changed

4 files changed

+389
-0
lines changed

day03/Cargo.lock

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

day03/Cargo.toml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
[package]
2+
name = "day03"
3+
version = "0.1.0"
4+
authors = ["Quint <me@di-wu.be>"]
5+
edition = "2018"
6+
7+
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
8+
9+
[dependencies]

day03/src/input

Lines changed: 323 additions & 0 deletions
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+
..#..#........#...#.......#....

day03/src/main.rs

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
use std::time::Instant;
2+
3+
fn main() {
4+
let raw_input = include_str!("./input");
5+
let grid: Vec<Vec<bool>> = raw_input
6+
.lines()
7+
.map(|x| x
8+
.chars()
9+
.map(|x| x == '#') // Map characters to booleans.
10+
.collect()
11+
)
12+
.collect();
13+
14+
let start = Instant::now();
15+
// part1::naive(&numbers);
16+
println!("Solution for PART 1: {}", part1(&grid));
17+
println!("Finished after {:?}", start.elapsed());
18+
19+
let start = Instant::now();
20+
// part1::naive(&numbers);
21+
println!("Solution for PART 2: {}", part2(&grid));
22+
println!("Finished after {:?}", start.elapsed());
23+
}
24+
25+
fn part1(grid: &Vec<Vec<bool>>) -> usize {
26+
return traverse(grid, 3, 1);
27+
}
28+
29+
fn part2(grid: &Vec<Vec<bool>>) -> usize {
30+
return traverse(grid, 1, 1)
31+
* traverse(grid, 3, 1)
32+
* traverse(grid, 5, 1)
33+
* traverse(grid, 7, 1)
34+
* traverse(grid, 1, 2);
35+
}
36+
37+
fn traverse(grid: &Vec<Vec<bool>>, x: usize, y: usize) -> usize {
38+
let mut trees: usize = 0; // Amount of trees encountered.
39+
let mut x_pos: usize = 0; // Current x position.
40+
for row in (0..grid.len()).step_by(y) {
41+
// Add one to trees if we encounter one.
42+
if grid[row][x_pos] {
43+
trees += 1;
44+
}
45+
46+
// Move x to the right.
47+
x_pos += x;
48+
// Wrap around of x_pos >= length of the row.
49+
x_pos %= grid[row].len();
50+
}
51+
return trees;
52+
}

0 commit comments

Comments
 (0)