2020 AoC, Days 1-4

This commit is contained in:
Teo-CD 2020-12-04 23:10:35 +01:00
commit ad04dffb69
9 changed files with 2782 additions and 0 deletions

36
2020/Day 3/Solution.py Normal file
View file

@ -0,0 +1,36 @@
input_file = "/tmp/aocinput"
map_table = []
with open(input_file) as slope_map:
line = slope_map.readline()
while line and line != "\n":
map_table.append(line)
line = slope_map.readline()
def check_for_trees(direction=(3,1)):
x_pos = 0
y_pos = 0
width = len(map_table[0])
height = len(map_table)
tree_count = 0
while y_pos < height-1:
x_pos,y_pos = ((x_pos+direction[0])%(width-1),y_pos+direction[1])
if map_table[y_pos][x_pos] == "#":
tree_count += 1
print(f"We came close to {tree_count} trees by going {direction}.")
return tree_count
def check_multiple_directions(directions):
result = 1
for direction in directions:
result *= check_for_trees(direction)
print(f"Result is {result}.")
check_multiple_directions([(1,1),(3,1),(5,1),(7,1),(1,2)])

323
2020/Day 3/input.txt Normal file
View file

@ -0,0 +1,323 @@
.#......#..####.....#..#.......
#.#...#...#..#.#...#.#...##.##.
#.#....#..........#...##.....##
#.#.#.....##......#.#.......###
..#..###....#.#....#.#.#..#....
.......#.#....##..##...#...#...
..#..#..#..###.......#.....#.#.
.#.......#...##...##.##......##
#.#.##..##.#..#....#..###..#.#.
#.....#.#.........#.....##.#.#.
..#.#....##..#...#...##........
......#....#..##.#.#......###..
.......#.......#......##...#...
.##.....#.......#...###.....##.
.#...#.##..##.#..##....#.......
..#......##...#..#...#.#.##.###
.##.##.....##....#..#......#.#.
.#.....#..###..#.##.#.....##.#.
......##..........#..........#.
.##....#.....#..##.#..#.#..###.
..##.......#....#...##...#..#..
.##...#.....#.###.#.#..#...#.#.
.....##.#.##..##...#...........
..#..###.##.#.#.###...###..#.#.
.#........#..#.#........#.#...#
....##.......#....#.#.##.#.....
....##........######..###..#.#.
#.#.#............#.......#..#..
...##...#.##.....#.#..#......#.
......#.##.#....##..#.#..###...
##.....#.#....#....#.##.#.###..
#..#..#..##.#..##.##.##.#.##...
.###.####..#..#........#.....##
.......##..#.......#...........
.##...#............#.#.##...#..
....##.....#...##..#..#.#..###.
...#.....#####.#..#...##....##.
#.....#.#.#....##.......##.#.#.
......#.#..#.##.#######......#.
#.##...##....#..###.#.......#..
.....##...#....#...#....##.##.#
....###......#...###..#......##
..#...##..##.######..#.#......#
......##....#....##..#......##.
.#...#..##..#.###.#......#....#
##....##..#..####.#.....#...#..
.#.......#...#.......##......#.
......#...#...#........#.......
.#........#.###...#..####.#..#.
##...#.#............#.....###..
.....###.#.##...........###..#.
.#.#...#.....#.#.##..##...####.
..##.......#..#.##.#....#.....#
.#..#.#..####.....###.#.....#..
..#..###.....####..#.##.#.#.##.
.###..#.....#......#...####....
...#.#..#.#..#...#...#....##.##
..###....#.##.....#..........#.
###...#####......##............
..###.....#........##.#...#..#.
..##.##.#.....##........##..#.#
##..#.#...#.#..#..###.#....#..#
....#..#.#.....#..#####...#....
....#.........#......##.##.....
.#...####.##......##..##.#..#.#
...#...#.##..#...##..###...#...
###...#.....#.##.###.###..#.#..
..#......#.###.....#..##.#...#.
#.....##.########...#####....#.
........##..#..##..##.#........
....#.######....##..#..#.##..#.
#.......#..##..#..#.#.#..##.##.
...#.#..#..#.......#......###.#
.#.#..#.#..#.##.#.............#
#....#.##.#.#.....#..#.#..#....
...###..#...#....#.........#.#.
.#..#.....##..#.#..#.#.......#.
..#...##...#......#......####..
....#..#.......#.......#.#..#..
#...#..#...........#.#..#.....#
#...#.#.......#...#....###....#
.#..#.#.##....#......#........#
..#...#..##..#..#..#..#...#.#..
..#.#.........#....#....##.....
##.....##.#.#.#.........##.....
.##...#.##...........#...#...##
.##..##.#.#..........##..##....
#....#....#.#...#.#..#....#.#..
####....##.....#..##.###.......
#..#....#......##.#.#....#.....
.....#....#.###.##.........###.
#.......#.####..#..#..##.......
##.#.......#..##..#....#..#.#..
..###...#.#...#.....##.##.####.
....#...#.#....#..#..#.....#.##
#.....##.#.#..#.##..#..##......
................###..#....##...
..#.##.....#..........##.#...#.
..#.#..#.#....#.#.#..#..#..#.#.
#...#..##.#.#...#..#...#..#....
#..#.#.........#..###........#.
.#...#.............#..###..#..#
#.........#.#..#...#.#.....#..#
....#..#..#.#.#...#...#.....##.
##...###.#.####..#......#...#..
..#..##...#.#......#.#.......#.
#......###....##.#.##..........
#####....###..#...............#
##.#...####....#....#...#....#.
.#.......#..#.....#...#.....###
...#..#.#.#....##......##...#..
...#.....#...#.##.#..#.#....#..
#...###....#...#.#....#........
.#.......#........#...##.##.##.
.....#....#...##.....##...###.#
....#....#.#..#...##.##.##.....
.......#............#...#.#..#.
.#............#.....##.......#.
........#....#....##......##.##
.......##..#.#..#.##..###..##.#
#..##..##.........####.#.###...
#....#..#...##...#.............
#...#...###..........##..#..#..
....#...#..#.....##...#........
#.....#......#.#.....#...#..#..
..#.....#.....#....#..#........
..#..#.....#.#.........#..###..
................###..#.#....#..
#.....#.....#.#.#.#.#..#...#.#.
#....#....#.#..........#.#....#
....#..#......#..##.#...##.....
..#.#...#.####....#.#..#.#..#..
.........##......#.....##......
##.#.###.#.....#.....####.#..#.
.....#.....#..#....#..###.#....
##..#.#...#.##....#....#.......
.....#......#.#...##..#.#......
....##..#...#...##..##.#....#.#
............#..........##.#....
##..#..#.##..##..#.#....#.#.#..
.......#.#...#...#.#...#..#....
#....#.#...#...#........#..#...
...........#.......#...##..###.
.#..##......#.##.........##..#.
...#...#...###.#.##....##.#..#.
#...#..#.#.#.....##..#.......#.
.##..#.###.##......#.#....#.#.#
..#....#.......#..#..#.#.#.##..
#...#...###...###.........#....
.#.#...#.....##.#.#..#....#.##.
.........#.#.##.....#.#.###....
...#.#...#......#...####......#
...##..##....##......##...###..
###...#..#.......##.....#....#.
...#..#..#..###...##.##..#..#..
...#......#......##..#.#.##..#.
...#.........#....#.#....#.#...
##................#..#.#.....#.
....#.##...#..#.##...##.#.....#
......#..##.##..###.#..#.##.##.
.#.#...###.....###.....##...###
.##.....#.#.#..#..###..#..#..#.
#.......#..#..#....##.....#....
...#.#.##..#..#......##.##...#.
....##.#......#...#..#..#......
.####.#..#.....#..##.#...##..##
..#..#...#..........###..#....#
.#.#.##.##...#............#....
........##..##......#.##..#.###
...#.#....###......##.......#..
..##...#...#.#..#.....#.....#..
##..#...###..#..#.#.#...#...#..
.....#..#....##.....##.....###.
....##...###.#..#.#....##..#..#
#......#...#....#......#...##..
....#.##...#.#......#.#.##...#.
.......#.....#...#####...#.#...
...#.....##.#............#.....
...#.#........#.#.#..#.........
....###......#.#.#..#.####.#..#
#.....#.#.#.....#.#.#.....#..#.
..##.##......#...#.#...........
###..###....#.#####......###...
..##..............##.#.#....#.#
#..#...#..........#..#.#.#..###
##.###............#....#.#...#.
#.#..#.#..##.#.#....#...#......
#....#...#..##.....#..#.#..###.
..#.....#.#....#.#..#.##.#..##.
...##...#.#.##...#....###....#.
......###.####.......#..#.#.#.#
.#..............##........#....
...##.##...##....#..#.......#..
.....#.....#....###...#..#..#.#
.#.....#..#.....#......#.....##
#.#.##.#..#..#.....#.##..###...
..#......#...##.###..#.#...#..#
......#.....#...##......#......
##.#........#..........#.....#.
#........##.#............##....
...#......##...#.#.....##......
...##.......#....#.#..#.#.###..
..#....##..##.##.....###....#..
..#...#.#...#.....#..........#.
......#...#...#.#.##.#...#.#.#.
.#...#......#.##........#......
.##.##..#....#...#.#...##......
#..#......#.#...........#....#.
....##.#....#...#..#....#.#..##
#....##.##....#.#..##.#........
.##.##.#....##.....#..#....#..#
...#...#.....###.#.##..........
....#...#....##.......###......
#.........#......#.#.......#...
#..........#..##..#.#..........
.....#.......#..##.##....##...#
........................#.#....
#..#.........#.............#..#
#..#.....#.......#....#....#.#.
..##..##.......##....#...#.....
.##......#..##......#.###......
...#.#........#.......##..###..
..##...###.###......#...#....##
#...#...#.....###.#.#.#..#.....
#....#.........#..##...#...##..
#..###..#.#.#.##.#..#.#....#.##
#...#.#.....#.###.#.......#....
..##..#..#....#.#...........#.#
#.........#.#......#...##......
.######......#..#....#.#.#....#
##..#.#..####.###.........#....
###########.....##.##...#..#...
#...##.#.#....#.#....#......#..
...#..##..#..##..#......#....#.
.#....#...#....#.#..##....##...
#..#.#............#....#.#...#.
...#...#..#.#.##......#..#.#...
#.#...##.....#..#.##......####.
.#.#..##..#.....#.#..#.##......
#.#.##......##.....#..#.#..#...
#..##...#.##.#.......#.##......
..#.......#.#.#...##..##...#...
.#...#..#..#.#.........#..##...
#..#.......#....#.#...#.###...#
.......#..#.......##.#.#...#.#.
.#.................###.#..###..
..........#.#.....##..#####...#
#......#.#..##.#.#...#.##.#....
#......#.#..##.##.#...#....#...
....#..#......#....#....#######
.#...#......#....###......#.###
#.#....#.#...#.###......#..#..#
.###......#.#...#.####.#..####.
######.#.....###.#...#.#.....#.
.#.###....#..#.#.....#.....####
.......###.#.........#..#......
#...#.....##.#......####.......
..#.#..##.#.#...#...#..##..##..
.....#...##.....#...##......##.
##..#..#.##..#.#......#.....#..
##.........#.#.##.#..#.#....#.#
.#........###...#.........#....
...#..#.#..#....####...........
#.#....#..##..####.#...#.##....
.#.....#.......#..........#..##
...#.......#...###..#.....#..##
.........#.###.#..##...#.##...#
.#..........##..####...#..#.#.#
.#...##...#............##...#.#
...#....#.#..........#.#..#.#..
.#.#...##....##.#.#.#....#.....
....#..#.....#.#..#.#..#.##.###
.....#.#.....#..#......#.#.#...
.....#.#.#..###..#.#..###...#..
#.......####...#.#..#......##.#
....#..#..###......###.##....#.
##.....#.....#.............#..#
#..#..#...##.....##..#..#.#....
.....#.#.###...#...............
#.#.#.....#.#..#.#...#.......#.
..##.##............#....#..##..
#....##...#.....#.###...#.#....
#...##.#.........#...#....#....
##.##.#...#.#...###..#....##..#
....#....##..#..#.......#...##.
.#...#...#..#.....#..###.#..#.#
....#..###......#....##....#...
#.#.....#....##.#..#.#...###...
.......#............#......#...
.##..#.###.#.............###...
..##...##.#.#.#.....#........##
....#.###....#..#..#...#...#..#
.....#...#...#..#....#.....##..
###.#.#.....#......####.....#..
#.#.###............#......#....
..#.....#..#..#..#....#......#.
#...######...#....#.##...##.#.#
##.#.#.#..##......##.#..#.#...#
............#.#..#.##....#.....
......#............#.#...#..#.#
.#..##...##..#.#.#..###.....##.
#.###.#...........#...#....#...
....##.....#...##...#...###.#.#
.####.#.#.....#.#..#.#.##......
.#...##......###...#..##..#.#..
.#......#...#....##.....##..#..
..........##.....###.##.#...#.#
.#........##.#..............#..
#...###..#...#.....#....#.....#
...#......#..#...#...#..###.#..
.#...##..#........#.......#.#..
.#.#.##.........##.##......#..#
#...#.#.#...#.....#.#...#.#..#.
#.#..#...#...#...##..........#.
.#...........#....#..#.#..#.#..
#.......#......#..#...#........
.....#..#...##..###..##........
......#...#.....#..#.#.#....##.
....##..##..##....###.##.......
.#........##.#.#...#..#........
.....##...##...#......#..#...#.
..#.....#....###.#..##....#..#.
......#..#...####.#.....##.####