mirror of
https://github.com/Crocmagnon/advent-of-code.git
synced 2024-11-21 14:08:11 +01:00
37 lines
1.1 KiB
Python
37 lines
1.1 KiB
Python
def main(filename: str, expected_part_1: int = None, expected_part_2: int = None):
|
|
print(f"\n+ Running on {filename}")
|
|
with open(filename) as f:
|
|
data = f.read().strip().split("\n\n")
|
|
|
|
data = parse_data(data)
|
|
solution_part_1 = solve_part_1(data)
|
|
|
|
print(f"1. Found {solution_part_1}")
|
|
if expected_part_1:
|
|
assert expected_part_1 == solution_part_1
|
|
|
|
solution_part_2 = solve_part_2(data)
|
|
print(f"2. Found {solution_part_2}")
|
|
if expected_part_2:
|
|
assert expected_part_2 == solution_part_2
|
|
|
|
|
|
def parse_data(data: list[str]) -> list[int]:
|
|
split_lines = []
|
|
for group in data:
|
|
split_lines.append(list(map(int, group.split("\n"))))
|
|
sums = [sum(group) for group in split_lines]
|
|
return sums
|
|
|
|
|
|
def solve_part_1(data: list[int]) -> int:
|
|
return max(data)
|
|
|
|
|
|
def solve_part_2(data: list[int]) -> int:
|
|
return sum(sorted(data, reverse=True)[:3])
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main("inputs/day01-test1", expected_part_1=24000, expected_part_2=45000)
|
|
main("inputs/day01", expected_part_1=70296, expected_part_2=205381)
|