aStar neibs s t -> with [0=[s no 0]] []
{:r os:ye? vs -> do o:os.lhd,1 os=:os.ltl // pop lowest scored node
nG:o,2+1 // score for neighbor nodes
o,0.{!t -> o.{:r [xy p:ye? @_] -> [@p.r xy]} // found!
;xy -> do (xy.neibs |> fe // for each passable neigbor
{n -> pG:vs.n
if pG.no? ** nG < pG then do // no shorter path?
[nG+(map abs t-n).sum=[n o nG] @!os] // g+h
[n=nG @!vs]})
(r os [o=o,2 @vs])}}