38 lines
839 B
Python
38 lines
839 B
Python
|
def read_file():
|
||
|
with open("input.txt","r") as f:
|
||
|
return f.read().split('\n')
|
||
|
|
||
|
def part1(tree_map):
|
||
|
width = len(tree_map[0])
|
||
|
trees_encountered = 0
|
||
|
for i, line in enumerate(tree_map):
|
||
|
if tree_map[i][3*i % width] == "#":
|
||
|
trees_encountered += 1
|
||
|
return trees_encountered
|
||
|
|
||
|
def part2(tree_map, right, down):
|
||
|
height = len(tree_map)
|
||
|
width = len(tree_map[0])
|
||
|
trees_encountered = 0
|
||
|
i = 0
|
||
|
j = 0
|
||
|
while i < height:
|
||
|
if tree_map[i][(j % width)] == "#":
|
||
|
trees_encountered += 1
|
||
|
i += down
|
||
|
j += right
|
||
|
return trees_encountered
|
||
|
|
||
|
def main():
|
||
|
tree_map = read_file()
|
||
|
print(f'Part 1: {part1(tree_map)}')
|
||
|
a = part2(tree_map, 1, 1)
|
||
|
b = part2(tree_map, 3, 1)
|
||
|
assert b == part1(tree_map)
|
||
|
c = part2(tree_map, 5, 1)
|
||
|
d = part2(tree_map, 7, 1)
|
||
|
e = part2(tree_map, 1, 2)
|
||
|
print(f'Part 2: {a*b*c*d*e}')
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
main()
|