day20 - formula simplification

This commit is contained in:
Stefan Harmuth 2024-12-21 06:00:39 +01:00
parent 3a3d018078
commit dbd7c236a9

View File

@ -5,16 +5,14 @@ from typing import Any
def get_cheat_count(track: list[Coordinate], check_len: int, need_save: int = 100) -> int: def get_cheat_count(track: list[Coordinate], check_len: int, need_save: int = 100) -> int:
total_dist = len(track)
ans = 0 ans = 0
for i, c in enumerate(track[:-need_save]): for i, c in enumerate(track[:-need_save]):
for j, n in enumerate(track[i + 2 :]): for j, n in enumerate(track[i + need_save :]):
dist = c.getDistanceTo(n, algorithm=DistanceAlgorithm.MANHATTAN, includeDiagonals=False) dist = c.getDistanceTo(n, algorithm=DistanceAlgorithm.MANHATTAN, includeDiagonals=False)
if dist > check_len: if dist > check_len or j - dist < 0:
continue continue
saved = total_dist - (i + dist + (total_dist - i - (j + 2)))
if saved >= need_save: ans += 1
ans += 1
return ans return ans