二维数组 - 使其成为 "torus"
2D array - making it "torus" like
我面临以下问题:
我有一块大小为 MxN 的棋盘。
在 Java 中,最好的方法是什么,当给定的坐标超出范围(或负值)时,它会 return 从棋盘的另一边正方形?我正在寻找一些数学的切肉刀用途。可能是模数运算符,但我希望它适用于负值。怎么做才对?
例如:
当 M = N = 10
//Pseudocode of course
int[10][10] board
//Counting elements from 0, so 10 would normally generate array OOB exception
//I want it to work like this:
board[-1][10] == board[9][0]
您将使用模运算符。一个常用的公式(对于任意大的正/负整数)是:
(n % SIZE + SIZE) % SIZE
不过,我不会用这些公式使代码混乱,而是将其封装在一个函数中:
int getCell(int i, int j) {
return board[(i % M + M) % M]
[(j % N + N) % N];
}
我面临以下问题:
我有一块大小为 MxN 的棋盘。 在 Java 中,最好的方法是什么,当给定的坐标超出范围(或负值)时,它会 return 从棋盘的另一边正方形?我正在寻找一些数学的切肉刀用途。可能是模数运算符,但我希望它适用于负值。怎么做才对?
例如:
当 M = N = 10
//Pseudocode of course
int[10][10] board
//Counting elements from 0, so 10 would normally generate array OOB exception
//I want it to work like this:
board[-1][10] == board[9][0]
您将使用模运算符。一个常用的公式(对于任意大的正/负整数)是:
(n % SIZE + SIZE) % SIZE
不过,我不会用这些公式使代码混乱,而是将其封装在一个函数中:
int getCell(int i, int j) {
return board[(i % M + M) % M]
[(j % N + N) % N];
}