diff options
Diffstat (limited to '2025/06/python.py')
| -rwxr-xr-x | 2025/06/python.py | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/2025/06/python.py b/2025/06/python.py index 0f0aeb9..4c57829 100755 --- a/2025/06/python.py +++ b/2025/06/python.py @@ -2,14 +2,17 @@ from math import prod from fileinput import input +from itertools import takewhile, repeat -lines = [line.strip() for line in input()] -nums = [map(int, row.split()) for row in lines[:-1]] -fs = [prod if s == "*" else sum for s in lines[-1].split()] +*nums, ops = [line.strip("\n") for line in input()] +ops = [prod if op == "*" else sum for op in ops.split()] +horizontal = [map(int, row.split()) for row in nums] +silver = sum(op(chunk) for op, chunk in zip(ops, zip(*horizontal))) -silver = sum(f(ns) for f, ns in zip(fs, zip(*nums))) -gold = 0 +vertical = ("".join(ds).strip() for ds in [*zip(*nums)]) +chunks = repeat(lambda: [*map(int, takewhile(bool, vertical))]) +gold = sum(op(chunk()) for op, chunk in zip(ops, chunks)) print("silver:", silver) print("gold:", gold) |
