diff options
| author | mhsn <mail@mhsn.net> | 2025-12-02 20:34:30 +0000 |
|---|---|---|
| committer | mhsn <mail@mhsn.net> | 2025-12-02 20:34:30 +0000 |
| commit | 722348968e0433d245d96fdbc82fc5311d02505a (patch) | |
| tree | 8f00761e0da46dbb5e4babecbe2b3a8a09be2d5a | |
| parent | 55b550b3f901edf10073e3e04ca52997422206ac (diff) | |
| download | aoc-722348968e0433d245d96fdbc82fc5311d02505a.tar.gz aoc-722348968e0433d245d96fdbc82fc5311d02505a.zip | |
25-02 python p2
| -rwxr-xr-x | 2025/02/python.py | 34 |
1 files changed, 24 insertions, 10 deletions
diff --git a/2025/02/python.py b/2025/02/python.py index 2e55ec1..120036c 100755 --- a/2025/02/python.py +++ b/2025/02/python.py @@ -1,19 +1,33 @@ #!/usr/bin/env python3 -from fileinput import input -from math import log10 +xs = [ + str(x) + for r in input().split(",") + for [a, b] in [r.split("-")] + for x in range(int(a), int(b) + 1) +] -rs = [[int(i) for i in r.split("-")] for r in "".join(input()).split(",")] +def invalid(x: str, n: int): + p, q = divmod(len(x), n) + return ( + p != 0 + and q == 0 + and len( + { + x[a:b] + for a, b in zip( + range(0, len(x) + 1, p), + range(p, len(x) + 1, p), + ) + } + ) + == 1 + ) -def invalid(i): - d = int(log10(i)) + 1 - a, b = divmod(i, 10 ** (d // 2)) - return a == b - -silver = sum(x for [a, b] in rs for x in range(a, b + 1) if invalid(x)) -gold = 0 +silver = sum(int(x) for x in xs if invalid(x, 2)) +gold = sum(int(x) for x in xs if any(invalid(x, n) for n in range(2, len(x) + 1))) print("silver:", silver) print("gold:", gold) |
