将网格内的数字转换为它们对应的x、y坐标

4

在以下网格中给定数字(从1到36),我该如何确定它们在网格内的坐标(x,y)?

 |  0  1  2  3  4  5  6  7  8
------------------------------
0|  1  2  3  4  5  6  7  8  9
1| 10 11 12 13 14 15 16 17 18
2| 19 20 21 22 23 24 25 26 27
3| 28 29 30 31 32 33 34 35 36

即我想获得的是以下内容:
 |     0     1     2        8
------------------------------
0| (0,0) (1,0) (2,0) ... (8,0)
1| (0,1) (1,1) (2,1) ... (8,1)
2| (0,2) (1,2) (2,2) ... (8,2)
3| (0,3) (1,3) (2,3) ... (8,3)

我尝试过:

x = number%9-1;
y = number/9;

除了最右侧列中的情况外,此方法适用于所有情况。

因此,我想到了以下方法:

if (number%9==0) {
    x = 8;
    y = number/9-1;
}
else{
    x = number%9-1;
    y = number/9;
}

我的问题是,有没有更聪明的方法来做这件事?
2个回答

8
x = (number-1)%9;
y = (number-1)/9;

1
Thiton 比我快了几秒钟,所以我删除了我的。 - nycdan

1
如果你的编号系统从0到35,那么这就是thiton的答案,但要省略“-1”。所以是这样的:
x = (number)%9;
y = (number)/9;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接