编号矩阵元素

时间:2015-03-22 08:58:45

标签: lua

我目前正在使用Lua(尽管这个问题更多的是逻辑问题,而不是语言本身),而且我试图制作一个不错的东西并且跨越游戏。我有一个3行3列的电路板表。我希望能够按如下方式对每个方格1到9进行编号:
1 2 3
4 5 6
7 8 9
我想将这些数字转换成表格中的坐标。所以1 = [1,1],2 = [2,1]和4 = [1,2],依此类推。我已经尝试了一些方法,但我无法正确地解决这个问题。而且我不想使用switch语句,因为我可能希望将电路板扩展到4x4或5x5。

2 个答案:

答案 0 :(得分:2)

要获取行i以及值j中的aij列,您可以使用:

 i = math.floor((aij - 1) / ncols) + 1
 j = (aij - 1) % ncols + 1
 -- alternatively, use i to help compute j
 j = aij - (i - 1) * ncols

其中ncols是列数。并回去:

 aij = (i - 1) * ncols + j

对于3x3案例:

local n = 3
for aij=1,n*n do
   local i = math.floor((aij - 1) / n) + 1
   local j = (aij - 1) % n + 1
   print(aij, "["..j..", "..i.."]")
end

输出是:

1   [1, 1]
2   [2, 1]
3   [3, 1]
4   [1, 2]
5   [2, 2]
6   [3, 2]
7   [1, 3]
8   [2, 3]
9   [3, 3]

答案 1 :(得分:1)

假设它是一个n行的矩阵..数字x的坐标为:

  • math.floor((x - 1) / n) + 1
  • 专栏x % n == 0 and n or x % n