+ * This array is used to keep track of rows, columns and boxes
+ * which contain a number more than once.
+ */
+ for (x = 0; x < cr * cr; x++)
+ ds->entered_items[x] = 0;
+ for (x = 0; x < cr; x++)
+ for (y = 0; y < cr; y++) {
+ digit d = state->grid[y*cr+x];
+ if (d) {
+ int box = (x/r)+(y/c)*c;
+ ds->entered_items[x*cr+d-1] |= ((ds->entered_items[x*cr+d-1] & 1) << 1) | 1;
+ ds->entered_items[y*cr+d-1] |= ((ds->entered_items[y*cr+d-1] & 4) << 1) | 4;
+ ds->entered_items[box*cr+d-1] |= ((ds->entered_items[box*cr+d-1] & 16) << 1) | 16;
+ }
+ }
+
+ /*