Skip to content

Commit 0d5bb5b

Browse files
committed
day20: re-use part 2 for part 1
1 parent 92ec5f4 commit 0d5bb5b

File tree

1 file changed

+14
-21
lines changed

1 file changed

+14
-21
lines changed

day20.py

Lines changed: 14 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -15,25 +15,18 @@
1515
y, x = ny, nx
1616
break
1717

18-
limit = 100
19-
cheats = 0
20-
for y, x in path:
21-
for dy, dx in ((2, 0), (0, 2), (-2, 0), (0, -2)):
22-
ny, nx = y + dy, x + dx
23-
if 0 <= ny < len(grid) and 0 <= nx < len(grid[ny]) and isinstance(grid[ny][nx], int) \
24-
and grid[ny][nx] >= grid[y][x] + limit + 2:
25-
cheats += 1
26-
print(f"part 1 = {cheats}")
18+
def find_cheats(length):
19+
cheats = 0
20+
for y, x in path:
21+
for dy in range(-length, length+1):
22+
ny = y + dy
23+
if 0 <= ny < len(grid):
24+
for dx in range(-(length-abs(dy)), length-abs(dy)+1):
25+
nx = x + dx
26+
if 0 <= nx < len(grid[ny]) and isinstance(grid[ny][nx], int) \
27+
and grid[ny][nx] >= grid[y][x] + 100 + abs(dy) + abs(dx):
28+
cheats += 1
29+
return cheats
2730

28-
cheats2 = 0
29-
length = 20
30-
for y, x in path:
31-
for dy in range(-length, length+1):
32-
ny = y + dy
33-
if 0 <= ny < len(grid):
34-
for dx in range(-(length-abs(dy)), length-abs(dy)+1):
35-
nx = x + dx
36-
if 0 <= nx < len(grid[ny]) and isinstance(grid[ny][nx], int) \
37-
and grid[ny][nx] >= grid[y][x] + limit + abs(dy) + abs(dx):
38-
cheats2 += 1
39-
print(f"part 2 = {cheats2}")
31+
print(f"part 1 = {find_cheats(2)}")
32+
print(f"part 2 = {find_cheats(20)}")

0 commit comments

Comments
 (0)