redo
This commit is contained in:
@@ -5,12 +5,11 @@ import anno.DictGen;
|
||||
import lombok.val;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import puzzle.Export.Vestigium;
|
||||
import puzzle.Export.Signa;
|
||||
import puzzle.Export.Puzzle;
|
||||
import puzzle.Export.Lettrix;
|
||||
import puzzle.Export.PuzzleResult;
|
||||
import puzzle.Export.Rewards;
|
||||
import puzzle.Riddle.Rewards;
|
||||
import puzzle.Main.Opts;
|
||||
import puzzle.SwedishGenerator.Rng;
|
||||
import puzzle.dict950.DictData950;
|
||||
@@ -20,7 +19,7 @@ import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
import static precomp.Const9x8.*;
|
||||
import static precomp.Const9x8.Cell.*;
|
||||
import static puzzle.Export.Clue.*;
|
||||
import static puzzle.Riddle.Clue.*;
|
||||
import static puzzle.LemmaData.AB;
|
||||
import static puzzle.LemmaData.AZ;
|
||||
import static puzzle.SwedishGenerator.Lemma;
|
||||
@@ -104,7 +103,7 @@ public class MainTest {
|
||||
val map = grid.collect(Collectors.toMap(Lettrix::index, Lettrix::letter));
|
||||
Assertions.assertEquals(LETTER_A, map.get(OFF_1_1));
|
||||
Assertions.assertEquals(LETTER_Z, map.get(OFF_0_1));
|
||||
var clueMap = clues.stream().collect(Collectors.toMap(Vestigium::index, Vestigium::clue));
|
||||
var clueMap = clues.stream().collect(Collectors.toMap(Riddle.Vestigium::index, Riddle.Vestigium::clue));
|
||||
Assertions.assertEquals(1, clueMap.size());
|
||||
Assertions.assertEquals(UP2.dir, clueMap.get(OFF_2_1));
|
||||
|
||||
@@ -117,7 +116,7 @@ public class MainTest {
|
||||
// Test isDigitAt
|
||||
Assertions.assertFalse(clues.isClueLo(OFF_0_0));
|
||||
Assertions.assertTrue(clues.isClueLo(OFF_2_1));
|
||||
clueMap = clues.stream().collect(Collectors.toMap(Vestigium::index, Vestigium::clue));
|
||||
clueMap = clues.stream().collect(Collectors.toMap(Riddle.Vestigium::index, Riddle.Vestigium::clue));
|
||||
Assertions.assertEquals(UP2.dir, clueMap.get(OFF_2_1));
|
||||
Assertions.assertFalse(clues.isClueLo(OFF_2_3));
|
||||
Assertions.assertFalse(clues.isClueLo(OFF_1_1));
|
||||
@@ -132,11 +131,11 @@ public class MainTest {
|
||||
var clues = Signa.of(r0c0d1, r0c1d2, r1c0d3, r1c1d0);
|
||||
|
||||
var copy = clues.deepCopyGrid();
|
||||
var clueMap = clues.stream().collect(Collectors.toMap(Vestigium::index, Vestigium::clue));
|
||||
var clueMap = clues.stream().collect(Collectors.toMap(Riddle.Vestigium::index, Riddle.Vestigium::clue));
|
||||
Assertions.assertEquals(RIGHT1.dir, clueMap.get(OFF_0_0));
|
||||
|
||||
copy.setClue(r0c0d0);
|
||||
var copied = copy.stream().collect(Collectors.toMap(Vestigium::index, Vestigium::clue));
|
||||
var copied = copy.stream().collect(Collectors.toMap(Riddle.Vestigium::index, Riddle.Vestigium::clue));
|
||||
Assertions.assertEquals(DOWN0.dir, copied.get(OFF_0_0));
|
||||
Assertions.assertEquals(RIGHT1.dir, clueMap.get(OFF_0_0));
|
||||
}
|
||||
@@ -158,7 +157,7 @@ public class MainTest {
|
||||
r7c0d2, r7c1d2, r7c2d2, r7c8d3
|
||||
);
|
||||
Assertions.assertEquals(20, mask.clueCount());
|
||||
val map = mask.stream().collect(Collectors.toMap(Vestigium::index, Vestigium::clue));
|
||||
val map = mask.stream().collect(Collectors.toMap(Riddle.Vestigium::index, Riddle.Vestigium::clue));
|
||||
Assertions.assertEquals(20, map.size());
|
||||
var slots = Masker.slots(mask.c(), DictData950.DICT950.index(), DictData950.DICT950.reversed());
|
||||
// var filled = fillMask(rng, slotInfo, grid, false);
|
||||
|
||||
@@ -4,9 +4,8 @@ import lombok.val;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import puzzle.Export.Signa;
|
||||
import puzzle.Export.Puzzle;
|
||||
import puzzle.Export.Placed;
|
||||
import puzzle.Export.PuzzleResult;
|
||||
import puzzle.Export.Rewards;
|
||||
import puzzle.Riddle.Rewards;
|
||||
import puzzle.SwedishGenerator.Assign;
|
||||
import puzzle.SwedishGenerator.FillResult;
|
||||
import puzzle.SwedishGenerator.Lemma;
|
||||
@@ -27,10 +26,13 @@ import static puzzle.Masker.STACK_SIZE;
|
||||
|
||||
public class MarkerTest {
|
||||
|
||||
private static Masker emptyMasker() {
|
||||
return new Masker(new Rng(42), new int[STACK_SIZE], Clues.createEmpty());
|
||||
}
|
||||
|
||||
@Test
|
||||
void testValidRandomMask() {
|
||||
var rng = new Rng(42);
|
||||
var masker = new Masker(rng, new int[STACK_SIZE], Clues.createEmpty());
|
||||
var masker = emptyMasker();
|
||||
for (var i = 0; i < 200; i++) {
|
||||
for (var j = 19; j < 24; j++) {
|
||||
var clues = masker.randomMask(j);
|
||||
@@ -40,15 +42,13 @@ public class MarkerTest {
|
||||
}
|
||||
@Test
|
||||
void testValidMutate() {
|
||||
var rng = new Rng(42);
|
||||
var cache = Clues.createEmpty();
|
||||
var masker = new Masker(rng, new int[STACK_SIZE], cache);
|
||||
var masker = emptyMasker();
|
||||
var sim = 0.0;
|
||||
var simCount = 0.0;
|
||||
for (var i = 0; i < 200; i++) {
|
||||
for (var j = 19; j < 24; j++) {
|
||||
var clues = masker.randomMask(j);
|
||||
val orig = cache.from(clues);
|
||||
val orig = masker.cache(clues);
|
||||
simCount++;
|
||||
masker.mutate(clues);
|
||||
sim += Masker.similarity(orig, clues);
|
||||
@@ -59,9 +59,7 @@ public class MarkerTest {
|
||||
}
|
||||
@Test
|
||||
void testCross() {
|
||||
var rng = new Rng(42);
|
||||
var cache = Clues.createEmpty();
|
||||
var masker = new Masker(rng, new int[STACK_SIZE], cache);
|
||||
var masker = emptyMasker();
|
||||
var sim = 0.0;
|
||||
var simCount = 0.0;
|
||||
for (var i = 0; i < 200; i++) {
|
||||
@@ -97,7 +95,7 @@ public class MarkerTest {
|
||||
|
||||
@Test
|
||||
void testIsValid() {
|
||||
var masker = new Masker(new Rng(42), new int[STACK_SIZE], Clues.createEmpty());
|
||||
var masker = emptyMasker();
|
||||
assertTrue(masker.isValid(Clues.createEmpty()));
|
||||
|
||||
// Valid clue: Right from (0,0) in 9x8 grid. Length is 8.
|
||||
@@ -132,7 +130,7 @@ public class MarkerTest {
|
||||
|
||||
@Test
|
||||
void testIntersectionConstraint() {
|
||||
var masker = new Masker(new Rng(42), new int[STACK_SIZE], Clues.createEmpty());
|
||||
var masker = emptyMasker();
|
||||
// Clue 1: (0,0) Right. Slot cells: (0,1), (0,2), (0,3), (0,4), (0,5), (0,6), (0,7), (0,8)
|
||||
// Clue 2: (1,2) Up. Slot cells: (0,2)
|
||||
// Intersection is exactly 1 cell (0,2). Valid.
|
||||
@@ -152,7 +150,7 @@ public class MarkerTest {
|
||||
|
||||
@Test
|
||||
void testInvalidDirectionBits() {
|
||||
var masker = new Masker(new Rng(42), new int[STACK_SIZE], Clues.createEmpty());
|
||||
var masker = emptyMasker();
|
||||
var g = Clues.createEmpty();
|
||||
// Dir 6 (x=1, r=1, v=0) is invalid
|
||||
g.setClueLo(1L << 0, (byte) 6);
|
||||
@@ -165,8 +163,7 @@ public class MarkerTest {
|
||||
}
|
||||
@Test
|
||||
void testConnectivityPenalty() {
|
||||
var rng = new Rng(42);
|
||||
var masker = new Masker(rng, new int[STACK_SIZE], Clues.createEmpty());
|
||||
var masker = emptyMasker();
|
||||
|
||||
// 1. Maak een masker met één component van clues (bijv. 2 clues die elkaar kruisen)
|
||||
var singleComp = Clues.createEmpty().setClue(r0c0d1).setClue(r2c2d2);
|
||||
@@ -209,8 +206,7 @@ public class MarkerTest {
|
||||
|
||||
@Test
|
||||
void testCornerClueConnectivity() {
|
||||
var rng = new Rng(42);
|
||||
var masker = new Masker(rng, new int[STACK_SIZE], Clues.createEmpty());
|
||||
var masker = emptyMasker();
|
||||
|
||||
// Clue A: (2,0) Right. Slot: (2,1), (2,2), (2,3), ...
|
||||
// Clue B: (1,2) Corner Down. Word starts at (1,3) en gaat omlaag: (1,3), (2,3), (3,3)...
|
||||
@@ -316,7 +312,7 @@ public class MarkerTest {
|
||||
assertEquals(1, exported.words().length);
|
||||
var w = exported.words()[0];
|
||||
assertEquals("TEST", w.word());
|
||||
assertEquals(Placed.HORIZONTAL, w.direction());
|
||||
assertEquals(Riddle.Placed.HORIZONTAL, w.direction());
|
||||
|
||||
// The bounding box should include (0,0) for the arrow and (0,1)-(0,4) for the word.
|
||||
// minR=0, maxR=0, minC=0, maxC=4
|
||||
|
||||
@@ -5,7 +5,6 @@ import anno.DictGen;
|
||||
import anno.Dictionaries;
|
||||
import lombok.val;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import puzzle.Export.Clue;
|
||||
import puzzle.Export.Signa;
|
||||
import puzzle.Export.Puzzle;
|
||||
import puzzle.SwedishGenerator.Rng;
|
||||
@@ -173,7 +172,7 @@ public class PerformanceTest {
|
||||
|
||||
for (var slot : slots) {
|
||||
var key = slot.key();
|
||||
var dir = Clue.from(Masker.Slot.dir(key));
|
||||
var dir = Riddle.Clue.from(Masker.Slot.dir(key));
|
||||
var clueIdx = Masker.Slot.clueIndex(key);
|
||||
|
||||
var cr = Masker.IT[clueIdx].r();
|
||||
|
||||
@@ -6,15 +6,10 @@ import gen.Test123X_Neighbors9x8;
|
||||
import lombok.val;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import puzzle.Export.Puzzle;
|
||||
import puzzle.Export.PuzzleResult;
|
||||
import puzzle.Export.Rewards;
|
||||
import puzzle.Export.Signa;
|
||||
import puzzle.Export.Vestigium;
|
||||
import puzzle.Riddle.Rewards;
|
||||
import puzzle.SwedishGenerator.Rng;
|
||||
import puzzle.dict800.DictData800;
|
||||
import puzzle.dict800_4.DictData800_4;
|
||||
import java.util.Arrays;
|
||||
import java.util.stream.Collectors;
|
||||
import static precomp.Const3x4.Cell.r0c0d4;
|
||||
import static precomp.Const3x4.Cell.r0c2d0;
|
||||
@@ -42,7 +37,7 @@ public class TestDuplication {
|
||||
r2c0d1,
|
||||
r3c0d1);
|
||||
Assertions.assertEquals(5, mask.clueCount());
|
||||
val map = mask.stream().collect(Collectors.toMap(Vestigium::index, Vestigium::clue));
|
||||
val map = mask.stream().collect(Collectors.toMap(Riddle.Vestigium::index, Riddle.Vestigium::clue));
|
||||
Assertions.assertEquals(5, map.size());
|
||||
var slots = Masker_Neighbors3x4.slots(mask.c(), DictData800_4.DICT800);
|
||||
var grid = Masker_Neighbors3x4.grid(slots);
|
||||
@@ -53,7 +48,7 @@ public class TestDuplication {
|
||||
var result = new ExportX_Const3x4.PuzzleResult(new ExportX_Const3x4.Signa(mask.c()), grid1, slots, filled);
|
||||
if (filled.ok()) {
|
||||
System.out.println(filled);
|
||||
val res = result.exportFormatFromFilled(new ExportX_Const3x4.Rewards(0, 0, 0), Masker_Neighbors3x4.IT);
|
||||
val res = result.exportFormatFromFilled(new Rewards(0, 0, 0), Masker_Neighbors3x4.IT);
|
||||
System.out.println(String.join("\n", res.grid()));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user