Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
53
Task/Maze-generation/MATLAB/maze-generation.m
Normal file
53
Task/Maze-generation/MATLAB/maze-generation.m
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
function M = makeMaze(n)
|
||||
showProgress = false;
|
||||
|
||||
colormap([1,1,1;1,1,1;0,0,0]);
|
||||
set(gcf,'color','w');
|
||||
|
||||
NoWALL = 0;
|
||||
WALL = 2;
|
||||
NotVISITED = -1;
|
||||
VISITED = -2;
|
||||
|
||||
m = 2*n+3;
|
||||
M = NotVISITED(ones(m));
|
||||
offsets = [-1, m, 1, -m];
|
||||
|
||||
M([1 2:2:end end],:) = WALL;
|
||||
M(:,[1 2:2:end end]) = WALL;
|
||||
|
||||
currentCell = sub2ind(size(M),3,3);
|
||||
M(currentCell) = VISITED;
|
||||
|
||||
S = currentCell;
|
||||
|
||||
while (~isempty(S))
|
||||
moves = currentCell + 2*offsets;
|
||||
unvistedNeigbors = find(M(moves)==NotVISITED);
|
||||
|
||||
if (~isempty(unvistedNeigbors))
|
||||
next = unvistedNeigbors(randi(length(unvistedNeigbors),1));
|
||||
M(currentCell + offsets(next)) = NoWALL;
|
||||
|
||||
newCell = currentCell + 2*offsets(next);
|
||||
if (any(M(newCell+2*offsets)==NotVISITED))
|
||||
S = [S newCell];
|
||||
end
|
||||
|
||||
currentCell = newCell;
|
||||
M(currentCell) = VISITED;
|
||||
else
|
||||
currentCell = S(1);
|
||||
S = S(2:end);
|
||||
end
|
||||
|
||||
if (showProgress)
|
||||
image(M-VISITED);
|
||||
axis equal off;
|
||||
drawnow;
|
||||
pause(.01);
|
||||
end
|
||||
end
|
||||
|
||||
image(M-VISITED);
|
||||
axis equal off;
|
||||
Loading…
Add table
Add a link
Reference in a new issue