generated from public/aoc_template
day20 - formula simplification
This commit is contained in:
parent
3a3d018078
commit
dbd7c236a9
10
day20.py
10
day20.py
@ -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
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user