redo
This commit is contained in:
@@ -13,9 +13,9 @@ public final class Clues {
|
|||||||
@Getter long lo, hi, vlo, vhi, rlo, rhi, xlo, xhi;
|
@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 static Clues createEmpty() { return new Clues(0, 0, 0, 0, 0, 0, 0, 0); }
|
||||||
|
|
||||||
public Clues setClue(precomp.Const9x8.Cell cell) {
|
public Clues setClue(Mask cell) {
|
||||||
if ((cell.index & 64) == 0) setClueLo(cell.mask, cell.d);
|
if ((cell.index() & 64) == 0) setClueLo(cell.lo(), cell.d());
|
||||||
else setClueHi(cell.mask, cell.d);
|
else setClueHi(cell.hi(), cell.d());
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ public record Export() {
|
|||||||
|
|
||||||
public record Signa(@Delegate Clues c) {
|
public record Signa(@Delegate Clues c) {
|
||||||
|
|
||||||
public static Signa of(Cell... cells) {
|
public static Signa of(Mask... cells) {
|
||||||
var c = createEmpty();
|
var c = createEmpty();
|
||||||
for (var cell : cells) c.setClue(cell);
|
for (var cell : cells) c.setClue(cell);
|
||||||
return new Signa(c);
|
return new Signa(c);
|
||||||
|
|||||||
@@ -2,11 +2,13 @@ package puzzle;
|
|||||||
|
|
||||||
public interface Mask {
|
public interface Mask {
|
||||||
|
|
||||||
record Masker(long lo, long hi)
|
record Masker(long lo, long hi,int index,byte d)
|
||||||
implements Mask { }
|
implements Mask { }
|
||||||
default Mask or(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()); }
|
default Mask and(Mask o) { return new Masker(o.lo() & lo(), o.hi() & hi(), 0, (byte) 0); }
|
||||||
|
|
||||||
long hi();
|
long hi();
|
||||||
long lo();
|
long lo();
|
||||||
|
int index();
|
||||||
|
byte d();
|
||||||
}
|
}
|
||||||
@@ -32,7 +32,8 @@ import static java.nio.charset.StandardCharsets.US_ASCII;
|
|||||||
@ConstGen(C = 9, R = 8, packageName = "precomp", className = "Const9x8")
|
@ConstGen(C = 9, R = 8, packageName = "precomp", className = "Const9x8")
|
||||||
@GenerateNeighbors({
|
@GenerateNeighbors({
|
||||||
@GenerateNeighbor(C = 9, R = 8, packageName = "precomp", className = "Neighbors9x8", MIN_LEN = 2),
|
@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() {
|
public record SwedishGenerator() {
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package puzzle;
|
package puzzle;
|
||||||
|
|
||||||
|
import anno.ConstGen;
|
||||||
import gen.Test123X_Neighbors4x3;
|
import gen.Test123X_Neighbors4x3;
|
||||||
import gen.Test123X_Neighbors9x8;
|
import gen.Test123X_Neighbors9x8;
|
||||||
import lombok.val;
|
import lombok.val;
|
||||||
@@ -14,10 +15,12 @@ import puzzle.SwedishGenerator.Rng;
|
|||||||
import puzzle.dict800.DictData800;
|
import puzzle.dict800.DictData800;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import static precomp.Const9x8.Cell.r0c0d1;
|
import static precomp.Const3x4.Cell.r0c0d4;
|
||||||
import static precomp.Const9x8.Cell.r1c0d1;
|
import static precomp.Const3x4.Cell.r0c2d0;
|
||||||
import static precomp.Const9x8.Cell.r2c0d1;
|
import static precomp.Const3x4.Cell.r1c0d1;
|
||||||
import static precomp.Const9x8.Cell.r3c0d1;
|
import static precomp.Const3x4.Cell.r2c0d1;
|
||||||
|
import static precomp.Const3x4.Cell.r3c0d1;
|
||||||
|
@ConstGen(C = 3, R = 4, packageName = "precomp", className = "Const3x4")
|
||||||
public class TestDuplication {
|
public class TestDuplication {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -29,13 +32,13 @@ public class TestDuplication {
|
|||||||
@Test
|
@Test
|
||||||
void testFiller2() {
|
void testFiller2() {
|
||||||
var mask = Signa.of(
|
var mask = Signa.of(
|
||||||
r0c0d1,
|
r0c0d4, r0c2d0,
|
||||||
r1c0d1,
|
r1c0d1,
|
||||||
r2c0d1,
|
r2c0d1,
|
||||||
r3c0d1);
|
r3c0d1);
|
||||||
Assertions.assertEquals(4, mask.clueCount());
|
Assertions.assertEquals(5, mask.clueCount());
|
||||||
val map = mask.stream().collect(Collectors.toMap(Vestigium::index, Vestigium::clue));
|
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 slots = Masker_Neighbors3x4.slots(mask.c(), DictData800.DICT800);
|
||||||
var grid = Masker_Neighbors3x4.grid(slots);
|
var grid = Masker_Neighbors3x4.grid(slots);
|
||||||
var filled = SwedishGenerator.fillMask(new Rng(1), slots, grid.lo, grid.hi, grid.g);
|
var filled = SwedishGenerator.fillMask(new Rng(1), slots, grid.lo, grid.hi, grid.g);
|
||||||
|
|||||||
Reference in New Issue
Block a user