Gather data

This commit is contained in:
mike
2026-01-07 00:47:52 +01:00
parent 243935e73a
commit bc24f0ba1a

View File

@@ -388,16 +388,17 @@ public record SwedishGenerator(int W, int H, int SIZE, int MAX_LEN, int[] buff)
} }
// clue clustering (8-connected) // clue clustering (8-connected)
var seen = new boolean[H][W]; var seen = new BitSet(8);
var stack = new int[SIZE]; var stack = new int[SIZE];
int sp; int sp, idx;
for (var r = 0; r < H; r++) for (var r = 0; r < H; r++)
for (var c = 0; c < W; c++) { for (var c = 0; c < W; c++) {
if (!grid.isDigitAt(r, c) || seen[r][c]) continue; idx = grid.offset(r, c);
if (!grid.isDigitAt(r, c) || seen.get(idx)) continue;
sp = 0; sp = 0;
stack[sp++] = r * W + c; stack[sp++] = idx;
seen[r][c] = true; seen.set(idx);
var size = 0; var size = 0;
while (sp > 0) { while (sp > 0) {
@@ -408,10 +409,11 @@ public record SwedishGenerator(int W, int H, int SIZE, int MAX_LEN, int[] buff)
for (var d : nbrs8) { for (var d : nbrs8) {
int nx = x + d.x, ny = y + d.y; int nx = x + d.x, ny = y + d.y;
if (nx < 0 || nx >= H || ny < 0 || ny >= W) continue; if (nx < 0 || nx >= H || ny < 0 || ny >= W) continue;
if (seen[nx][ny]) continue; int nidx = grid.offset(nx, ny);
if (seen.get(nidx)) continue;
if (!grid.isDigitAt(nx, ny)) continue; if (!grid.isDigitAt(nx, ny)) continue;
seen[nx][ny] = true; seen.set(nidx);
stack[sp++] = nx * W + ny; stack[sp++] = nidx;
} }
} }