Gather data
This commit is contained in:
@@ -827,10 +827,7 @@ public record SwedishGenerator(int W, int H, int SIZE, int MAX_LEN, int[] buff)
|
|||||||
var L = idxs.length;
|
var L = idxs.length;
|
||||||
var tries = Math.min(MAX_TRIES_PER_SLOT, L);
|
var tries = Math.min(MAX_TRIES_PER_SLOT, L);
|
||||||
|
|
||||||
// When picking words from sorted indices, we want to favor the beginning
|
|
||||||
// (lower difficulty) but still have some randomness.
|
|
||||||
for (var t = 0; t < tries; t++) {
|
for (var t = 0; t < tries; t++) {
|
||||||
// Bias strongly towards lower indices (simpler words) using r^3
|
|
||||||
double r = rng.nextFloat();
|
double r = rng.nextFloat();
|
||||||
int idxInArray = (int) (r * r * r * L);
|
int idxInArray = (int) (r * r * r * L);
|
||||||
var idx = idxs[idxInArray];
|
var idx = idxs[idxInArray];
|
||||||
|
|||||||
@@ -29,4 +29,35 @@ class SwedishGeneratorTest {
|
|||||||
assertEquals(0, s.r(1));
|
assertEquals(0, s.r(1));
|
||||||
assertEquals(2, s.c(1));
|
assertEquals(2, s.c(1));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testStaticSlotMethods() {
|
||||||
|
// Test static r and c extraction
|
||||||
|
// packedRs: 1 at index 0, 2 at index 1
|
||||||
|
long packedRs = (1L << 0) | (2L << 4);
|
||||||
|
assertEquals(1, Slot.r(packedRs, 0));
|
||||||
|
assertEquals(2, Slot.r(packedRs, 1));
|
||||||
|
|
||||||
|
// Test static horiz
|
||||||
|
// dir 2 (right) is horizontal
|
||||||
|
assertTrue(Slot.horiz(2));
|
||||||
|
// dir 3 (down) is vertical
|
||||||
|
assertTrue(!Slot.horiz(3));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testForEachSlot() {
|
||||||
|
SwedishGenerator generator = new SwedishGenerator(3, 3);
|
||||||
|
Grid grid = generator.makeEmptyGrid();
|
||||||
|
grid.setCharAt(0, 0, '2'); // right
|
||||||
|
|
||||||
|
java.util.concurrent.atomic.AtomicInteger count = new java.util.concurrent.atomic.AtomicInteger(0);
|
||||||
|
generator.forEachSlot(grid, (key, rs, cs, len) -> {
|
||||||
|
count.incrementAndGet();
|
||||||
|
assertEquals(2, len);
|
||||||
|
assertEquals(0, Slot.r(rs, 0));
|
||||||
|
assertEquals(1, Slot.c(cs, 0));
|
||||||
|
});
|
||||||
|
assertEquals(1, count.get());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user