Gather data
This commit is contained in:
@@ -540,17 +540,16 @@ public record SwedishGenerator(int[] buff) {
|
||||
return penalty;
|
||||
}
|
||||
|
||||
// ---------------- Mask generation ----------------
|
||||
Grid randomMask2(Rng rng) {
|
||||
var g = makeEmptyGrid();
|
||||
|
||||
int placed = 0, guard = 0;
|
||||
Grid randomMask(Rng rng) {
|
||||
var g = makeEmptyGrid();
|
||||
int placed = 0, guard = 0;
|
||||
|
||||
while (placed < TARGET_CLUES && guard++ < 4000) {
|
||||
var idx = rng.randint(0, SIZE - 1);
|
||||
var idx = Grid.offset(rng.randint(0, R - 1),
|
||||
rng.randint(0, C - 1));
|
||||
if (g.isDigitAt(idx)) continue;
|
||||
|
||||
var d = OFFSETS[rng.randbyte(1, 4)];
|
||||
|
||||
g.setByteAt(idx, d.dbyte);
|
||||
if (!hasRoomForClue(g, idx, d)) {
|
||||
g.clear(idx);
|
||||
@@ -560,27 +559,7 @@ public record SwedishGenerator(int[] buff) {
|
||||
}
|
||||
return g;
|
||||
}
|
||||
Grid randomMask(Rng rng) {
|
||||
var g = makeEmptyGrid();
|
||||
var targetClues = (int) Math.round(SIZE * 0.25);
|
||||
int placed = 0, guard = 0;
|
||||
|
||||
while (placed < targetClues && guard++ < 4000) {
|
||||
var r = rng.randint(0, R - 1);
|
||||
var c = rng.randint(0, C - 1);
|
||||
if (g.isDigitAt(r, c)) continue;
|
||||
|
||||
var d = (char) ('0' + rng.randint(1, c == 0 ? CLUE_SIZE : 4));
|
||||
g.setCharAt(r, c, d);
|
||||
if (!hasRoomForClue(g, r, c, d)) {
|
||||
g.setCharAt(r, c, C_DASH);
|
||||
continue;
|
||||
}
|
||||
placed++;
|
||||
}
|
||||
return g;
|
||||
}
|
||||
Grid mutate2(Rng rng, Grid grid) {
|
||||
Grid mutate(Rng rng, Grid grid) {
|
||||
var g = grid.deepCopyGrid();
|
||||
var cx = rng.randint(0, R - 1);
|
||||
var cy = rng.randint(0, C - 1);
|
||||
@@ -600,26 +579,6 @@ public record SwedishGenerator(int[] buff) {
|
||||
}
|
||||
return g;
|
||||
}
|
||||
Grid mutate(Rng rng, Grid grid) {
|
||||
var g = grid.deepCopyGrid();
|
||||
var cx = rng.randint(0, R - 1);
|
||||
var cy = rng.randint(0, C - 1);
|
||||
|
||||
var steps = 4;
|
||||
for (var k = 0; k < steps; k++) {
|
||||
var rr = clamp(cx + (rng.randint(-2, 2) + rng.randint(-2, 2)), 0, R - 1);
|
||||
var cc = clamp(cy + (rng.randint(-2, 2) + rng.randint(-2, 2)), 0, C - 1);
|
||||
|
||||
if (g.isDigitAt(rr, cc)) {
|
||||
g.setCharAt(rr, cc, C_DASH);
|
||||
} else {
|
||||
var d = (char) ('0' + rng.randint(1, cc == 0 ? CLUE_SIZE : 4));
|
||||
g.setCharAt(rr, cc, d);
|
||||
if (!hasRoomForClue(g, rr, cc, d)) g.setCharAt(rr, cc, C_DASH);
|
||||
}
|
||||
}
|
||||
return g;
|
||||
}
|
||||
Grid crossover(Rng rng, Grid a, Grid b) {
|
||||
var out = makeEmptyGrid();
|
||||
var theta = rng.nextFloat() * Math.PI;
|
||||
|
||||
Reference in New Issue
Block a user