introduce bitloops
This commit is contained in:
@@ -38,7 +38,9 @@ public class MainTest {
|
||||
static final int OFF_2_3 = Grid.offset(2, 3);
|
||||
static final Opts opts = new Main.Opts() {{
|
||||
this.seed = 12348;
|
||||
this.clueSize = 4;
|
||||
this.pop = 4; // Tiny population
|
||||
this.offspring = 18;
|
||||
this.gens = 20; // Very few generations
|
||||
this.minSimplicity = 0;
|
||||
this.threads = 1;
|
||||
@@ -159,19 +161,19 @@ public class MainTest {
|
||||
@Test
|
||||
void testMaskerCreation() {
|
||||
var swe = new SwedishGenerator(new Rng(12348), new int[STACK_SIZE], Clues.createEmpty());
|
||||
var mask = swe.generateMask(opts.pop, opts.gens, Math.max(opts.pop, (int) Math.floor(opts.pop * 1.5)));
|
||||
var mask = swe.generateMask(opts.clueSize, opts.pop, opts.gens, opts.offspring);
|
||||
val clued = new Clued(mask);
|
||||
val test = clued.gridToString();
|
||||
val RESULT = "001 \n" +
|
||||
" 3 3\n" +
|
||||
val RESULT = "1 \n" +
|
||||
" \n" +
|
||||
" 3\n" +
|
||||
" 3\n" +
|
||||
" 21 1 \n" +
|
||||
" 3 \n" +
|
||||
"221 1 \n" +
|
||||
"1 22";
|
||||
" \n" +
|
||||
" \n" +
|
||||
"1 \n" +
|
||||
" \n" +
|
||||
" 3";
|
||||
|
||||
Assertions.assertEquals(18, clued.clueCount(), "Found seed changed");
|
||||
Assertions.assertEquals(4, clued.clueCount(), "Found seed changed");
|
||||
Assertions.assertEquals(RESULT, test, "Found seed changed");
|
||||
}
|
||||
@Test
|
||||
|
||||
@@ -241,12 +241,12 @@ public class SwedishGeneratorTest {
|
||||
var gen = new SwedishGenerator(new Rng(0), new int[STACK_SIZE], Clues.createEmpty());
|
||||
var grid = Clues.createEmpty();
|
||||
// Empty grid should have high penalty (no slots)
|
||||
var f1 = gen.maskFitness(grid);
|
||||
var f1 = gen.maskFitness(grid, 18);
|
||||
assertTrue(f1 >= 1_000_000_000L);
|
||||
|
||||
// Add a slot
|
||||
grid.setClue(OFF_0_0, D_BYTE_2);
|
||||
var f2 = gen.maskFitness(grid);
|
||||
var f2 = gen.maskFitness(grid, 18);
|
||||
assertTrue(f2 < f1);
|
||||
}
|
||||
|
||||
@@ -255,7 +255,7 @@ public class SwedishGeneratorTest {
|
||||
var rng = new Rng(42);
|
||||
var gen = new SwedishGenerator(rng, new int[STACK_SIZE], Clues.createEmpty());
|
||||
|
||||
var g1 = gen.randomMask();
|
||||
var g1 = gen.randomMask(18);
|
||||
assertNotNull(g1);
|
||||
|
||||
var g2 = gen.mutate(g1.deepCopyGrid());
|
||||
@@ -264,7 +264,7 @@ public class SwedishGeneratorTest {
|
||||
|
||||
assertNotNull(gen.crossover(g1, g2));
|
||||
|
||||
var g4 = gen.hillclimb(g1, 10);
|
||||
var g4 = gen.hillclimb(g1, 18, 10);
|
||||
assertNotNull(g4);
|
||||
}
|
||||
|
||||
@@ -363,10 +363,10 @@ public class SwedishGeneratorTest {
|
||||
var gen = new SwedishGenerator(new Rng(42), new int[STACK_SIZE], Clues.createEmpty());
|
||||
var grid = Clues.createEmpty();
|
||||
// Empty grid: huge penalty
|
||||
var fitEmpty = gen.maskFitness(grid);
|
||||
var fitEmpty = gen.maskFitness(grid, 18);
|
||||
assertTrue(fitEmpty >= 1_000_000_000L);
|
||||
grid.setClue(0, D_BYTE_2); // Right from 0,0. Len 2 if 3x3.
|
||||
var fitOne = gen.maskFitness(grid);
|
||||
var fitOne = gen.maskFitness(grid, 18);
|
||||
assertTrue(fitOne < fitEmpty);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user