-- 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: | 1393 / 211 | 
| Referenced in: | [show references] |