Skip to content

Commit 17b1d13

Browse files
completed Day 3 part 1
1 parent 88fc9d1 commit 17b1d13

File tree

5 files changed

+426
-0
lines changed

5 files changed

+426
-0
lines changed

day3/README.txt

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
--- Day 3: Toboggan Trajectory ---
2+
With the toboggan login problems resolved, you set off toward the airport. While travel by toboggan might be easy, it's certainly not safe: there's very minimal steering and the area is covered in trees. You'll need to see which angles will take you near the fewest trees.
3+
4+
Due to the local geology, trees in this area only grow on exact integer coordinates in a grid. You make a map (your puzzle input) of the open squares (.) and trees (#) you can see. For example:
5+
6+
..##.......
7+
#...#...#..
8+
.#....#..#.
9+
..#.#...#.#
10+
.#...##..#.
11+
..#.##.....
12+
.#.#.#....#
13+
.#........#
14+
#.##...#...
15+
#...##....#
16+
.#..#...#.#
17+
These aren't the only trees, though; due to something you read about once involving arboreal genetics and biome stability, the same pattern repeats to the right many times:
18+
19+
..##.........##.........##.........##.........##.........##....... --->
20+
#...#...#..#...#...#..#...#...#..#...#...#..#...#...#..#...#...#..
21+
.#....#..#..#....#..#..#....#..#..#....#..#..#....#..#..#....#..#.
22+
..#.#...#.#..#.#...#.#..#.#...#.#..#.#...#.#..#.#...#.#..#.#...#.#
23+
.#...##..#..#...##..#..#...##..#..#...##..#..#...##..#..#...##..#.
24+
..#.##.......#.##.......#.##.......#.##.......#.##.......#.##..... --->
25+
.#.#.#....#.#.#.#....#.#.#.#....#.#.#.#....#.#.#.#....#.#.#.#....#
26+
.#........#.#........#.#........#.#........#.#........#.#........#
27+
#.##...#...#.##...#...#.##...#...#.##...#...#.##...#...#.##...#...
28+
#...##....##...##....##...##....##...##....##...##....##...##....#
29+
.#..#...#.#.#..#...#.#.#..#...#.#.#..#...#.#.#..#...#.#.#..#...#.# --->
30+
You start on the open square (.) in the top-left corner and need to reach the bottom (below the bottom-most row on your map).
31+
32+
The toboggan can only follow a few specific slopes (you opted for a cheaper model that prefers rational numbers); start by counting all the trees you would encounter for the slope right 3, down 1:
33+
34+
From your starting position at the top-left, check the position that is right 3 and down 1. Then, check the position that is right 3 and down 1 from there, and so on until you go past the bottom of the map.
35+
36+
The locations you'd check in the above example are marked here with O where there was an open square and X where there was a tree:
37+
38+
..##.........##.........##.........##.........##.........##....... --->
39+
#..O#...#..#...#...#..#...#...#..#...#...#..#...#...#..#...#...#..
40+
.#....X..#..#....#..#..#....#..#..#....#..#..#....#..#..#....#..#.
41+
..#.#...#O#..#.#...#.#..#.#...#.#..#.#...#.#..#.#...#.#..#.#...#.#
42+
.#...##..#..X...##..#..#...##..#..#...##..#..#...##..#..#...##..#.
43+
..#.##.......#.X#.......#.##.......#.##.......#.##.......#.##..... --->
44+
.#.#.#....#.#.#.#.O..#.#.#.#....#.#.#.#....#.#.#.#....#.#.#.#....#
45+
.#........#.#........X.#........#.#........#.#........#.#........#
46+
#.##...#...#.##...#...#.X#...#...#.##...#...#.##...#...#.##...#...
47+
#...##....##...##....##...#X....##...##....##...##....##...##....#
48+
.#..#...#.#.#..#...#.#.#..#...X.#.#..#...#.#.#..#...#.#.#..#...#.# --->
49+
In this example, traversing the map using this slope would cause you to encounter 7 trees.
50+
51+
Starting at the top-left corner of your map and following a slope of right 3 and down 1, how many trees would you encounter?

day3/__init__.py

Whitespace-only changes.

day3/input.txt

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

0 commit comments

Comments
 (0)