introduce bitloops

This commit is contained in:
mike
2026-01-12 18:28:52 +01:00
parent a0862fcc43
commit 16676d633a
3 changed files with 103 additions and 96 deletions

View File

@@ -309,18 +309,18 @@ public class SwedishGeneratorTest {
var lo = (1L << Grid.offset(0, 0)) | (1L << Grid.offset(0, 1)) | (1L << Grid.offset(0, 2));
var s = Slot.from(key, lo, 0L);
var w1 = Lemma.from("ABC");
var undoBuffer = new int[10];
var undoBuffer = new long[10];
// 1. Successful placement in empty grid
assertTrue(placeWord(grid, s, w1, undoBuffer, 0));
assertEquals('A', grid.byteAt(0));
assertEquals('B', grid.byteAt(Grid.offset(0, 1)));
assertEquals('C', grid.byteAt(Grid.offset(0, 2)));
assertEquals(0b111L, undoBuffer[0]);
assertEquals(lo, undoBuffer[0]);
// 2. Successful placement with partial overlap (same characters)
assertTrue(placeWord(grid, s, w1, undoBuffer, 1));
assertEquals(0L, undoBuffer[1]); // 0 new characters placed
assertEquals(0L, undoBuffer[2]); // 0 new characters placed
// 3. Conflict: place "ABD" where "ABC" is
var w2 = Lemma.from("ABD");
@@ -348,15 +348,15 @@ public class SwedishGeneratorTest {
var lo = (1L << Grid.offset(0, 1)) | (1L << Grid.offset(0, 2));
var s = Slot.from(key, lo, 0L);
var w = Lemma.from("AZ");
var undoBuffer = new int[10];
var undoBuffer = new long[10];
var placed = placeWord(grid, s, w, undoBuffer, 0);
assertTrue(placed);
assertEquals('A', grid.byteAt(Grid.offset(0, 1)));
assertEquals('Z', grid.byteAt(Grid.offset(0, 2)));
assertEquals(0b11L, undoBuffer[0]);
assertEquals(lo, undoBuffer[0]);
s.undoPlace(grid, undoBuffer[0]);
grid.undoPlace( undoBuffer[0], undoBuffer[1]);
assertEquals(DASH, grid.byteAt(Grid.offset(0, 1)));
assertEquals(DASH, grid.byteAt(Grid.offset(0, 2)));
}