Maze solving: Difference between revisions

m
Line 1,457:
.
offs[] = [ 1 n -1 (-n) ]
#
proc m_maze pos . .
m[pos] = 0
Line 1,466 ⟶ 1,465:
dir = offs[d[d]]
d[d] = d[i]
if m[pos + dir] = 1 and m[pos + 2 * dir] <>= 01
m[pos + dir] = 0
call m_maze pos + 2 * dir
Line 1,486 ⟶ 1,485:
call m_maze h
m[endpos] = 0
endpos += n
.
call make_maze
Line 1,496 ⟶ 1,494:
color col
move x * f + f / 4 y * f + f / 4
circle f / 23.5
.
proc solve dir0 pos . found .
call mark pos 900
sleep 0.0805
if pos = endpos
found = 1
break 1
.
for dirof = 1 torandom 4 - 1
for h = 1 to 4
dir = (h + of) mod1 4
posn = pos + offs[dir]
if dir <> dir0 and m[posn] = 0 and found = 0
posn += offs[dir]
call solve (dir + 1) mod 4 + 1 posn found
if found = 0
1,995

edits