introduce bitloops

This commit is contained in:
mike
2026-01-14 12:28:07 +01:00
parent 6afe675a9d
commit dfb4679da8
5 changed files with 49 additions and 44 deletions

View File

@@ -55,10 +55,10 @@ public class MainTest {
grid.setLetterLo(OFF_0_1, LETTER_A);
grid.setLetterLo(OFF_0_2, LETTER_B);
var slots = extractSlots(clues);
var slots = extractSlots(clues, dict.index());
assertEquals(1, slots.length);
var s = slots[0];
assertEquals(8, s.length());
assertEquals(8, Slot.length(s.lo(), s.hi()));
var cells = s.walk().toArray();
assertEquals(0, SwedishGenerator.IT[cells[0]].r());
assertEquals(1, SwedishGenerator.IT[cells[0]].c());
@@ -184,7 +184,7 @@ public class MainTest {
128L,
422762372923520L,
192L);
var filled = fillMask(rng, extractSlots(mask), mask.toGrid(), dict.index());
var filled = fillMask(rng, extractSlots(mask, dict.index()), mask.toGrid());
Assertions.assertTrue(filled.ok(), "Puzzle generation failed (not ok)");
Assertions.assertEquals(18, filled.wordCount(), "Number of assigned words changed");
Assertions.assertEquals("SLEDE", Lemma.asWord(filled.clueMap()[282]));

View File

@@ -280,12 +280,12 @@ public class SwedishGeneratorTest {
// 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 slots = extractSlots(clues);
var dict = new Dict(WORDS2);
var slots = extractSlots(clues, dict.index());
assertEquals(1, slots.length);
var s = slots[0];
assertTrue(s.length() >= 2);
assertTrue(Slot.length(s.lo(), s.hi()) >= 2);
assertEquals(OFF_0_0, Slot.clueIndex(s.key()));
assertEquals(CLUE_RIGHT, Slot.dir(s.key()));
}
@@ -396,10 +396,9 @@ public class SwedishGeneratorTest {
counts[2] = 3;
var dict = new Dict(WORDS);
var entry5 = dict.index()[5];
var sScore = Slot.from(0, (1L << 1) | (1L << 2), 0L);
// cross = (counts[1]-1) + (counts[2]-1) = 1 + 2 = 3
// score = 3 * 10 + len(2) = 32
assertEquals(32, slotScore(counts, sScore));
assertEquals(32, slotScore(counts, (1L << 1) | (1L << 2), 0L));
// 3. Test candidateCountForPattern
var ctx = Context.get();