introduce bitloops

This commit is contained in:
mike
2026-01-12 12:02:16 +01:00
parent b6351a6fb2
commit a0862fcc43
4 changed files with 170 additions and 101 deletions

View File

@@ -67,6 +67,10 @@ public record Export() {
if ((bitIndex & 64) == 0) this.l1 |= 1L << bitIndex;
else this.l2 |= 1L << (bitIndex & 63);
}
public void or(long lo, long hi) {
this.l1 |= lo;
this.l2 |= hi;
}
public void clear() {
l1 = 0L;
l2 = 0L;
@@ -142,10 +146,10 @@ public record Export() {
var g = filled().grid();
var placed = new ArrayList<Placed>();
var clueMap = filled().clueMap();
g.grid().forEachSlot((int key, long packedPos, int len) -> {
g.grid().forEachSlot((int key, long lo, long hi) -> {
var word = clueMap.get(key);
if (word != null) {
var p = extractPlacedFromSlot(Slot.from(key, packedPos, len), word);
var p = extractPlacedFromSlot(Slot.from(key, lo, hi), word);
if (p != null) placed.add(p);
}
});