根据上述图片中的坐标,我想计算所选单元格属于哪个以红色突出显示的“方格”。
我正在解决数独难题,并可以访问每个方格的宽度,以及单元格所在的行/列。
我无法计算单元格所属的“数字”方格(它们从左到右,从上到下开始为1,递增),因此上面方格的数字为:
1|2
3|4
我该如何计算这个呢?任何建议都将不胜感激。Java特定的方法或者算法都可以 :)
根据上述图片中的坐标,我想计算所选单元格属于哪个以红色突出显示的“方格”。
我正在解决数独难题,并可以访问每个方格的宽度,以及单元格所在的行/列。
我无法计算单元格所属的“数字”方格(它们从左到右,从上到下开始为1,递增),因此上面方格的数字为:
1|2
3|4
我该如何计算这个呢?任何建议都将不胜感激。Java特定的方法或者算法都可以 :)
int numMajorRows = 2;
int numMajorCols = 2;
int width = 2;
// assuming row and col also start at 1.
int squareNumber(int row, int col) {
int majorRow = (row-1) / width; // zero based majorRow
int majorCol = (col-1) / width; // zero based majorCol
return majorCol + majorRow * numMajorCols + 1;
}
int width = 2;
int nCols = Math.pow(width, 2);
int nRows = Math.pow(width, 2);
int cellRow = 2;
int cellCol = 2;
int squareRow = (cellRow - 1) / nRows;
int squareCol = (cellCol - 1) / nCols;
int squareNum = (squareRow * width) + squareCol + 1;
squareX = 1 + (cellX - 1) / cellsPerSquareX;
squareY = 1 + (cellY - 1) / cellsPerSquareY;