step[] := If[path[[x,y]] dir, Throw[1], Which[ dir "^" && x > 1, If[mat[[x-1,y]] "#", dir = ">", path[[x,y]] = dir; x = x - 1] , dir "v" && x < m, If[mat[[x+1,y]] "#", dir = "<", path[[x,y]] = dir; x = x + 1] , dir "<" && y > 1, If[mat[[x,y-1]] "#", dir = "^", path[[x,y]] = dir; y = y - 1] , dir ">" && y < n, If[mat[[x,y+1]] "#", dir = "v", path[[x,y]] = dir; y = y + 1] , True, path[[x,y]] = dir; Throw[0] ]]