Gather data
This commit is contained in:
@@ -39,18 +39,22 @@ public record SwedishGenerator(int[] buff) {
|
||||
}
|
||||
}
|
||||
|
||||
record rci(int r, int c, int i) { }
|
||||
record rci(int r, int c, int i, long n1, long n2) {
|
||||
void forEachSetBit71(java.util.function.IntConsumer consumer) {
|
||||
long lo = n1, hi = n2;
|
||||
while (lo != 0L) {
|
||||
int bit = Long.numberOfTrailingZeros(lo);
|
||||
consumer.accept(bit);
|
||||
lo &= (lo - 1);
|
||||
}
|
||||
while (hi != 0L) {
|
||||
int bit = Long.numberOfTrailingZeros(hi);
|
||||
consumer.accept(64 + bit);
|
||||
hi &= (hi - 1L);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static final rci[] IT = new rci[]{
|
||||
new rci(0, 0, 0), new rci(0, 1, 8), new rci(0, 2, 16), new rci(0, 3, 24), new rci(0, 4, 32), new rci(0, 5, 40), new rci(0, 6, 48), new rci(0, 7, 56), new rci(0, 8, 64),
|
||||
new rci(1, 0, 1), new rci(1, 1, 9), new rci(1, 2, 17), new rci(1, 3, 25), new rci(1, 4, 33), new rci(1, 5, 41), new rci(1, 6, 49), new rci(1, 7, 57), new rci(1, 8, 65),
|
||||
new rci(2, 0, 2), new rci(2, 1, 10), new rci(2, 2, 18), new rci(2, 3, 26), new rci(2, 4, 34), new rci(2, 5, 42), new rci(2, 6, 50), new rci(2, 7, 58), new rci(2, 8, 66),
|
||||
new rci(3, 0, 3), new rci(3, 1, 11), new rci(3, 2, 19), new rci(3, 3, 27), new rci(3, 4, 35), new rci(3, 5, 43), new rci(3, 6, 51), new rci(3, 7, 59), new rci(3, 8, 67),
|
||||
new rci(4, 0, 4), new rci(4, 1, 12), new rci(4, 2, 20), new rci(4, 3, 28), new rci(4, 4, 36), new rci(4, 5, 44), new rci(4, 6, 52), new rci(4, 7, 60), new rci(4, 8, 68),
|
||||
new rci(5, 0, 5), new rci(5, 1, 13), new rci(5, 2, 21), new rci(5, 3, 29), new rci(5, 4, 37), new rci(5, 5, 45), new rci(5, 6, 53), new rci(5, 7, 61), new rci(5, 8, 69),
|
||||
new rci(6, 0, 6), new rci(6, 1, 14), new rci(6, 2, 22), new rci(6, 3, 30), new rci(6, 4, 38), new rci(6, 5, 46), new rci(6, 6, 54), new rci(6, 7, 62), new rci(6, 8, 70),
|
||||
new rci(7, 0, 7), new rci(7, 1, 15), new rci(7, 2, 23), new rci(7, 3, 31), new rci(7, 4, 39), new rci(7, 5, 47), new rci(7, 6, 55), new rci(7, 7, 63), new rci(7, 8, 71),
|
||||
};
|
||||
static final int BAR_LEN = 22;
|
||||
static final int C = Config.PUZZLE_COLS;
|
||||
static final double CROSS_Y = (C - 1) / 2.0;
|
||||
@@ -99,6 +103,25 @@ public record SwedishGenerator(int[] buff) {
|
||||
new nbrs_8(0, 1)
|
||||
};
|
||||
|
||||
static final rci[] IT = new rci[SIZE];
|
||||
static {
|
||||
for (int i = 0; i < SIZE; i++) {
|
||||
int r = i % R;
|
||||
int c = i / R;
|
||||
long n1 = 0, n2 = 0;
|
||||
for (var d : nbrs4) {
|
||||
int nr = r + d.r;
|
||||
int nc = c + d.c;
|
||||
if (nr >= 0 && nr < R && nc >= 0 && nc < C) {
|
||||
int nidx = nc * R + nr;
|
||||
if (nidx < 64) n1 |= (1L << nidx);
|
||||
else n2 |= (1L << (nidx - 64));
|
||||
}
|
||||
}
|
||||
IT[i] = new rci(r, c, i, n1, n2);
|
||||
}
|
||||
}
|
||||
|
||||
static record Context(int[] covH,
|
||||
int[] covV,
|
||||
int[] cellCount,
|
||||
@@ -528,9 +551,15 @@ public record SwedishGenerator(int[] buff) {
|
||||
});
|
||||
int sp, nr, nc;
|
||||
long size;
|
||||
int walls, wr, wc;
|
||||
int walls;
|
||||
// dead-end-ish letter cell (3+ walls)
|
||||
for (var rci : IT) {
|
||||
if (grid.isDigitAt(rci.i)) continue;
|
||||
walls = 4 - Long.bitCount(rci.n1) - Long.bitCount(rci.n2);
|
||||
walls += Long.bitCount(rci.n1 & grid.bo[0]) + Long.bitCount(rci.n2 & grid.bo[1]);
|
||||
if (walls >= 3) penalty[0] += 400;
|
||||
}
|
||||
/*for (var rci : IT) {
|
||||
if (grid.isDigitAt(rci.i)) continue;
|
||||
walls = 0;
|
||||
for (var d : nbrs4) {
|
||||
@@ -539,8 +568,7 @@ public record SwedishGenerator(int[] buff) {
|
||||
if (wr < 0 || wr >= R || wc < 0 || wc >= C || grid.isDigitAt(wr, wc)) walls++;
|
||||
}
|
||||
if (walls >= 3) penalty[0] += 400;
|
||||
}
|
||||
|
||||
}*/
|
||||
return penalty[0];
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user