diff --git a/day07/day07.py b/day07/day07.py index 7116d43..199c6e2 100755 --- a/day07/day07.py +++ b/day07/day07.py @@ -3,6 +3,10 @@ import sys from typing import Sequence +def rangesum(rn: range): + return (((rn.stop + 1) * rn.stop) // 2) - (((rn.start + 1) * rn.start) // 2) + + def part1(positions: Sequence[int]): lo = min(positions) hi = max(positions) @@ -15,10 +19,10 @@ def part1(positions: Sequence[int]): def part2(positions: Sequence[int]): lo = min(positions) hi = max(positions) - diffs = [] + ranges = [] for i in range(lo, hi + 1): - diffs += [sum(sum(range(abs(pos - i) + 1)) for pos in positions)] - + ranges += [[range(abs(pos - i)) for pos in positions]] + diffs = [sum(rangesum(r) for r in rs) for rs in ranges] print(min(diffs))