Skip to content

Commit 0dbd898

Browse files
committed
Solution for problem 3
1 parent 1021fdd commit 0dbd898

File tree

4 files changed

+426
-0
lines changed

4 files changed

+426
-0
lines changed

2020/3/code.py

+55
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
# Advent of code Year 2020 Day 3 solution
2+
# Author = ?
3+
# Date = December 2020
4+
5+
import functools
6+
7+
def parse_line(line):
8+
def is_tree(char):
9+
return char == '#'
10+
11+
return [is_tree(char) for char in line]
12+
13+
with open((__file__.rstrip("code.py")+"input.txt"), 'r') as input_file:
14+
tree_map = [parse_line(line.strip()) for line in input_file.readlines()]
15+
16+
def trees_hit_for_slope(tree_map, rise, run):
17+
x, y = 0, 0
18+
trees_hit = 0
19+
20+
height = len(tree_map)
21+
width = len(tree_map[0])
22+
23+
while y < height:
24+
if tree_map[y][x % width]:
25+
trees_hit += 1
26+
27+
x += run
28+
y += rise
29+
30+
return trees_hit
31+
32+
def part1(tree_map):
33+
return trees_hit_for_slope(tree_map, 1, 3)
34+
35+
def part2(tree_map):
36+
slopes = [
37+
[1, 1],
38+
[1, 3],
39+
[1, 5],
40+
[1, 7],
41+
[2, 1]
42+
]
43+
44+
trees_hit = [trees_hit_for_slope(tree_map, *slope) for slope in slopes]
45+
46+
return functools.reduce(lambda x, y: x * y, trees_hit)
47+
48+
def main():
49+
part1_answer = part1(tree_map)
50+
print(f'Part 1: {part1_answer}')
51+
52+
part2_answer = part2(tree_map)
53+
print(f'Part 2: {part2_answer}')
54+
55+
main()

2020/3/input.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+
...###.###.....##..........#..#

2020/3/link.url

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
[InternetShortcut]
2+
URL=https://adventofcode.com/2020/day/3

0 commit comments

Comments
 (0)