我目前正在使用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。
答案 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
。