introduce bitloops
This commit is contained in:
@@ -79,15 +79,15 @@ public class MarkerTest {
|
||||
}
|
||||
@Test
|
||||
void testSimilarity() {
|
||||
var a = Clued.of(r0c0d1, r2c1d0);
|
||||
var b = Clued.of(r0c0d1, r2c1d0);
|
||||
var a = Clued.of(r0c0d1, r2c1d0).c();
|
||||
var b = Clued.of(r0c0d1, r2c1d0).c();
|
||||
|
||||
// Identity
|
||||
assertEquals(1.0, a.similarity(b), 0.001);
|
||||
|
||||
// Different direction
|
||||
var c = Clued.of(r0c0d0, r2c1d0);
|
||||
assertTrue(a.similarity(c) < 1.0);
|
||||
assertTrue(a.similarity(c.c()) < 1.0);
|
||||
|
||||
// Completely different
|
||||
var d = Clues.createEmpty();
|
||||
@@ -102,10 +102,10 @@ public class MarkerTest {
|
||||
assertTrue(masker.isValid(Clues.createEmpty()));
|
||||
|
||||
// Valid clue: Right from (0,0) in 9x8 grid. Length is 8.
|
||||
assertTrue(masker.isValid(Clued.of(r0c0d1)));
|
||||
assertTrue(masker.isValid(Clued.of(r0c0d1).c()));
|
||||
|
||||
// Invalid clue: Right from (0,7) in 9x8 grid. Length is 1 (too short if MIN_LEN >= 2).
|
||||
assertFalse(masker.isValid(Clued.of(r0c7d1)));
|
||||
assertFalse(masker.isValid(Clued.of(r0c7d1).c()));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -137,18 +137,18 @@ public class MarkerTest {
|
||||
// Clue 1: (0,0) Right. Slot cells: (0,1), (0,2), (0,3), (0,4), (0,5), (0,6), (0,7), (0,8)
|
||||
// Clue 2: (1,2) Up. Slot cells: (0,2)
|
||||
// Intersection is exactly 1 cell (0,2). Valid.
|
||||
assertTrue(masker.isValid(Clued.of(r0c0d1, r2c2d2)));
|
||||
assertTrue(masker.isValid(Clued.of(r0c0d1, r2c2d2).c()));
|
||||
|
||||
// Clue 3: (1,1) Right. Slot cells: (1,2), (1,3), ...
|
||||
// No intersection with Clue 1 or 2. Valid.
|
||||
assertTrue(masker.isValid(Clued.of(r0c0d1, r2c2d2, r1c1d1)));
|
||||
assertTrue(masker.isValid(Clued.of(r0c0d1, r2c2d2, r1c1d1).c()));
|
||||
|
||||
// Now create a violation: two slots sharing 2 cells.
|
||||
// We can do this with Corner Down and another clue.
|
||||
// Clue A: (0,0) Corner Down. Starts at (0,1) goes down: (0,1), (1,1), (2,1), (3,1), ...
|
||||
// Clue B: (0,2) Corner Down Left. Starts at (0,1) goes down: (0,1), (1,1), (2,1), ...
|
||||
// They share MANY cells starting from (0,1).
|
||||
assertFalse(masker.isValid(Clued.of(r0c0d4, r0c2d5)));
|
||||
assertFalse(masker.isValid(Clued.of(r0c0d4, r0c2d5).c()));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -256,7 +256,7 @@ public class MarkerTest {
|
||||
|
||||
@Test
|
||||
void testCornerDownExtraction() {
|
||||
var slots = Masker.slots(Clued.of(r0c0d4), DictData.DICT.index());
|
||||
var slots = Masker.slots(Clued.of(r0c0d4).c(), DictData.DICT.index());
|
||||
assertEquals(1, slots.length);
|
||||
assertEquals(r0c0d4.d, Masker.Slot.dir(slots[0].key()));
|
||||
}
|
||||
@@ -286,7 +286,7 @@ public class MarkerTest {
|
||||
|
||||
@Test
|
||||
void testCornerDownLeftExtraction() {
|
||||
var slots = Masker.slots(Clued.of(r0c1d5), DictData.DICT.index());
|
||||
var slots = Clued.of(r0c1d5).slots();
|
||||
|
||||
assertEquals(1, slots.length);
|
||||
assertEquals(r0c1d5.d, Masker.Slot.dir(slots[0].key()));
|
||||
@@ -303,7 +303,7 @@ public class MarkerTest {
|
||||
assertTrue(placeWord(grid.grid(), grid.grid().g, key, lo, 0L, TEST));
|
||||
|
||||
var fillResult = new FillResult(true, 0, 0, 0, 0, new FillStats());
|
||||
var puzzleResult = new PuzzleResult(new Clued(clues), grid, new Slotinfo[]{
|
||||
var puzzleResult = new PuzzleResult(clues, grid, new Slotinfo[]{
|
||||
new Slotinfo(key, lo, 0L, 0, new Assign(TEST), null, 0)
|
||||
}, fillResult);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user