Take the 2-minute tour ×

Looking for help in revising my algorithm. I need to find one that will give me the row and column of a cell on a grid.

The grid is $t \times t$. For example, this is a grid for $t=5$. Now given $n$, find the row and column. $$\begin{array}{|c|c|c|c|c|} 1& 2& 3& 4& 5\\ 6& 7& 8& 9& 10\\ 11& 12& 13& 14& 15\\ 16& 17& 18& 19& 20\\ 21& 22& 23& 24& 25 \end{array}$$

My attempt:

row: $n / t + 1$ column: $n \bmod t$

Second attempt:

$\operatorname{row}(x, t) = ((x-x \bmod t)/t)+1$

$\operatorname{column}(x,t) = (x-1) \bmod t+1$

Doesn't work for $n = t^2$

share|improve this question
add comment

1 Answer

up vote 2 down vote accepted

The row is :$$r = \lfloor \frac{n-1}{t} \rfloor + 1$$

The column is:$$c = n - t(r-1)$$

share|improve this answer
If zero indexing were to be used ($0,1,2,\ldots$ instead of $1,2,\ldots$) then the answer would look cleaner. $c$ could also be (n-1)%t+1. –  adam W Feb 26 '13 at 16:23
I understand, thank you! –  МикроПингвин Feb 26 '13 at 16:26
Glad to hear it, your welcome! –  adam W Feb 26 '13 at 16:35
Hi, I have another question. This was just borne out of curiosity. Is there an equation for reflections over diagonals? My attempt only works for the first column down when reflected over the topleft-bottomright diagonal. n - (row - 1)(t - 1) –  МикроПингвин Feb 26 '13 at 23:14
This is a common operation using matrices called the transpose, it is simply the swap of the indices $r\leftrightarrow c$. If by reflection over diagonals you mean other than the main (top left down to the bottom right), then maybe do some sort of shifting... though that sounds inexact, since any sort of "reflecting" would give indices out of bounds... –  adam W Feb 26 '13 at 23:36
show 3 more comments

Your Answer


