41 lines
895 B
Python
41 lines
895 B
Python
from grid import Grid
|
|
|
|
|
|
def main():
|
|
with open("day3.txt", "rt") as f:
|
|
lines = [line.rstrip() for line in f.readlines()]
|
|
g = Grid(lambda: ".")
|
|
g.load(lines)
|
|
g_width = len(lines[0])
|
|
g_height = len(lines)
|
|
|
|
# Part 1
|
|
x, y = 0, 0
|
|
num_trees = 0
|
|
while y < g_height:
|
|
x += 3
|
|
x %= g_width
|
|
y += 1
|
|
if g.getv(x, y) == "#":
|
|
num_trees += 1
|
|
print("Trees encountered:", num_trees)
|
|
|
|
# Part 2
|
|
v = 1
|
|
for xx, yy in [(1, 1), (3, 1), (5, 1), (7, 1), (1, 2)]:
|
|
x, y = 0, 0
|
|
num_trees = 0
|
|
while y < g_height:
|
|
x += xx
|
|
x %= g_width
|
|
y += yy
|
|
if g.getv(x, y) == "#":
|
|
num_trees += 1
|
|
print(f"Slope ({xx}, {yy}), trees encountered:", num_trees)
|
|
v *= num_trees
|
|
print("Value:", v)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|