introduce bitloops

This commit is contained in:
mike
2026-01-14 08:24:58 +01:00
parent aafa5d4d43
commit 6e2ecae082
2 changed files with 10 additions and 10 deletions

View File

@@ -85,8 +85,7 @@ public class ExportFormatTest {
@Test
void testExportFormatEmpty() {
var swe = new SwedishGenerator(new Rng(0), new int[STACK_SIZE], Clues.createEmpty());
var grid = Grid.createEmpty();
var grid = SwedishGeneratorTest.createEmpty();
val clues = Clues.createEmpty();
var fillResult = new FillResult(true, new Gridded(grid), new long[300], new FillStats(0, 0, 0, 0));
var puzzleResult = new PuzzleResult(new Clued(clues), fillResult);

View File

@@ -12,6 +12,7 @@ import static puzzle.SwedishGenerator.*;
public class SwedishGeneratorTest {
static Grid createEmpty() { return new Grid(new byte[SIZE], X, X); }
record Context(long[] bitset) {
public Context() { this(new long[2500]); }
@@ -76,7 +77,7 @@ public class SwedishGeneratorTest {
static final byte D_BYTE_2 = CLUE_RIGHT;
@Test
void testPatternForSlotAllLetters() {
var grid = new Grid(new byte[]{ LETTER_A, LETTER_B, LETTER_C });
var grid = new Grid(new byte[]{ LETTER_A, LETTER_B, LETTER_C }, 0, 0);
var slot = Slot.from(18 << Slot.BIT_FOR_DIR | (CLUE_RIGHT), 7L, 0L);
var pattern = patternForSlot(grid, slot);
@@ -85,7 +86,7 @@ public class SwedishGeneratorTest {
@Test
void testPatternForSlotMixed() {
var grid = new Grid(new byte[]{ LETTER_A, DASH, LETTER_C });
var grid = new Grid(new byte[]{ LETTER_A, DASH, LETTER_C }, 0, 0);
var slot = Slot.from(1 << Slot.BIT_FOR_DIR | (CLUE_RIGHT), 7L, 0L);
var pattern = patternForSlot(grid, slot);
@@ -94,7 +95,7 @@ public class SwedishGeneratorTest {
@Test
void testPatternForSlotAllDashes() {
var grid = new Grid(new byte[]{ DASH, DASH, DASH }); // - - -
var grid = new Grid(new byte[]{ DASH, DASH, DASH }, 0, 0); // - - -
var slot = Slot.from(1 << Slot.BIT_FOR_DIR | (CLUE_RIGHT), 7L, 0L);
var pattern = patternForSlot(grid, slot);
@@ -103,7 +104,7 @@ public class SwedishGeneratorTest {
@Test
void testPatternForSlotSingleLetter() {
var grid = new Grid(new byte[]{ LETTER_A, DASH, DASH });
var grid = new Grid(new byte[]{ LETTER_A, DASH, DASH }, 0, 0);
var slot = Slot.from(1 << Slot.BIT_FOR_DIR | (CLUE_RIGHT), 7L, 0L);
var pattern = patternForSlot(grid, slot);
@@ -129,7 +130,7 @@ public class SwedishGeneratorTest {
@Test
void testGrid() {
var grid = Grid.createEmpty();
var grid = createEmpty();
grid.setLetter(OFF_0_0, LETTER_A);
assertEquals('A', grid.letter32At(OFF_0_0));
}
@@ -322,7 +323,7 @@ public class SwedishGeneratorTest {
@Test
void testPlaceWord() {
var grid = Grid.createEmpty();
var grid = createEmpty();
// Slot at OFF_0_0 length 3, horizontal (right)
var key = (OFF_0_0 << Slot.BIT_FOR_DIR) | (CLUE_RIGHT);
var lo = (1L << OFF_0_0) | (1L << OFF_0_1) | (1L << OFF_0_2);
@@ -350,7 +351,7 @@ public class SwedishGeneratorTest {
assertEquals('C', grid.letter32At(OFF_0_2));
// 4. Partial placement then conflict (rollback)
grid = Grid.createEmpty();
grid = createEmpty();
grid.setLetter(OFF_0_2, LETTER_X); // Conflict at the end
assertFalse(placeWord(grid, s, w1, undoBuffer, 3));
// Verify grid is still empty (except for 'X')
@@ -361,7 +362,7 @@ public class SwedishGeneratorTest {
@Test
void testBacktrackingHelpers() {
var grid = Grid.createEmpty();
var grid = createEmpty();
// Slot at 0,1 length 2
var key = (OFF_0_0 << Slot.BIT_FOR_DIR) | (CLUE_RIGHT);
var lo = (1L << OFF_0_1) | (1L << OFF_0_2);