Maze generation: Difference between revisions
m
J: efficiency improvements
m (→{{header|J}}) |
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.
unvisited=.0 (<here+1)} unvisited▼
neighbors=. here+"1 (,-)=0 1
neighbors=. neighbors #~ (<"1 neighbors+1) {unvisited
if.#neighbors do.
n=.n-1
next=. ({~ ?@#) neighbors
if.{.next=here
do. horiz=.1 (<-:here+next-0 1)} horiz
|