introduce bitloops

This commit is contained in:
mike
2026-01-14 09:14:03 +01:00
parent bd52bd0ef0
commit afd4a7f53c
4 changed files with 45 additions and 45 deletions

View File

@@ -59,10 +59,10 @@ public class MainTest {
var s = slots[0];
assertEquals(8, s.length());
var cells = s.walk().toArray();
assertEquals(0, Grid.r(cells[0]));
assertEquals(1, Grid.c(cells[0]));
assertEquals(0, Grid.r(cells[1]));
assertEquals(2, Grid.c(cells[1]));
assertEquals(0, SwedishGenerator.IT[cells[0]].r());
assertEquals(1, SwedishGenerator.IT[cells[0]].c());
assertEquals(0, SwedishGenerator.IT[cells[1]].r());
assertEquals(2, SwedishGenerator.IT[cells[1]].c());
}
@Test
@@ -82,8 +82,8 @@ public class MainTest {
clues.forEachSlot((key, lo, hi) -> {
count.incrementAndGet();
assertEquals(8, Long.bitCount(lo) + Long.bitCount(hi));
assertEquals(0, Grid.r(Long.numberOfTrailingZeros(lo)));
assertEquals(1, Grid.c(Long.numberOfTrailingZeros(lo)));
assertEquals(0, SwedishGenerator.IT[Long.numberOfTrailingZeros(lo)].r());
assertEquals(1, SwedishGenerator.IT[Long.numberOfTrailingZeros(lo)].c());
});
assertEquals(1, count.get());
}

View File

@@ -53,11 +53,11 @@ public class SwedishGeneratorTest {
static final long ABC = Lemma.from(26, "ABC");
static final long ABD = Lemma.from(27, "ABD");
static final long AZ = Lemma.from(28, "AZ");
static final byte LETTER_A = (byte) 'A';
static final byte LETTER_B = (byte) 'B';
static final byte LETTER_C = (byte) 'C';
static final byte LETTER_X = (byte) 'X';
static final byte LETTER_Z = (byte) 'Z';
static final byte LETTER_A = ((byte) 'A') & 31;
static final byte LETTER_B = ((byte) 'B') & 31;
static final byte LETTER_C = ((byte) 'C') & 31;
static final byte LETTER_X = ((byte) 'X') & 31;
static final byte LETTER_Z = ((byte) 'Z') & 31;
static final byte CLUE_DOWN = 0;
static final byte CLUE_RIGHT = 1;
static final byte CLUE_UP = 2;
@@ -151,8 +151,7 @@ public class SwedishGeneratorTest {
void testLemmaAndDict() {
Assertions.assertEquals(Lemma.pack("APPLE".getBytes(StandardCharsets.US_ASCII)), Lemma.unpackLetters(l1));
assertEquals(5, Lemma.length(l1));
assertEquals((byte) 'A', Lemma.byteAt(l1, 0));
assertEquals(1, Lemma.intAt(l1, 0));
assertEquals(LETTER_A, Lemma.byteAt(l1, 0));
var dict = new Dict(new long[]{ l1, l2, l2a, l4a, l6a, l7a, l8a });
@@ -192,12 +191,12 @@ public class SwedishGeneratorTest {
assertEquals(CLUE_DOWN, Slot.dir(s.key()));
assertFalse(s.horiz());
var cells = s.walk().toArray();
assertEquals(2, Grid.r(cells[0]));
assertEquals(3, Grid.r(cells[1]));
assertEquals(4, Grid.r(cells[2]));
assertEquals(5, Grid.c(cells[0]));
assertEquals(5, Grid.c(cells[1]));
assertEquals(5, Grid.c(cells[2]));
assertEquals(2, SwedishGenerator.IT[cells[0]].r());
assertEquals(3, SwedishGenerator.IT[cells[1]].r());
assertEquals(4, SwedishGenerator.IT[cells[2]].r());
assertEquals(5, SwedishGenerator.IT[cells[0]].c());
assertEquals(5, SwedishGenerator.IT[cells[1]].c());
assertEquals(5, SwedishGenerator.IT[cells[2]].c());
assertTrue(Slot.horiz(CLUE_RIGHT)); // right
assertFalse(Slot.horiz(CLUE_DOWN)); // down