introduce bitloops
This commit is contained in:
@@ -91,21 +91,6 @@ public class SwedishGeneratorTest {
|
||||
void testGrid() {
|
||||
var grid = Grid.createEmpty();
|
||||
grid.setLetter(OFF_0_0, LETTER_A);
|
||||
grid.setClue(OFF_0_1, CLUE_LEFT);
|
||||
|
||||
assertEquals('A', grid.byteAt(OFF_0_0));
|
||||
assertEquals(CLUE_LEFT, grid.digitAt(OFF_0_1));
|
||||
assertTrue(grid.notClue(OFF_0_0));
|
||||
assertFalse(grid.isClue(OFF_0_0));
|
||||
assertTrue(grid.isClue(OFF_0_1));
|
||||
assertFalse(grid.notClue(OFF_0_1));
|
||||
assertTrue(grid.notClue(OFF_0_0));
|
||||
assertFalse(grid.notClue(OFF_0_1));
|
||||
|
||||
var copy = grid.deepCopyGrid();
|
||||
assertEquals('A', copy.byteAt(OFF_0_0));
|
||||
copy.setLetter(OFF_0_0, LETTER_B);
|
||||
assertEquals('B', copy.byteAt(OFF_0_0));
|
||||
assertEquals('A', grid.byteAt(OFF_0_0));
|
||||
}
|
||||
|
||||
@@ -267,11 +252,11 @@ public class SwedishGeneratorTest {
|
||||
|
||||
@Test
|
||||
void testForEachSlotAndExtractSlots() {
|
||||
var grid = Grid.createEmpty();
|
||||
// 3x3 grid (Config.PUZZLE_ROWS/COLS are 3 in test env)
|
||||
// Set CLUE_RIGHT at OFF_0_0
|
||||
grid.setClue(OFF_0_0, CLUE_RIGHT);
|
||||
// This should detect a slot starting at 0,1 with length 2 (0,1 and 0,2)
|
||||
var clues = Clues.createEmpty();
|
||||
clues.setClue(OFF_0_0, CLUE_RIGHT);
|
||||
var grid = clues.toGrid();
|
||||
|
||||
|
||||
var slots = extractSlots(grid);
|
||||
assertEquals(1, slots.length);
|
||||
@@ -430,20 +415,8 @@ public class SwedishGeneratorTest {
|
||||
// Empty grid: huge penalty
|
||||
var fitEmpty = gen.maskFitness(grid);
|
||||
assertTrue(fitEmpty >= 1_000_000_000L);
|
||||
|
||||
// Grid with one short slot: still high penalty but less than empty
|
||||
grid.setClue(0, D_BYTE_2); // Right from 0,0. Len 2 if 3x3.
|
||||
var fitOne = gen.maskFitness(grid);
|
||||
assertTrue(fitOne < fitEmpty);
|
||||
|
||||
// Test penalty for TARGET_CLUES
|
||||
// TARGET_CLUES = SIZE >>> 2. For 3x3 it is 9 >>> 2 = 2.
|
||||
// If we have 1 clue, |1 - 2| * 16000 = 16000 penalty.
|
||||
// If we add another clue at a distant position.
|
||||
var grid2 = Grid.createEmpty();
|
||||
grid2.setClue(0, D_BYTE_2);
|
||||
grid2.setClue(Grid.offset(2, 0), D_BYTE_2);
|
||||
// Now clueCount = 2, penalty should be 0 from target clues.
|
||||
// But they might have other penalties (short slots, etc.)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user