Gather data
This commit is contained in:
@@ -388,16 +388,17 @@ public record SwedishGenerator(int W, int H, int SIZE, int MAX_LEN, int[] buff)
|
||||
}
|
||||
|
||||
// clue clustering (8-connected)
|
||||
var seen = new boolean[H][W];
|
||||
var seen = new BitSet(8);
|
||||
var stack = new int[SIZE];
|
||||
int sp;
|
||||
int sp, idx;
|
||||
|
||||
for (var r = 0; r < H; r++)
|
||||
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;
|
||||
stack[sp++] = r * W + c;
|
||||
seen[r][c] = true;
|
||||
stack[sp++] = idx;
|
||||
seen.set(idx);
|
||||
var size = 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) {
|
||||
int nx = x + d.x, ny = y + d.y;
|
||||
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;
|
||||
seen[nx][ny] = true;
|
||||
stack[sp++] = nx * W + ny;
|
||||
seen.set(nidx);
|
||||
stack[sp++] = nidx;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user