Skip to content

Commit 4db80ec

Browse files
Day 16
Leaderboard was super quick for part 1 today! I had a small bug in my part 1 code, but even without it, I would've missed the leaderboard. 🤷‍♂️
1 parent 4fab280 commit 4db80ec

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed

16.py

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
#!/usr/bin/env pypy3
2+
# 161/39
3+
from __future__ import annotations
4+
5+
from util import *
6+
7+
replace_stdin()
8+
9+
res = 0
10+
11+
G = Grid(lines())
12+
13+
s = G.rev["S"][0]
14+
e = G.rev["E"][0]
15+
16+
def adj(p):
17+
p, d = p
18+
19+
np = p + DIR_NORTHNEG[d]
20+
if G(np) in ".E":
21+
yield (np, d), 1
22+
23+
yield (p, (d + 1) % 4), 1000
24+
yield (p, (d - 1) % 4), 1000
25+
# for i in range(4):
26+
# d = (d + 1) % 4
27+
# yield
28+
29+
dists, prevs = dijkstra(adj, (s, 0))
30+
31+
res = min(d for p, d in dists.items() if p[0] == e)
32+
md = res
33+
34+
_, Q, _ = bfs(prevs, *((e, i) for i in range(4)))
35+
36+
res = len({p for p, _ in Q})
37+
38+
submit(res)

0 commit comments

Comments
 (0)