introduce bitloops

This commit is contained in:
mike
2026-01-17 14:21:53 +01:00
parent bd25f65194
commit 9bd85c81a3
4 changed files with 94 additions and 29 deletions

View File

@@ -1,6 +1,7 @@
package puzzle;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import lombok.experimental.Delegate;
import lombok.val;
@@ -339,13 +340,18 @@ public record Export() {
@Getter
@Accessors(fluent = true)
@NoArgsConstructor
static final class IntListDTO {
int[] data = new int[8];
int size = 0;
public IntListDTO(int size) {
data = new int[size];
}
void add(int v) {
if (size >= data.length) data = Arrays.copyOf(data, data.length * 2);
data[size++] = v;
}
int[] toArray() { return Arrays.copyOf(data, size); }
}
}

View File

@@ -388,7 +388,8 @@ public class SwedishGenerator {
var r = rng.nextFloat();
//int idxInArray = rng.biasedIndexPow3(L - 1);
var arrIndex = (int) (r * r * r * (L - 1));
var w = entry.words[idxs[arrIndex]];
var shardIdx = idxs[arrIndex];
var w = entry.words[shardIdx];
var lemIdx = Lemma.unpackIndex(w);
if (Bit1029.get(used, lemIdx)) continue;
low = glo;
@@ -397,7 +398,7 @@ public class SwedishGenerator {
Bit1029.set(used, lemIdx);
s.assign.w = w;
s.assign.shardIdx = arrIndex;
s.assign.shardIdx = shardIdx;
if (backtrack(depth + 1)) return true;
s.assign.w = X;
Bit1029.clear(used, lemIdx);