Учитывая массив из 81 элемента (предназначенный для представления сетки 9x9), как я могу пройтись по каждому элементу, взять три элемента вокруг него и затем выполнить операцию над ними, а затем перейти к следующим трем каждому из каждой строки, столбца или подматрица. Посмотрите ниже или на сетку судоку, чтобы увидеть макет.
<code>
define COL(n) ((n) % 9)
define ROW(n) ((n) / 9)
define SUB(n) ((n / 3) % 9)
Например, у меня есть
int grid[81];
и
int array_x[9], array_y[9], array_s[9];
Поскольку всю сетку 9x9 можно разделить на 9 из следующих категорий, в каждом массиве есть девять элементов, и я надеюсь взять элементы каждого столбца (ось x) в группы по три, выполнить
r = ((a = ~a) & (b = ~b)) | ((b | a) & ~c);
// or
r = ((~a & ~b)) | ((~b | ~a) & ~c);
на них возьмите три результирующих числа и выполните их на них, а затем сохраните в массиве.
Если это звучит невозможно, извините, я бы хотел сделать это по-другому. Определенно открыты для предложений ...