2021 Day 07
This commit is contained in:
22
2021/07/code.py
Normal file
22
2021/07/code.py
Normal file
@@ -0,0 +1,22 @@
|
||||
# SPDX-License-Identifier: MIT
|
||||
# Copyright (c) 2021 Akumatic
|
||||
#
|
||||
# https://adventofcode.com/2021/day/06
|
||||
|
||||
def read_file(filename: str = "input.txt") -> list:
|
||||
with open(f"{__file__.rstrip('code.py')}{filename}", "r") as f:
|
||||
return [int(x) for x in f.read().strip().split(",")]
|
||||
|
||||
def calculate_distances(positions):
|
||||
return [[abs(p-r) for p in positions] for r in range(min(positions), max(positions)+1)]
|
||||
|
||||
def part1(vals: list) -> int:
|
||||
return min(sum(dists) for dists in calculate_distances(vals))
|
||||
|
||||
def part2(vals: list) -> int:
|
||||
return min(sum((d*d+d)//2 for d in dists) for dists in calculate_distances(vals))
|
||||
|
||||
if __name__ == "__main__":
|
||||
vals = read_file()
|
||||
print(f"Part 1: {part1(vals)}")
|
||||
print(f"Part 2: {part2(vals)}")
|
Reference in New Issue
Block a user