Solve day6
This commit is contained in:
31
day6/part2.py
Normal file
31
day6/part2.py
Normal file
@@ -0,0 +1,31 @@
|
||||
from math import prod
|
||||
from pathlib import Path
|
||||
|
||||
FILE = "input.txt"
|
||||
|
||||
def main():
|
||||
raw_lines = Path(FILE).read_text().splitlines()
|
||||
operators = raw_lines[-1].split()
|
||||
operands: zip[tuple[str]] = zip(*raw_lines[:-1])
|
||||
|
||||
vals: list[int] = []
|
||||
sum = 0
|
||||
for val in operands:
|
||||
if all(v == ' ' or v == '' for v in val):
|
||||
sum += compute(vals, operators.pop(0))
|
||||
vals = []
|
||||
continue
|
||||
vals.append(int("".join(val).strip()))
|
||||
return sum + compute(vals, operators.pop(0))
|
||||
|
||||
def compute(vals: list[int], op: str) -> int:
|
||||
if op == '+':
|
||||
return sum(vals)
|
||||
elif op == '*':
|
||||
return prod(vals)
|
||||
else:
|
||||
print(f"unknown operator: {op}")
|
||||
return 0
|
||||
|
||||
if __name__ == "__main__":
|
||||
print(main())
|
||||
Reference in New Issue
Block a user