Hay dos formas de representar matrices en Lua.
La primera es la clásica del arreglo de arreglos de dimensiones NxM. Esta forma tiene la ventaja implícita de permitirte hacer matrices de formas flexibles manipulando los rangos durante la iteración. Por ejemplo una matriz triangular.
local mt = {} -- create the matrix
for i = 1, N do
local row = {} -- create a new row
mt[i] = row
for j = 1, M do
row[j] = 0
end
endLa segunda, que había olvidado que existe, es componiendo dos índices en uno solo. Tenés un arreglo muuuy largo y lo que lo vuelve una “matriz” es la forma de recorrerlo con saltos en los índices. Para hacer una matriz de NxM:
local mt = {} -- create the matrix
for i = 1, N do
local aux = (i - 1) * M
for j = 1, M do
mt[aux + j] = 0
end
end