diff options
| author | mhsn <mail@mhsn.net> | 2025-12-06 11:38:48 +0000 |
|---|---|---|
| committer | mhsn <mail@mhsn.net> | 2025-12-06 12:57:19 +0000 |
| commit | 61deb3f67b80fc1d9dd7946cb24f1f1dfbb9cedd (patch) | |
| tree | f9c8e23bc0873acb39e1893698067281ef001525 | |
| parent | 4ccb030e234e34cb6a3fdc73f1158ab1b1a9020e (diff) | |
| download | aoc-61deb3f67b80fc1d9dd7946cb24f1f1dfbb9cedd.tar.gz aoc-61deb3f67b80fc1d9dd7946cb24f1f1dfbb9cedd.zip | |
25-06 python p2
| -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) |
