introduce bitloops

This commit is contained in:
mike
2026-01-22 18:47:04 +01:00
parent a659bd5162
commit 2295a7d97c
71 changed files with 254 additions and 205151 deletions

View File

@@ -1,6 +1,9 @@
package puzzle;
import module java.base;
import anno.GenerateNeighbor;
import anno.GenerateNeighbors;
import anno.Shaped;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.experimental.Accessors;
@@ -13,29 +16,28 @@ import static puzzle.SwedishGenerator.*;
public final class Masker {
public static final rci[] IT = Neighbors9x8.IT;
public static final long[] PATH_LO = Neighbors9x8.PATH_LO;
public static final long[] PATH_HI = Neighbors9x8.PATH_HI;
public static final long MASK_LO = -1L;
public static final long MASK_HI = Neighbors9x8.MASK_HI;//(1L << (SIZE - 64)) - 1;
public static final int MIN_LEN = Neighbors9x8.MIN_LEN;//Config.MIN_LEN;
public static final int STACK_SIZE = 128;
public static final int C = Neighbors9x8.C;
public static final int R = Neighbors9x8.R;
public static final double SIZED = Neighbors9x8.SIZED;// ~18
private static final long[] NBR_LO = Neighbors9x8.NBR_LO;
private static final long[] NBR_HI = Neighbors9x8.NBR_HI;
private final Rng rng;
private final int[] stack;
private final Clues cache;
private final int[] activeCIdx = new int[Neighbors9x8.SIZE];
private final long[] activeSLo = new long[Neighbors9x8.SIZE];
private final long[] activeSHi = new long[Neighbors9x8.SIZE];
private final long[] adjLo = new long[Neighbors9x8.SIZE];
private final long[] adjHi = new long[Neighbors9x8.SIZE];
private final int[] rCount = new int[Neighbors9x8.R];
private final int[] cCount = new int[Neighbors9x8.C];
@Shaped public static final rci[] IT = Neighbors9x8.IT;
@Shaped public static final long[] PATH_LO = Neighbors9x8.PATH_LO;
@Shaped public static final long[] PATH_HI = Neighbors9x8.PATH_HI;
@Shaped public static final long MASK_LO = -1L;
@Shaped public static final long MASK_HI = Neighbors9x8.MASK_HI;//(1L << (SIZE - 64)) - 1;
@Shaped public static final int MIN_LEN = Neighbors9x8.MIN_LEN;//Config.MIN_LEN;
@Shaped public static final int C = Neighbors9x8.C;
@Shaped public static final int R = Neighbors9x8.R;
@Shaped public static final double SIZED = Neighbors9x8.SIZED;// ~18
@Shaped private static final long[] NBR_LO = Neighbors9x8.NBR_LO;
@Shaped private static final long[] NBR_HI = Neighbors9x8.NBR_HI;
@Shaped private final int[] activeCIdx = new int[Neighbors9x8.SIZE];
@Shaped private final long[] activeSLo = new long[Neighbors9x8.SIZE];
@Shaped private final long[] activeSHi = new long[Neighbors9x8.SIZE];
@Shaped private final long[] adjLo = new long[Neighbors9x8.SIZE];
@Shaped private final long[] adjHi = new long[Neighbors9x8.SIZE];
@Shaped private final int[] rCount = new int[Neighbors9x8.R];
@Shaped private final int[] cCount = new int[Neighbors9x8.C];
private final Rng rng;
private final int[] stack;
private final Clues cache;
public static final int STACK_SIZE = 128;
public Masker(Rng rng, int[] stack, Clues cache) {
this.rng = rng;
this.stack = stack;