generated from public/aoc_template
day05
This commit is contained in:
parent
3592f06064
commit
c1673d910c
55
day05.py
Normal file
55
day05.py
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
from tools.aoc import AOCDay
|
||||||
|
from typing import Any
|
||||||
|
|
||||||
|
|
||||||
|
class Day(AOCDay):
|
||||||
|
inputs = [
|
||||||
|
[
|
||||||
|
(3, "input5_test"),
|
||||||
|
(782, "input5"),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
(14, "input5_test"),
|
||||||
|
(353863745078671, "input5"),
|
||||||
|
]
|
||||||
|
]
|
||||||
|
|
||||||
|
def parse_input(self) -> (list[tuple[int, int]], list[int]):
|
||||||
|
ranges, ids = self.getMultiLineInputAsArray()
|
||||||
|
|
||||||
|
return [tuple(map(int, x.split("-"))) for x in ranges], list(map(int, ids))
|
||||||
|
|
||||||
|
|
||||||
|
def part1(self) -> Any:
|
||||||
|
ranges, ids = self.parse_input()
|
||||||
|
|
||||||
|
ans = 0
|
||||||
|
for _id in ids:
|
||||||
|
for _range in ranges:
|
||||||
|
if _range[0] <= _id <= _range[1]:
|
||||||
|
ans += 1
|
||||||
|
break
|
||||||
|
return ans
|
||||||
|
|
||||||
|
def part2(self) -> Any:
|
||||||
|
ranges, _ = self.parse_input()
|
||||||
|
|
||||||
|
checked = []
|
||||||
|
for _range in ranges:
|
||||||
|
for c in checked.copy():
|
||||||
|
if (c[0] <= _range[0] <= c[1] + 1) or (c[1] >= _range[1] >= c[0]) or (_range[0] <= c[0] and _range[1] >= c[1]):
|
||||||
|
checked.remove(c)
|
||||||
|
_range = (min(_range[0], c[0]), max(_range[1], c[1]))
|
||||||
|
|
||||||
|
checked.append(_range)
|
||||||
|
|
||||||
|
ans = 0
|
||||||
|
for _range in checked:
|
||||||
|
ans += _range[1] - _range[0] + 1
|
||||||
|
|
||||||
|
return ans
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
day = Day(2025, 5)
|
||||||
|
day.run(verbose=True)
|
||||||
1187
inputs/input5
Normal file
1187
inputs/input5
Normal file
File diff suppressed because it is too large
Load Diff
11
inputs/input5_test
Normal file
11
inputs/input5_test
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
3-5
|
||||||
|
10-14
|
||||||
|
16-20
|
||||||
|
12-18
|
||||||
|
|
||||||
|
1
|
||||||
|
5
|
||||||
|
8
|
||||||
|
11
|
||||||
|
17
|
||||||
|
32
|
||||||
Loading…
Reference in New Issue
Block a user