Solution to problem 3 part 2 in Python
This commit is contained in:
parent
65e0c24b9d
commit
77c370f13b
82
src/P3.py
82
src/P3.py
@ -85,5 +85,87 @@ def part_1() -> None:
|
|||||||
print(f"We found {trees_found} trees in our way")
|
print(f"We found {trees_found} trees in our way")
|
||||||
|
|
||||||
|
|
||||||
|
# --- Part Two ---
|
||||||
|
|
||||||
|
# Time to check the rest of the slopes - you need to minimize the probability
|
||||||
|
# of a sudden arboreal stop, after all.
|
||||||
|
|
||||||
|
# Determine the number of trees you would encounter if, for each of the
|
||||||
|
# following slopes, you start at the top-left corner and traverse the map all
|
||||||
|
# the way to the bottom:
|
||||||
|
|
||||||
|
# Right 1, down 1.
|
||||||
|
# Right 3, down 1. (This is the slope you already checked.)
|
||||||
|
# Right 5, down 1.
|
||||||
|
# Right 7, down 1.
|
||||||
|
# Right 1, down 2.
|
||||||
|
|
||||||
|
# In the above example, these slopes would find 2, 7, 3, 4, and 2 tree(s)
|
||||||
|
# respectively; multiplied together, these produce the answer 336.
|
||||||
|
|
||||||
|
# What do you get if you multiply together the number of trees encountered on
|
||||||
|
# each of the listed slopes?
|
||||||
|
|
||||||
|
|
||||||
|
def part_2() -> None:
|
||||||
|
pos = 0
|
||||||
|
trees_first = 0
|
||||||
|
# first slope: right 1, down 1
|
||||||
|
for idx, line in enumerate(forest):
|
||||||
|
extended_line = ",".join(line * 11).replace(",", "")
|
||||||
|
if extended_line[pos] == "#":
|
||||||
|
trees_first += 1
|
||||||
|
pos += 1
|
||||||
|
|
||||||
|
# reset pos
|
||||||
|
pos = 0
|
||||||
|
trees_second = 0
|
||||||
|
# second slope: right 3, down 1
|
||||||
|
for idx, line in enumerate(forest):
|
||||||
|
extended_line = ",".join(line * 32).replace(",", "")
|
||||||
|
if extended_line[pos] == "#":
|
||||||
|
trees_second += 1
|
||||||
|
pos += 3
|
||||||
|
|
||||||
|
# reset pos
|
||||||
|
pos = 0
|
||||||
|
trees_third = 0
|
||||||
|
# third slope: right 5, down 1
|
||||||
|
for idx, line in enumerate(forest):
|
||||||
|
extended_line = ",".join(line * 55).replace(",", "")
|
||||||
|
if extended_line[pos] == "#":
|
||||||
|
trees_third += 1
|
||||||
|
pos += 5
|
||||||
|
|
||||||
|
# reset pos
|
||||||
|
pos = 0
|
||||||
|
trees_fourth = 0
|
||||||
|
# fourth slope: right 7, down 1
|
||||||
|
for idx, line in enumerate(forest):
|
||||||
|
extended_line = ",".join(line * 77).replace(",", "")
|
||||||
|
if extended_line[pos] == "#":
|
||||||
|
trees_fourth += 1
|
||||||
|
pos += 7
|
||||||
|
|
||||||
|
# reset pos
|
||||||
|
pos = 0
|
||||||
|
trees_fifth = 0
|
||||||
|
# fifth slope: right 1, down 2
|
||||||
|
for idx, line in enumerate(forest):
|
||||||
|
if idx % 2 == 0:
|
||||||
|
# break
|
||||||
|
extended_line = ",".join(line * 6).replace(",", "")
|
||||||
|
if extended_line[pos] == "#":
|
||||||
|
trees_fifth += 1
|
||||||
|
pos += 1
|
||||||
|
|
||||||
|
total_trees = (
|
||||||
|
trees_first * trees_second * trees_third * trees_fourth * trees_fifth
|
||||||
|
)
|
||||||
|
|
||||||
|
print(f"We found {total_trees} trees in our way")
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
part_1()
|
part_1()
|
||||||
|
part_2()
|
||||||
|
Loading…
Reference in New Issue
Block a user