给定一个包含 81 个元素的数组(表示 9x9 网格),我如何遍历每个元素,抓住它周围的三个元素,然后对它们执行操作,然后继续到每行、列或子矩阵的下三个元素。查看下方或数独网格以查看布局。
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 个类别,每个数组有 9 个元素,我希望将每列(x 轴)的元素三人一组,执行
r = ((a = ~a) & (b = ~b)) | ((b | a) & ~c);
// or
r = ((~a & ~b)) | ((~b | ~a) & ~c);
在它们上,取三个结果数,并对它们执行,然后将其存储到数组中。
如果这听起来不可能,对不起,我想要一种不同的方式来做到这一点。绝对开放的建议...