From a91612ebd9b5994f3f3aa8fd54c8e5a54ebe4acf Mon Sep 17 00:00:00 2001 From: mhsn Date: Fri, 5 Dec 2025 09:53:48 +0000 Subject: 25-05 python --- 2025/05/python.py | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100755 2025/05/python.py (limited to '2025/05/python.py') diff --git a/2025/05/python.py b/2025/05/python.py new file mode 100755 index 0000000..9977623 --- /dev/null +++ b/2025/05/python.py @@ -0,0 +1,39 @@ +#!/usr/bin/env python3 + +from itertools import takewhile +from fileinput import input + + +inp = map(str.strip, input()) +rs = [tuple(map(int, r.split("-"))) for r in takewhile(bool, inp)] +ids = list(map(int, inp)) + + +def add(a: int, b: int, c: int, d: int) -> tuple[int, int] | None: + if c < a: + return add(c, d, a, b) + if b < c: + return None + return (a, max(b, d)) + + +done = False +while not done: + ms = [] + for r in rs: + for idx, m in enumerate(ms): + if new := add(*r, *m): + ms[idx] = new + break + + else: + ms.append(r) + done = len(rs) == len(ms) + rs = ms + + +silver = sum(1 for i in ids if any(lo <= i <= hi for lo, hi in rs)) +gold = sum(b - a + 1 for a, b in rs) + +print("silver:", silver) +print("gold:", gold) -- cgit v1.2.3