Maze generation: Difference between revisions

Content added Content deleted
(→‎{{header|TXR}}: Fix lack of closing pre tag that messed up XPL0. Sorry!)
(added zkl)
Line 5,069: Line 5,069:
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
</pre>

=={{header|zkl}}==
Generate a maze without marked entry or exit points.
{{trans|Python}}
<lang zkl>
fcn make_maze(w = 16, h = 8){
// make arrays with lists of lists (all mutable)
vis:=(w.pump(List().write,0)+1)*h + w.pump(List().write,1);
ver:=(w.pump(List().write,T(Void,"| ")) + "|")*h + T;
hor:=(w.pump(List().write,T(Void,"+---")) + "+")*(h + 1);

fcn(x,y,vis,ver,hor){
vis[y][x] = 1;

d:=L(T(x - 1, y), T(x, y + 1), T(x + 1, y), T(x, y - 1)).shuffle();
foreach xx,yy in (d){
if(vis[yy][xx]) continue;
if(xx==x) hor[y.max(yy)][x]="+ ";
if(yy==y) ver[y][x.max(xx)]=" ";
self.fcn(xx,yy,vis,ver,hor);
}
}((0).random(w),(0).random(h),vis,ver,hor);
foreach a,b in (hor.zip(ver)) { println(a.concat(),"\n",b.concat()) }
return(ver,hor);
}
make_maze();</lang>
{{out}}
<pre>
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| | | | | |
+---+---+ + + +---+ + + + + +---+---+---+ + +
| | | | | | | | | | |
+ +---+ + + +---+---+ +---+---+ + +---+ + + +
| | | | | | | | | | | |
+ + +---+ + + + + +---+ +---+ + +---+ + +
| | | | | | | | | | |
+ + +---+ +---+---+---+---+ +---+ +---+ + +---+ +
| | | | | | | | | |
+ +---+ +---+ + + + +---+ +---+ +---+---+ +---+
| | | | | | | | | |
+ +---+---+---+---+ + + + + + +---+---+---+---+ +
| | | | | | | | | |
+ + + + + + + + +---+---+---+ +---+---+ + +
| | | | | | |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
</pre>
</pre>