From 2aa08fedb05b4f88c17c91d637306921f2a7a102 Mon Sep 17 00:00:00 2001 From: mike Date: Fri, 23 Jan 2026 06:31:56 +0100 Subject: [PATCH] redo --- src/main/java/puzzle/Clues.java | 6 +++--- src/main/java/puzzle/Export.java | 2 +- src/main/java/puzzle/Mask.java | 8 +++++--- src/main/java/puzzle/SwedishGenerator.java | 3 ++- src/test/java/puzzle/TestDuplication.java | 17 ++++++++++------- 5 files changed, 21 insertions(+), 15 deletions(-) diff --git a/src/main/java/puzzle/Clues.java b/src/main/java/puzzle/Clues.java index 3f3b527..82576fd 100644 --- a/src/main/java/puzzle/Clues.java +++ b/src/main/java/puzzle/Clues.java @@ -13,9 +13,9 @@ public final class Clues { @Getter long lo, hi, vlo, vhi, rlo, rhi, xlo, xhi; public static Clues createEmpty() { return new Clues(0, 0, 0, 0, 0, 0, 0, 0); } - public Clues setClue(precomp.Const9x8.Cell cell) { - if ((cell.index & 64) == 0) setClueLo(cell.mask, cell.d); - else setClueHi(cell.mask, cell.d); + public Clues setClue(Mask cell) { + if ((cell.index() & 64) == 0) setClueLo(cell.lo(), cell.d()); + else setClueHi(cell.hi(), cell.d()); return this; } diff --git a/src/main/java/puzzle/Export.java b/src/main/java/puzzle/Export.java index 81974fa..443f5f1 100644 --- a/src/main/java/puzzle/Export.java +++ b/src/main/java/puzzle/Export.java @@ -64,7 +64,7 @@ public record Export() { public record Signa(@Delegate Clues c) { - public static Signa of(Cell... cells) { + public static Signa of(Mask... cells) { var c = createEmpty(); for (var cell : cells) c.setClue(cell); return new Signa(c); diff --git a/src/main/java/puzzle/Mask.java b/src/main/java/puzzle/Mask.java index 332b721..e7a3e70 100644 --- a/src/main/java/puzzle/Mask.java +++ b/src/main/java/puzzle/Mask.java @@ -2,11 +2,13 @@ package puzzle; public interface Mask { - record Masker(long lo, long hi) + record Masker(long lo, long hi,int index,byte d) implements Mask { } - default Mask or(Mask o) { return new Masker(o.lo() | lo(), o.hi() | hi()); } - default Mask and(Mask o) { return new Masker(o.lo() & lo(), o.hi() & hi()); } + default Mask or(Mask o) { return new Masker(o.lo() | lo(), o.hi() | hi(), 0, (byte) 0); } + default Mask and(Mask o) { return new Masker(o.lo() & lo(), o.hi() & hi(), 0, (byte) 0); } long hi(); long lo(); + int index(); + byte d(); } \ No newline at end of file diff --git a/src/main/java/puzzle/SwedishGenerator.java b/src/main/java/puzzle/SwedishGenerator.java index 85c6fc5..1838fc0 100644 --- a/src/main/java/puzzle/SwedishGenerator.java +++ b/src/main/java/puzzle/SwedishGenerator.java @@ -32,7 +32,8 @@ import static java.nio.charset.StandardCharsets.US_ASCII; @ConstGen(C = 9, R = 8, packageName = "precomp", className = "Const9x8") @GenerateNeighbors({ @GenerateNeighbor(C = 9, R = 8, packageName = "precomp", className = "Neighbors9x8", MIN_LEN = 2), - @GenerateNeighbor(C = 4, R = 3, packageName = "precomp", className = "Neighbors4x3", MIN_LEN = 2) + @GenerateNeighbor(C = 4, R = 3, packageName = "precomp", className = "Neighbors4x3", MIN_LEN = 2), + @GenerateNeighbor(C = 3, R = 4, packageName = "precomp", className = "Neighbors3x4", MIN_LEN = 2) }) public record SwedishGenerator() { diff --git a/src/test/java/puzzle/TestDuplication.java b/src/test/java/puzzle/TestDuplication.java index 57329c5..f16bb2b 100644 --- a/src/test/java/puzzle/TestDuplication.java +++ b/src/test/java/puzzle/TestDuplication.java @@ -1,5 +1,6 @@ package puzzle; +import anno.ConstGen; import gen.Test123X_Neighbors4x3; import gen.Test123X_Neighbors9x8; import lombok.val; @@ -14,10 +15,12 @@ import puzzle.SwedishGenerator.Rng; import puzzle.dict800.DictData800; import java.util.Arrays; import java.util.stream.Collectors; -import static precomp.Const9x8.Cell.r0c0d1; -import static precomp.Const9x8.Cell.r1c0d1; -import static precomp.Const9x8.Cell.r2c0d1; -import static precomp.Const9x8.Cell.r3c0d1; +import static precomp.Const3x4.Cell.r0c0d4; +import static precomp.Const3x4.Cell.r0c2d0; +import static precomp.Const3x4.Cell.r1c0d1; +import static precomp.Const3x4.Cell.r2c0d1; +import static precomp.Const3x4.Cell.r3c0d1; +@ConstGen(C = 3, R = 4, packageName = "precomp", className = "Const3x4") public class TestDuplication { @Test @@ -29,13 +32,13 @@ public class TestDuplication { @Test void testFiller2() { var mask = Signa.of( - r0c0d1, + r0c0d4, r0c2d0, r1c0d1, r2c0d1, r3c0d1); - Assertions.assertEquals(4, mask.clueCount()); + Assertions.assertEquals(5, mask.clueCount()); val map = mask.stream().collect(Collectors.toMap(Vestigium::index, Vestigium::clue)); - Assertions.assertEquals(4, map.size()); + Assertions.assertEquals(5, map.size()); var slots = Masker_Neighbors3x4.slots(mask.c(), DictData800.DICT800); var grid = Masker_Neighbors3x4.grid(slots); var filled = SwedishGenerator.fillMask(new Rng(1), slots, grid.lo, grid.hi, grid.g);