-- expects globals grid[], gw, gh
-- uses global r
-- stack layout: {{x, y}, ...}
function fill(stack)
while #stack > 0 do
local x, y = unpack(stack[#stack])
stack[#stack] = nil
if not (x < 0 or y < 0 or x >= gw or y >= gh) then
local idx = y*gw+x+1
if grid[idx] then
grid[idx] = nil
local me = newRectangle(x, y, 1, 1)
if r == nil then
r = me
else
r = mergeRectangles(r, me)
end
stack[#stack+1] = {x-1, y}
stack[#stack+1] = {x+1, y}
stack[#stack+1] = {x, y-1}
stack[#stack+1] = {x, y+1}
end
end
end
endtest run test run with input download show line numbers
Travelled to 12 computer(s): aoiabmzegqzx, bhatertpkbcr, cbybwowwnfue, gwrvuhgaqvyk, ishqpsrjomds, lpdgvwnxivlt, mqqgnosmbjvj, pyentgdyhuwx, pzhvpgtvlbxg, tslmcundralx, tvejysmllsmz, vouqrxazstgt
2 comment(s) hidden. show
| Snippet ID: | #460 |
| Snippet name: | Floodfill (include) |
| Eternal ID of this version: | #460/1 |
| Text MD5: | 0a9bb6c449c2a3d83907647022f7ec61 |
| Author: | stefan |
| Category: | |
| Type: | Lua code |
| Public (visible to everyone): | Yes |
| Archived (hidden from active list): | No |
| Created/modified: | 2015-02-13 18:25:22 |
| Source code size: | 683 bytes / 29 lines |
| Pitched / IR pitched: | No / Yes |
| Views / Downloads: | 1392 / 211 |
| Referenced in: | [show references] |