introduce bitloops
This commit is contained in:
@@ -10,20 +10,18 @@ import puzzle.Export.LetterVisit.LetterAt;
|
||||
import puzzle.Export.PuzzleResult;
|
||||
import puzzle.Export.Rewards;
|
||||
import puzzle.Main.Opts;
|
||||
import puzzle.Masker.Clues;
|
||||
import puzzle.SwedishGenerator.Rng;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
import java.util.stream.Collectors;
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
import static puzzle.ExportFormatTest.Clue.DOWN;
|
||||
import static puzzle.ExportFormatTest.Clue.LEFT;
|
||||
import static puzzle.ExportFormatTest.Clue.RIGHT;
|
||||
import static puzzle.ExportFormatTest.Clue.UP;
|
||||
import static puzzle.Export.Clue.DOWN;
|
||||
import static puzzle.Export.Clue.LEFT;
|
||||
import static puzzle.Export.Clue.RIGHT;
|
||||
import static puzzle.Export.Clue.UP;
|
||||
import static puzzle.SwedishGenerator.Dict;
|
||||
import static puzzle.SwedishGenerator.Lemma;
|
||||
import static puzzle.SwedishGenerator.STACK_SIZE;
|
||||
import static puzzle.SwedishGenerator.Slotinfo;
|
||||
import static puzzle.SwedishGenerator.fillMask;
|
||||
import static puzzle.SwedishGeneratorTest.AB;
|
||||
@@ -66,7 +64,7 @@ public class MainTest {
|
||||
var clues = Masker.Clues.createEmpty();
|
||||
val key = Masker.Slot.packSlotKey(OFF_0_0, CLUE_RIGHT);
|
||||
clues.setClueLo(IDX_0_0.lo, CLUE_RIGHT);
|
||||
var grid = new Gridded(clues.toGrid());
|
||||
var grid = new Gridded(clues);
|
||||
val g = grid.grid().g;
|
||||
GridBuilder.placeWord(grid.grid(), g, key, (1L << OFF_0_1) | (1L << OFF_0_2), 0, AB);
|
||||
|
||||
@@ -74,11 +72,11 @@ public class MainTest {
|
||||
assertEquals(1, slots.length);
|
||||
var s = slots[0];
|
||||
assertEquals(8, Masker.Slot.length(s.lo(), s.hi()));
|
||||
var cells = s.walk().toArray();
|
||||
assertEquals(0, SwedishGenerator.IT[cells[0]].r());
|
||||
assertEquals(1, SwedishGenerator.IT[cells[0]].c());
|
||||
assertEquals(0, SwedishGenerator.IT[cells[1]].r());
|
||||
assertEquals(2, SwedishGenerator.IT[cells[1]].c());
|
||||
var cells = Gridded.cellWalk((byte) s.key(), s.lo(), s.hi()).toArray();
|
||||
assertEquals(0, Masker.IT[cells[0]].r());
|
||||
assertEquals(1, Masker.IT[cells[0]].c());
|
||||
assertEquals(0, Masker.IT[cells[1]].r());
|
||||
assertEquals(2, Masker.IT[cells[1]].c());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -98,8 +96,8 @@ public class MainTest {
|
||||
clues.forEachSlot((key, lo, hi) -> {
|
||||
count.incrementAndGet();
|
||||
assertEquals(8, Long.bitCount(lo) + Long.bitCount(hi));
|
||||
assertEquals(0, SwedishGenerator.IT[Long.numberOfTrailingZeros(lo)].r());
|
||||
assertEquals(1, SwedishGenerator.IT[Long.numberOfTrailingZeros(lo)].c());
|
||||
assertEquals(0, Masker.IT[Long.numberOfTrailingZeros(lo)].r());
|
||||
assertEquals(1, Masker.IT[Long.numberOfTrailingZeros(lo)].c());
|
||||
});
|
||||
assertEquals(1, count.get());
|
||||
}
|
||||
@@ -115,7 +113,7 @@ public class MainTest {
|
||||
var clues = new Clued(Masker.Clues.createEmpty());
|
||||
val key = Masker.Slot.packSlotKey(OFF_2_1, CLUE_UP);
|
||||
clues.setClueLo(IDX_2_1.lo, CLUE_UP);
|
||||
var grid = new Gridded(clues.toGrid());
|
||||
var grid = new Gridded(clues.c());
|
||||
|
||||
// Test set/get
|
||||
GridBuilder.placeWord(grid.grid(), grid.grid().g, key, (1L << OFF_1_1) | (1L << OFF_0_1), 0, AZ);
|
||||
@@ -184,7 +182,7 @@ public class MainTest {
|
||||
@Test
|
||||
void testFiller2() {
|
||||
val rng = new Rng(-343913721);
|
||||
val mask = Clues.parse(
|
||||
val mask = Clued.parse(
|
||||
"1 000000\n" +
|
||||
"1 \n" +
|
||||
"1 \n" +
|
||||
@@ -203,7 +201,7 @@ public class MainTest {
|
||||
@Test
|
||||
void testFiller() {
|
||||
val rng = new Rng(-343913721);
|
||||
val mask = Clues.parse(
|
||||
val mask = Clued.parse(
|
||||
" 3 300\n" +
|
||||
" 1 \n" +
|
||||
" 1 \n" +
|
||||
@@ -214,13 +212,13 @@ public class MainTest {
|
||||
"21 22 3");
|
||||
var slotInfo = Masker.slots(mask.c(), dict.index());
|
||||
var grid = Slotinfo.grid(slotInfo);
|
||||
var filled = fillMask(rng, slotInfo, grid, false);
|
||||
var filled = fillMask(rng, slotInfo, grid);
|
||||
Assertions.assertTrue(filled.ok(), "Puzzle generation failed (not ok)");
|
||||
Assertions.assertEquals(13, Slotinfo.wordCount(0, slotInfo), "Number of assigned words changed");
|
||||
Assertions.assertEquals("WAANZIN", Lemma.asWord(slotInfo[0].assign().w));
|
||||
Assertions.assertEquals("WAANZIN", Lemma.asWord(slotInfo[0].assign().w, Export.BYTES.get()));
|
||||
Assertions.assertEquals(-1L, grid.lo);
|
||||
Assertions.assertEquals(-1L, grid.hi);
|
||||
var g = new Gridded(grid);
|
||||
var g = new Gridded(grid, mask.c());
|
||||
g.gridToString(mask.c());
|
||||
var aa = new PuzzleResult(mask, g, slotInfo, filled).exportFormatFromFilled(1, new Rewards(1, 1, 1));
|
||||
System.out.println(String.join("\n", aa.grid()));
|
||||
|
||||
Reference in New Issue
Block a user