基于上图中的上述坐标,我希望能够计算出以红色突出显示的“正方形”,所选单元格属于。
我正在解决一个数独谜题,我可以访问每个方格的宽度,以及单元格所在的行/列。
我无法计算单元格所属正方形的“数字”(它们从1开始,从左到右,从上到下增加),因此正方形的数量以上是:
1 | 2
3 | 4
我怎么能计算这个呢?任何建议,将不胜感激。要么是特定于Java的方法,要么只是算法就可以了:)
答案 0 :(得分:3)
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;
}
答案 1 :(得分:0)
squareX = 1 + (cellX - 1) / cellsPerSquareX;
squareY = 1 + (cellY - 1) / cellsPerSquareY;
答案 2 :(得分:0)
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;