Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
22
Task/Maze-generation/D/maze-generation.d
Normal file
22
Task/Maze-generation/D/maze-generation.d
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
void main() @safe {
|
||||
import std.stdio, std.algorithm, std.range, std.random;
|
||||
|
||||
enum uint w = 14, h = 10;
|
||||
auto vis = new bool[][](h, w),
|
||||
hor = iota(h + 1).map!(_ => ["+---"].replicate(w)).array,
|
||||
ver = h.iota.map!(_ => ["| "].replicate(w) ~ "|").array;
|
||||
|
||||
void walk(in uint x, in uint y) /*nothrow*/ @safe /*@nogc*/ {
|
||||
vis[y][x] = true;
|
||||
//foreach (immutable p; [[x-1,y], [x,y+1], [x+1,y], [x,y-1]].randomCover) {
|
||||
foreach (const p; [[x-1, y], [x, y+1], [x+1, y], [x, y-1]].randomCover) {
|
||||
if (p[0] >= w || p[1] >= h || vis[p[1]][p[0]]) continue;
|
||||
if (p[0] == x) hor[max(y, p[1])][x] = "+ ";
|
||||
if (p[1] == y) ver[y][max(x, p[0])] = " ";
|
||||
walk(p[0], p[1]);
|
||||
}
|
||||
}
|
||||
walk(uniform(0, w), uniform(0, h));
|
||||
foreach (const a, const b; hor.zip(ver ~ []))
|
||||
join(a ~ "+\n" ~ b).writeln;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue