introduce bitloops
This commit is contained in:
@@ -26,7 +26,7 @@ public class ExportFormatTest {
|
||||
|
||||
@Test
|
||||
void testExportFormatFromFilled() {
|
||||
var swe = new SwedishGenerator(new Rng(0));
|
||||
var swe = new SwedishGenerator(new Rng(0), new int[STACK_SIZE]);
|
||||
var grid = Grid.createEmpty();
|
||||
|
||||
// Place a RIGHT clue at (0,0)
|
||||
@@ -84,7 +84,7 @@ public class ExportFormatTest {
|
||||
|
||||
@Test
|
||||
void testExportFormatEmpty() {
|
||||
var swe = new SwedishGenerator(new Rng(0));
|
||||
var swe = new SwedishGenerator(new Rng(0), new int[STACK_SIZE]);
|
||||
var grid = Grid.createEmpty();
|
||||
var fillResult = new FillResult(true, new Gridded(grid), new long[300], new FillStats(0, 0, 0, 0));
|
||||
var puzzleResult = new PuzzleResult(swe, null, null, fillResult);
|
||||
|
||||
@@ -261,13 +261,12 @@ public class SwedishGeneratorTest {
|
||||
// Pattern "APP--" for length 5
|
||||
var info = candidateInfoForPattern(Context.get().bitset(), packPattern("APP"), dict.index()[5], 5);
|
||||
|
||||
assertEquals(2, info.count());
|
||||
assertNotNull(info.indices());
|
||||
assertEquals(2, info.length);
|
||||
assertNotNull(info);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testForEachSlotAndExtractSlots() {
|
||||
var gen = new SwedishGenerator(new Rng(0));
|
||||
var grid = Grid.createEmpty();
|
||||
// 3x3 grid (Config.PUZZLE_ROWS/COLS are 3 in test env)
|
||||
// Set CLUE_RIGHT at OFF_0_0
|
||||
@@ -285,23 +284,22 @@ public class SwedishGeneratorTest {
|
||||
|
||||
@Test
|
||||
void testMaskFitnessBasic() {
|
||||
var gen = new SwedishGenerator(new Rng(0));
|
||||
var grid = Grid.createEmpty();
|
||||
var stack = new int[STACK_SIZE];
|
||||
var gen = new SwedishGenerator(new Rng(0), new int[STACK_SIZE]);
|
||||
var grid = Grid.createEmpty();
|
||||
// Empty grid should have high penalty (no slots)
|
||||
var f1 = gen.maskFitness(grid, stack);
|
||||
var f1 = gen.maskFitness(grid);
|
||||
assertTrue(f1 >= 1_000_000_000L);
|
||||
|
||||
// Add a slot
|
||||
grid.setClue(OFF_0_0, D_BYTE_2);
|
||||
var f2 = gen.maskFitness(grid, stack);
|
||||
var f2 = gen.maskFitness(grid);
|
||||
assertTrue(f2 < f1);
|
||||
}
|
||||
|
||||
@Test
|
||||
void testGeneticAlgorithmComponents() {
|
||||
var rng = new Rng(42);
|
||||
var gen = new SwedishGenerator(rng);
|
||||
var gen = new SwedishGenerator(rng, new int[STACK_SIZE]);
|
||||
|
||||
var g1 = gen.randomMask();
|
||||
assertNotNull(g1);
|
||||
@@ -312,8 +310,7 @@ public class SwedishGeneratorTest {
|
||||
|
||||
assertNotNull(gen.crossover(g1, g2));
|
||||
|
||||
val stack = new int[STACK_SIZE];
|
||||
var g4 = gen.hillclimb(stack, g1, 10);
|
||||
var g4 = gen.hillclimb(g1, 10);
|
||||
assertNotNull(g4);
|
||||
}
|
||||
|
||||
@@ -428,16 +425,15 @@ public class SwedishGeneratorTest {
|
||||
|
||||
@Test
|
||||
void testMaskFitnessDetailed() {
|
||||
var gen = new SwedishGenerator(new Rng(42));
|
||||
var grid = Grid.createEmpty();
|
||||
val stack = new int[STACK_SIZE];
|
||||
var gen = new SwedishGenerator(new Rng(42), new int[STACK_SIZE]);
|
||||
var grid = Grid.createEmpty();
|
||||
// Empty grid: huge penalty
|
||||
var fitEmpty = gen.maskFitness(grid, stack);
|
||||
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, stack);
|
||||
var fitOne = gen.maskFitness(grid);
|
||||
assertTrue(fitOne < fitEmpty);
|
||||
|
||||
// Test penalty for TARGET_CLUES
|
||||
|
||||
Reference in New Issue
Block a user