From bc24f0ba1a152ba42f51f906e08ed9d0ada77d9e Mon Sep 17 00:00:00 2001 From: mike Date: Wed, 7 Jan 2026 00:47:52 +0100 Subject: [PATCH] Gather data --- src/main/java/puzzle/SwedishGenerator.java | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/main/java/puzzle/SwedishGenerator.java b/src/main/java/puzzle/SwedishGenerator.java index 0255d5d..3a96b09 100644 --- a/src/main/java/puzzle/SwedishGenerator.java +++ b/src/main/java/puzzle/SwedishGenerator.java @@ -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; } }