I used my Dijkstra’s algorithm implementation to add squares that make it clear where programs can move:

The translucent overlays are on squares that the Hack could get to within three moves. It takes obstacles into account, and updates as things move and the grid changes.