introduce bitloops
This commit is contained in:
@@ -18,6 +18,11 @@ import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
import static puzzle.SwedishGenerator.*;
|
||||
import static puzzle.SwedishGeneratorTest.*;
|
||||
import static puzzle.SwedishGeneratorTest.Idx.IDX_0_0;
|
||||
import static puzzle.SwedishGeneratorTest.Idx.IDX_0_1;
|
||||
import static puzzle.SwedishGeneratorTest.Idx.IDX_1_0;
|
||||
import static puzzle.SwedishGeneratorTest.Idx.IDX_1_1;
|
||||
import static puzzle.SwedishGeneratorTest.Idx.IDX_2_1;
|
||||
import static puzzle.SwedishGeneratorTest.OFF_0_0;
|
||||
import static puzzle.SwedishGeneratorTest.OFF_0_1;
|
||||
import static puzzle.SwedishGeneratorTest.OFF_0_2;
|
||||
@@ -41,7 +46,7 @@ public class MainTest {
|
||||
|
||||
var clues = Clues.createEmpty();
|
||||
val key = Slot.packSlotKey(OFF_0_0, CLUE_RIGHT);
|
||||
clues.setClue(OFF_0_0, CLUE_RIGHT);
|
||||
clues.setClueLo(IDX_0_0.lo, CLUE_RIGHT);
|
||||
var grid = new Gridded(clues.toGrid());
|
||||
val g = grid.grid().g;
|
||||
placeWord(grid.grid(), g, key, (1L << OFF_0_1) | (1L << OFF_0_2), 0, AB);
|
||||
@@ -69,7 +74,7 @@ public class MainTest {
|
||||
@Test
|
||||
void testForEachSlot() {
|
||||
var clues = Clues.createEmpty();
|
||||
clues.setClue(OFF_0_0, CLUE_RIGHT);
|
||||
clues.setClueLo(IDX_0_0.lo, CLUE_RIGHT);
|
||||
var count = new AtomicInteger(0);
|
||||
clues.forEachSlot((key, lo, hi) -> {
|
||||
count.incrementAndGet();
|
||||
@@ -90,7 +95,7 @@ public class MainTest {
|
||||
public void testGridBasics() {
|
||||
var clues = Clues.createEmpty();
|
||||
val key = Slot.packSlotKey(OFF_2_1, CLUE_UP);
|
||||
clues.setClue(OFF_2_1, CLUE_UP);
|
||||
clues.setClueLo(IDX_2_1.lo, CLUE_UP);
|
||||
var grid = new Gridded(clues.toGrid());
|
||||
|
||||
// Test set/get
|
||||
@@ -98,47 +103,47 @@ public class MainTest {
|
||||
val arr = grid.stream(clues).collect(Collectors.toMap(LetterAt::index, LetterAt::letter));
|
||||
Assertions.assertEquals(LETTER_A, arr.get(OFF_1_1));
|
||||
Assertions.assertEquals(LETTER_Z, arr.get(OFF_0_1));
|
||||
Assertions.assertEquals(CLUE_UP, clues.digitAt(OFF_2_1));
|
||||
Assertions.assertEquals(CLUE_UP, (byte) clues.digitAtLo(OFF_2_1));
|
||||
|
||||
// Test isLetterAt
|
||||
Assertions.assertTrue(clues.notClue(OFF_0_0));
|
||||
Assertions.assertTrue(clues.notClue(OFF_1_2));
|
||||
Assertions.assertTrue(clues.notClue(OFF_2_3));
|
||||
Assertions.assertFalse(clues.isClue(OFF_1_1));
|
||||
Assertions.assertFalse(clues.isClueLo(OFF_1_1));
|
||||
|
||||
// Test isDigitAt
|
||||
Assertions.assertFalse(clues.isClue(0));
|
||||
Assertions.assertTrue(clues.isClue(OFF_2_1));
|
||||
Assertions.assertEquals(CLUE_UP, clues.digitAt(OFF_2_1));
|
||||
Assertions.assertFalse(clues.isClue(OFF_2_3));
|
||||
Assertions.assertFalse(clues.isClue(OFF_1_1));
|
||||
Assertions.assertFalse(clues.isClueLo(OFF_0_0));
|
||||
Assertions.assertTrue(clues.isClueLo(OFF_2_1));
|
||||
Assertions.assertEquals(CLUE_UP, (byte) clues.digitAtLo(OFF_2_1));
|
||||
Assertions.assertFalse(clues.isClueLo(OFF_2_3));
|
||||
Assertions.assertFalse(clues.isClueLo(OFF_1_1));
|
||||
|
||||
// Test isLettercell
|
||||
Assertions.assertTrue(clues.notClue(OFF_0_0)); // 'A' is letter
|
||||
Assertions.assertTrue(clues.isClue(OFF_2_1)); // digit
|
||||
Assertions.assertTrue(clues.isClueLo(OFF_2_1)); // digit
|
||||
Assertions.assertTrue(clues.notClue(OFF_1_1)); // '#' is lettercell
|
||||
}
|
||||
@Test
|
||||
public void testCluesDeepCopy() {
|
||||
var grid = Clues.createEmpty();
|
||||
grid.setClue(OFF_0_0, (byte) 1);
|
||||
grid.setClue(OFF_0_1, (byte) 2);
|
||||
grid.setClue(OFF_1_0, (byte) 3);
|
||||
grid.setClue(OFF_1_1, (byte) 0);
|
||||
grid.setClueLo(IDX_0_0.lo, (byte) 1);
|
||||
grid.setClueLo(IDX_0_1.lo, (byte) 2);
|
||||
grid.setClueLo(IDX_1_0.lo, (byte) 3);
|
||||
grid.setClueLo(IDX_1_1.lo, (byte) 0);
|
||||
|
||||
var copy = grid.deepCopyGrid();
|
||||
Assertions.assertEquals((byte) 1, copy.digitAt(0));
|
||||
Assertions.assertEquals(1, copy.digitAtLo(0));
|
||||
|
||||
copy.setClue(0, (byte) 3);
|
||||
Assertions.assertEquals((byte) 3, copy.digitAt(0));
|
||||
Assertions.assertEquals((byte) 1, grid.digitAt(0)); // Original should be unchanged
|
||||
copy.setClueLo(IDX_0_0.lo, (byte) 3);
|
||||
Assertions.assertEquals(3, copy.digitAtLo(0));
|
||||
Assertions.assertEquals(1, grid.digitAtLo(0)); // Original should be unchanged
|
||||
}
|
||||
@Test
|
||||
public void testMini() {
|
||||
val idx = OFF_1_1;
|
||||
val idx = IDX_1_1;
|
||||
var clues = Clues.createEmpty();
|
||||
clues.setClue(idx, CLUE_LEFT);
|
||||
Assertions.assertTrue(clues.isClue(idx));
|
||||
clues.setClueLo(idx.lo, CLUE_LEFT);
|
||||
Assertions.assertTrue(clues.isClueLo(idx.index));
|
||||
}
|
||||
@Test
|
||||
void testMaskerCreation() {
|
||||
|
||||
Reference in New Issue
Block a user