introduce bitloops
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user