From 25f7c920e619319e04552a98f4257d8e07af19a9 Mon Sep 17 00:00:00 2001 From: mike Date: Fri, 9 Jan 2026 23:58:41 +0100 Subject: [PATCH] Gather data --- src/main/java/puzzle/Export.java | 4 ++-- src/main/java/puzzle/SwedishGenerator.java | 20 +++++++++++-------- src/test/java/puzzle/MainTest.java | 14 ++++++------- .../java/puzzle/SwedishGeneratorTest.java | 4 ++-- 4 files changed, 23 insertions(+), 19 deletions(-) diff --git a/src/main/java/puzzle/Export.java b/src/main/java/puzzle/Export.java index a1ed3bc..1de8d19 100644 --- a/src/main/java/puzzle/Export.java +++ b/src/main/java/puzzle/Export.java @@ -158,7 +158,7 @@ public record Export() { for (var r = 0; r < R; r++) { var sb = new StringBuilder(C); for (var c = 0; c < C; c++) { - sb.append(g.isLetterAt(r,c) ? (char) g.byteAt(Grid.offset(r, c)) : '#'); + sb.append(g.isLetterSet(r, c) ? (char) g.byteAt(Grid.offset(r, c)) : '#'); } gridv2.add(sb.toString()); } @@ -189,7 +189,7 @@ public record Export() { for (var c : p.cells) { int rr = Grid.r(c), cc = Grid.c(c); int idx = Grid.offset(rr,cc); - if (inBounds(rr, cc) && g.isLetterAt(idx)) { + if (inBounds(rr, cc) && g.isLetterSet(idx)) { letterAt.put(Bit.pack(rr, cc), (char) g.byteAt(idx)); } } diff --git a/src/main/java/puzzle/SwedishGenerator.java b/src/main/java/puzzle/SwedishGenerator.java index a1d8ec0..7948ded 100644 --- a/src/main/java/puzzle/SwedishGenerator.java +++ b/src/main/java/puzzle/SwedishGenerator.java @@ -224,12 +224,16 @@ public record SwedishGenerator(Rng rng) { if (idx < 64) bo[0] &= ~(1L << idx); else bo[1] &= ~(1L << (idx & 63)); } - boolean isDigitAt(int r, int c) { return (g[offset(r, c)] & 48) == 48; } - boolean isDigitAt(int index) { return (g[index] & 48) == 48; } - static boolean isDigit(byte b) { return (b & 48) == 48; } - boolean isLettercell(int r, int c) { return (g[offset(r, c)] & 48) != 48; } - public boolean isLetterAt(int r, int c) { return ((g[offset(r, c)] & 64) != 0); } - public boolean isLetterAt(int index) { return (g[index] & 48) != 48; } + static boolean isDigit(byte b) { return (b & 48) == 48; } + boolean isDigitAt(int r, int c) { return isDigit(g[offset(r, c)]); } + boolean isDigitAt(int index) { return isDigit(g[index]); } + static boolean isLetter(byte b) { return (b & 64) != 0; } + public boolean isLetterSet(int r, int c) { return isLetter(g[offset(r, c)]); } + public boolean isLetterSet(int idx) { return isLetter(g[idx]); } + static boolean notDigit(byte b) { return (b & 48) != 48; } + public boolean isLetterAt(int r, int c) { return notDigit(g[offset(r, c)]); } + public boolean isLetterAt(int index) { return notDigit(g[index]); } + public double similarity(Grid b) { var same = 0; for (int i = 0; i < SIZE; i++) if (g[i] == b.g[i]) same++; @@ -392,7 +396,7 @@ public record SwedishGenerator(Rng rng) { long packedPos = 0; var n = 0; - while (rr >= 0 && rr < R && cc >= 0 && cc < C && grid.isLettercell(rr, cc) && n < MAX_WORD_LENGTH) { + while (rr >= 0 && rr < R && cc >= 0 && cc < C && grid.isLetterAt(rr, cc) && n < MAX_WORD_LENGTH) { packedPos |= (long) Grid.offset(rr, cc) << (n * 7); n++; rr += nbrs16.dr; @@ -411,7 +415,7 @@ public record SwedishGenerator(Rng rng) { boolean hasRoomForClue(Grid grid, int idx, nbrs_16 nbrs16) { int rr = Grid.r(idx) + nbrs16.r, cc = Grid.c(idx) + nbrs16.c; var run = 0; - while (rr >= 0 && rr < R && cc >= 0 && cc < C && (grid.isLettercell(rr, cc)) && run < MAX_WORD_LENGTH) { + while (rr >= 0 && rr < R && cc >= 0 && cc < C && (grid.isLetterAt(rr, cc)) && run < MAX_WORD_LENGTH) { run++; rr += nbrs16.dr; cc += nbrs16.dc; diff --git a/src/test/java/puzzle/MainTest.java b/src/test/java/puzzle/MainTest.java index 7a0b55a..0d86740 100644 --- a/src/test/java/puzzle/MainTest.java +++ b/src/test/java/puzzle/MainTest.java @@ -87,10 +87,10 @@ public class MainTest { Assertions.assertEquals(DASH, grid.byteAt(Grid.offset(1, 1))); // Test isLetterAt - Assertions.assertTrue(grid.isLetterAt(0, 0)); - Assertions.assertFalse(grid.isLetterAt(1, 2)); - Assertions.assertTrue(grid.isLetterAt(2, 3)); - Assertions.assertFalse(grid.isLetterAt(1, 1)); + Assertions.assertTrue(grid.isLetterSet(0, 0)); + Assertions.assertFalse(grid.isLetterSet(1, 2)); + Assertions.assertTrue(grid.isLetterSet(2, 3)); + Assertions.assertFalse(grid.isLetterSet(1, 1)); // Test isDigitAt Assertions.assertFalse(grid.isDigitAt(0)); @@ -100,9 +100,9 @@ public class MainTest { Assertions.assertFalse(grid.isDigitAt(Grid.offset(1, 1))); // Test isLettercell - Assertions.assertTrue(grid.isLettercell(0, 0)); // 'A' is letter - Assertions.assertFalse(grid.isLettercell(1, 2)); // '5' is digit - Assertions.assertTrue(grid.isLettercell(1, 1)); // '#' is lettercell + Assertions.assertTrue(grid.isLetterAt(0, 0)); // 'A' is letter + Assertions.assertFalse(grid.isLetterAt(1, 2)); // '5' is digit + Assertions.assertTrue(grid.isLetterAt(1, 1)); // '#' is lettercell } @Test diff --git a/src/test/java/puzzle/SwedishGeneratorTest.java b/src/test/java/puzzle/SwedishGeneratorTest.java index 4424047..e166489 100644 --- a/src/test/java/puzzle/SwedishGeneratorTest.java +++ b/src/test/java/puzzle/SwedishGeneratorTest.java @@ -79,8 +79,8 @@ public class SwedishGeneratorTest { assertFalse(grid.isDigitAt(0)); assertTrue(grid.isDigitAt(Grid.offset(0, 1))); assertFalse(grid.isLetterAt(Grid.offset(0, 1))); - assertTrue(grid.isLettercell(0, 0)); - assertFalse(grid.isLettercell(0, 1)); + assertTrue(grid.isLetterAt(0, 0)); + assertFalse(grid.isLetterAt(0, 1)); var copy = grid.deepCopyGrid(); assertEquals('A', copy.byteAt(0, 0));