Converting numbers within grid to their corresponding x,y coordinates
Asked Answered
S

2

4

Given the numbers in the following grid (from 1 to 36), how can I determine their coordinates (x,y) within the grid?

 |  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

i.e. what I want to obtain is the following:

 |     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)

I have tried:

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

which works for all cases except the ones in the last column on the right.

So I came up with:

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

My question is, is there a smarter way of doing this?

Sapper answered 29/12, 2011 at 14:39 Comment(0)
G
8
x = (number-1)%9;
y = (number-1)/9;
Geoffreygeoffry answered 29/12, 2011 at 14:41 Comment(1)
Thiton beat me by a few seconds so deleted mine.Longshore
M
1

If instead your numbering system goes from from 0 to 35 instead, it's thiton's answer but omit the "-1". So that's:

x = (number)%9;
y = (number)/9;
Mick answered 18/9, 2023 at 1:6 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.