我正在努力用 Java 实现数独网格,而我无法做的最后一件事就是将以下逻辑简化为数学公式。
这是此问题的后续内容:How to get the Sudoku 2D-array index, given its "sub-grid" and "cell-in-the-sub-grid" indexes?
这是一个运行良好的函数:
public static final int getGridIndexForCell(int rowIdx_0to8, int colIdx_0to8) {
int idx = -1;
if(rowIdx_0to8 < 3) {
//Grid-row 1
idx = ((colIdx_0to8 < 3) ? 0
: ((colIdx_0to8 < 6) ? 1 : 2));
} else if(rowIdx_0to8 < 6) {
//Grid-row 2
idx = ((colIdx_0to8 < 3) ? 3
: ((colIdx_0to8 < 6) ? 4 : 5));
} else {
//Grid-row 3
idx = ((colIdx_0to8 < 3) ? 6
: ((colIdx_0to8 < 6) ? 7 : 8));
}
return idx;
}
它根据提供的底层二维数组的行和列索引返回“网格索引”。
这就是我所说的网格的含义(我将整个事物称为“板”):
| |
0 | 1 | 2
| |
-------------------------
| |
3 | 4 | 5
| |
-------------------------
| |
6 | 7 | 8
| |
每个网格有九个单元格,索引如下
0 1 2
3 4 5
6 7 8
我会尽可能感谢带注释的答案,因为这是我还没有得到的东西。
最佳答案
所以你想要的公式是
grid_index = (column / 3) + (row / 3) * 3 = column / 3 + row - row % 3
也就是说,每当列增长 3
时,grid_index
就增长 1,而 grid_index
每次增长 3
row
增长了 3
。再次,所有除法均以整数完成。
关于java - 给定二维数组行/列索引,如何制定数独 "sub-grid"索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22311529/