day 18
bit of a breather episode
As long as you ensure A* / Dijkstra's (is there a functional difference if the edge weights are constant?) you'll get the shortest path. Part 2 was just simulation for me, if I started in the state of part 1 it took a minute to run through the rest of the bytes.