function MapImage:spiralOrder(matrix)
local res = {}
local m = #matrix
local n = #matrix[1]
local x = 1
local y = 1
while m > 0 and n > 0 do
if m == 1 then
for i = 1, n do
table.insert(res, matrix[x][y])
y = y + 1
end
break
elseif n == 1 then
for j = 1, m do
res.add(matrix[x][y])
table.insert(res, matrix[x][y])
x = x + 1
end
break
end
for i = 1, n - 1 do
table.insert(res, matrix[x][y])
y = y + 1
end
for i = 1, m - 1 do
table.insert(res, matrix[x][y])
x = x + 1
end
for i = 1, n - 1 do
table.insert(res, matrix[x][y])
y = y - 1
end
for i = 1, m - 1 do
table.insert(res, matrix[x][y])
x = x - 1
end
x = x + 1
y = y + 1
m = m - 2
n = n - 2
end
return res
end