diff options
Diffstat (limited to '2025/05')
| -rw-r--r-- | 2025/05/a.py | 15 | ||||
| -rw-r--r-- | 2025/05/b.py | 26 |
2 files changed, 39 insertions, 2 deletions
diff --git a/2025/05/a.py b/2025/05/a.py index 5fdb11b..b2699ba 100644 --- a/2025/05/a.py +++ b/2025/05/a.py | |||
| @@ -1,6 +1,17 @@ | |||
| 1 | import fileinput | 1 | import fileinput |
| 2 | 2 | ||
| 3 | rang = True | ||
| 4 | ranges = [] | ||
| 5 | s = 0 | ||
| 3 | with fileinput.input() as lines: | 6 | with fileinput.input() as lines: |
| 4 | for line in lines: | 7 | for line in lines: |
| 5 | ... | 8 | if line == '\n': |
| 6 | 9 | rang = False | |
| 10 | elif rang: | ||
| 11 | i = line.find('-') | ||
| 12 | ranges.append((int(line[:i]), int(line[i+1:-1]))) | ||
| 13 | else: | ||
| 14 | x = int(line[:-1]) | ||
| 15 | if any(x >= r[0] and x <= r[1] for r in ranges): | ||
| 16 | s += 1 | ||
| 17 | print(s) | ||
diff --git a/2025/05/b.py b/2025/05/b.py new file mode 100644 index 0000000..09bc5e4 --- /dev/null +++ b/2025/05/b.py | |||
| @@ -0,0 +1,26 @@ | |||
| 1 | import fileinput | ||
| 2 | |||
| 3 | def overlap(r1, r2): | ||
| 4 | return min(r1[1], r2[1]) >= max(r1[0], r2[0]) | ||
| 5 | |||
| 6 | def fuse(r1, r2): | ||
| 7 | return (min(r1[0], r2[0]), max(r1[1], r2[1])) | ||
| 8 | |||
| 9 | ranges = [] | ||
| 10 | with fileinput.input() as lines: | ||
| 11 | for line in lines: | ||
| 12 | if line == '\n': | ||
| 13 | break | ||
| 14 | i = line.find('-') | ||
| 15 | ranges.append((int(line[:i]), int(line[i+1:-1]))) | ||
| 16 | |||
| 17 | s = set() | ||
| 18 | for r in ranges: | ||
| 19 | c = r | ||
| 20 | for rr in list(s): | ||
| 21 | if overlap(c, rr): | ||
| 22 | c = fuse(c, rr) | ||
| 23 | s.remove(rr) | ||
| 24 | s.add(c) | ||
| 25 | |||
| 26 | print(sum(r[1] - r[0] + 1 for r in s)) | ||
