introduce bitloops
This commit is contained in:
@@ -85,8 +85,7 @@ public class ExportFormatTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testExportFormatEmpty() {
|
void testExportFormatEmpty() {
|
||||||
var swe = new SwedishGenerator(new Rng(0), new int[STACK_SIZE], Clues.createEmpty());
|
var grid = SwedishGeneratorTest.createEmpty();
|
||||||
var grid = Grid.createEmpty();
|
|
||||||
val clues = Clues.createEmpty();
|
val clues = Clues.createEmpty();
|
||||||
var fillResult = new FillResult(true, new Gridded(grid), new long[300], new FillStats(0, 0, 0, 0));
|
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);
|
var puzzleResult = new PuzzleResult(new Clued(clues), fillResult);
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import static puzzle.SwedishGenerator.*;
|
|||||||
|
|
||||||
public class SwedishGeneratorTest {
|
public class SwedishGeneratorTest {
|
||||||
|
|
||||||
|
static Grid createEmpty() { return new Grid(new byte[SIZE], X, X); }
|
||||||
record Context(long[] bitset) {
|
record Context(long[] bitset) {
|
||||||
|
|
||||||
public Context() { this(new long[2500]); }
|
public Context() { this(new long[2500]); }
|
||||||
@@ -76,7 +77,7 @@ public class SwedishGeneratorTest {
|
|||||||
static final byte D_BYTE_2 = CLUE_RIGHT;
|
static final byte D_BYTE_2 = CLUE_RIGHT;
|
||||||
@Test
|
@Test
|
||||||
void testPatternForSlotAllLetters() {
|
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 slot = Slot.from(18 << Slot.BIT_FOR_DIR | (CLUE_RIGHT), 7L, 0L);
|
||||||
var pattern = patternForSlot(grid, slot);
|
var pattern = patternForSlot(grid, slot);
|
||||||
|
|
||||||
@@ -85,7 +86,7 @@ public class SwedishGeneratorTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testPatternForSlotMixed() {
|
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 slot = Slot.from(1 << Slot.BIT_FOR_DIR | (CLUE_RIGHT), 7L, 0L);
|
||||||
var pattern = patternForSlot(grid, slot);
|
var pattern = patternForSlot(grid, slot);
|
||||||
|
|
||||||
@@ -94,7 +95,7 @@ public class SwedishGeneratorTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testPatternForSlotAllDashes() {
|
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 slot = Slot.from(1 << Slot.BIT_FOR_DIR | (CLUE_RIGHT), 7L, 0L);
|
||||||
var pattern = patternForSlot(grid, slot);
|
var pattern = patternForSlot(grid, slot);
|
||||||
|
|
||||||
@@ -103,7 +104,7 @@ public class SwedishGeneratorTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testPatternForSlotSingleLetter() {
|
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 slot = Slot.from(1 << Slot.BIT_FOR_DIR | (CLUE_RIGHT), 7L, 0L);
|
||||||
var pattern = patternForSlot(grid, slot);
|
var pattern = patternForSlot(grid, slot);
|
||||||
|
|
||||||
@@ -129,7 +130,7 @@ public class SwedishGeneratorTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testGrid() {
|
void testGrid() {
|
||||||
var grid = Grid.createEmpty();
|
var grid = createEmpty();
|
||||||
grid.setLetter(OFF_0_0, LETTER_A);
|
grid.setLetter(OFF_0_0, LETTER_A);
|
||||||
assertEquals('A', grid.letter32At(OFF_0_0));
|
assertEquals('A', grid.letter32At(OFF_0_0));
|
||||||
}
|
}
|
||||||
@@ -322,7 +323,7 @@ public class SwedishGeneratorTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testPlaceWord() {
|
void testPlaceWord() {
|
||||||
var grid = Grid.createEmpty();
|
var grid = createEmpty();
|
||||||
// Slot at OFF_0_0 length 3, horizontal (right)
|
// Slot at OFF_0_0 length 3, horizontal (right)
|
||||||
var key = (OFF_0_0 << Slot.BIT_FOR_DIR) | (CLUE_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);
|
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));
|
assertEquals('C', grid.letter32At(OFF_0_2));
|
||||||
|
|
||||||
// 4. Partial placement then conflict (rollback)
|
// 4. Partial placement then conflict (rollback)
|
||||||
grid = Grid.createEmpty();
|
grid = createEmpty();
|
||||||
grid.setLetter(OFF_0_2, LETTER_X); // Conflict at the end
|
grid.setLetter(OFF_0_2, LETTER_X); // Conflict at the end
|
||||||
assertFalse(placeWord(grid, s, w1, undoBuffer, 3));
|
assertFalse(placeWord(grid, s, w1, undoBuffer, 3));
|
||||||
// Verify grid is still empty (except for 'X')
|
// Verify grid is still empty (except for 'X')
|
||||||
@@ -361,7 +362,7 @@ public class SwedishGeneratorTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testBacktrackingHelpers() {
|
void testBacktrackingHelpers() {
|
||||||
var grid = Grid.createEmpty();
|
var grid = createEmpty();
|
||||||
// Slot at 0,1 length 2
|
// Slot at 0,1 length 2
|
||||||
var key = (OFF_0_0 << Slot.BIT_FOR_DIR) | (CLUE_RIGHT);
|
var key = (OFF_0_0 << Slot.BIT_FOR_DIR) | (CLUE_RIGHT);
|
||||||
var lo = (1L << OFF_0_1) | (1L << OFF_0_2);
|
var lo = (1L << OFF_0_1) | (1L << OFF_0_2);
|
||||||
|
|||||||
Reference in New Issue
Block a user