Отказ от ответственности: нашел тему с квадратами, и алгоритмы там работают только для этой конкретной проблемы.
Я делаю рекурсивный анализатор судоку с обратным отслеживанием, но у меня возникают проблемы с определением, какое поле связано с данной ячейкой.
Допустим, у нас есть доска 4х4 с коробками размером 2х2 клетки. Тогда подходящим алгоритмом будет (из смежной темы):
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;
}
Однако, как бы выглядел алгоритм, если, скажем, у нас есть доска 6х6 с блоками размером 2х3 ячейки? Я просто не могу понять это ..
Заранее спасибо: -)
Редактировать: [Частично решено]
Я грубо заставил это немного, с тем, чтобы высота коробки всегда была больше ширины. Тем не менее, я заинтересован в изящный алгоритм для этого:)