introduce bitloops

This commit is contained in:
mike
2026-01-14 04:22:46 +01:00
parent eeae90a886
commit 0405d11753
4 changed files with 57 additions and 39 deletions

View File

@@ -90,10 +90,10 @@ public class MainTest {
grid.setLetter(OFF_0_0, LETTER_A);
grid.setLetter(OFF_2_3, LETTER_Z);
Assertions.assertEquals(LETTER_A, grid.byteAt(OFF_0_0));
Assertions.assertEquals(CLUE_UP, grid.byteAt(OFF_1_2));
Assertions.assertEquals(LETTER_Z, grid.byteAt(OFF_2_3));
Assertions.assertEquals(DASH, grid.byteAt(OFF_1_1));
Assertions.assertEquals(LETTER_A, grid.letter32At(OFF_0_0));
Assertions.assertEquals(CLUE_UP, grid.letter32At(OFF_1_2));
Assertions.assertEquals(LETTER_Z, grid.letter32At(OFF_2_3));
Assertions.assertEquals(DASH, grid.letter32At(OFF_1_1));
// Test isLetterAt
Assertions.assertTrue(grid.notClue(OFF_0_0));
@@ -104,7 +104,7 @@ public class MainTest {
// Test isDigitAt
Assertions.assertFalse(grid.isClue(0));
Assertions.assertTrue(grid.isClue(OFF_1_2));
Assertions.assertEquals(CLUE_UP, grid.digitAt(OFF_1_2));
Assertions.assertEquals(CLUE_UP, clues.digitAt(OFF_1_2));
Assertions.assertFalse(grid.isClue(OFF_2_3));
Assertions.assertFalse(grid.isClue(OFF_1_1));

View File

@@ -91,7 +91,7 @@ public class SwedishGeneratorTest {
void testGrid() {
var grid = Grid.createEmpty();
grid.setLetter(OFF_0_0, LETTER_A);
assertEquals('A', grid.byteAt(OFF_0_0));
assertEquals('A', grid.letter32At(OFF_0_0));
}
@Test
@@ -311,9 +311,9 @@ public class SwedishGeneratorTest {
// 1. Successful placement in empty grid
assertTrue(placeWord(grid, s, w1, undoBuffer, 0));
assertEquals('A', grid.byteAt(OFF_0_0));
assertEquals('B', grid.byteAt(OFF_0_1));
assertEquals('C', grid.byteAt(OFF_0_2));
assertEquals('A', grid.letter32At(OFF_0_0));
assertEquals('B', grid.letter32At(OFF_0_1));
assertEquals('C', grid.letter32At(OFF_0_2));
assertEquals(lo, undoBuffer[0]);
// 2. Successful placement with partial overlap (same characters)
@@ -324,18 +324,18 @@ public class SwedishGeneratorTest {
var w2 = Lemma.from("ABD");
assertFalse(placeWord(grid, s, w2, undoBuffer, 2));
// Verify grid is unchanged (still "ABC")
assertEquals('A', grid.byteAt(OFF_0_0));
assertEquals('B', grid.byteAt(OFF_0_1));
assertEquals('C', grid.byteAt(OFF_0_2));
assertEquals('A', grid.letter32At(OFF_0_0));
assertEquals('B', grid.letter32At(OFF_0_1));
assertEquals('C', grid.letter32At(OFF_0_2));
// 4. Partial placement then conflict (rollback)
grid = 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')
assertEquals(DASH, grid.byteAt(OFF_0_0));
assertEquals(DASH, grid.byteAt(OFF_0_1));
assertEquals('X', grid.byteAt(OFF_0_2));
assertEquals(DASH, grid.letter32At(OFF_0_0));
assertEquals(DASH, grid.letter32At(OFF_0_1));
assertEquals('X', grid.letter32At(OFF_0_2));
}
@Test
@@ -350,13 +350,13 @@ public class SwedishGeneratorTest {
var placed = placeWord(grid, s, w, undoBuffer, 0);
assertTrue(placed);
assertEquals('A', grid.byteAt(OFF_0_1));
assertEquals('Z', grid.byteAt(OFF_0_2));
assertEquals('A', grid.letter32At(OFF_0_1));
assertEquals('Z', grid.letter32At(OFF_0_2));
assertEquals(lo, undoBuffer[0]);
grid.undoPlace(undoBuffer[0], undoBuffer[1]);
assertEquals(DASH, grid.byteAt(OFF_0_1));
assertEquals(DASH, grid.byteAt(OFF_0_2));
assertEquals(DASH, grid.letter32At(OFF_0_1));
assertEquals(DASH, grid.letter32At(OFF_0_2));
}
@Test