Maze generation: Difference between revisions

m
J: efficiency improvements
m (J: efficiency improvements)
Line 18:
 
<lang j>maze=:4 :0
assert.0<:n=.<:x*y
horiz=. 0$~x,y-1
verti=. 0$~(x-1),y
unvisited=. 0,0,~|:0,0,~1$~y,x
path=.,:here=. ?x,y
unvisited=.0 (<here+1)} 0,0,~|:0,0,~1$~y,x
while. 1 e.,unvisitedn do.
unvisited=.0 (<here+1)} unvisited
neighbors=. here+"1 (,-)=0 1
neighbors=. neighbors #~ (<"1 neighbors+1) {unvisited
if.#neighbors do.
n=.n-1
next=. ({~ ?@#) neighbors
unvisited=.0 (<herenext+1)} unvisited
if.{.next=here
do. horiz=.1 (<-:here+next-0 1)} horiz
6,962

edits