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,19 +0,0 @@
package puzzle.dict800;
public final class DictData {
private DictData() {}
public static final puzzle.SwedishGenerator.Dict DICT800 = build();
private static puzzle.SwedishGenerator.Dict build() {
puzzle.SwedishGenerator.DictEntry[] idx = new puzzle.SwedishGenerator.DictEntry[9];
idx[2] = DictDataL2.entry();
idx[3] = DictDataL3.entry();
idx[4] = DictDataL4.entry();
idx[5] = DictDataL5.entry();
idx[6] = DictDataL6.entry();
idx[7] = DictDataL7.entry();
idx[8] = DictDataL8.entry();
return new puzzle.SwedishGenerator.Dict(idx, 16445);
}
}

View File

@@ -1,41 +0,0 @@
package puzzle.dict800;
public final class DictDataL2 {
private DictDataL2() {}
static final int LEN = 2;
static final int ROWS = 52;
static final int COLS = 2;
static final int WORDS_LEN = 72;
static final int POS_LEN = 104;
private static long[] words() {
return DictDataL2W0.get();
}
private static long[] posFlat() {
return DictDataL2P0.get();
}
public static puzzle.SwedishGenerator.DictEntry entry() {
long[] wds = words();
long[] flat = posFlat();
long[][] pos = reshape(flat, ROWS, COLS);
return new puzzle.SwedishGenerator.DictEntry(wds, pos, wds.length, (wds.length + 63) >>> 6);
}
private static int copy(long[] dst, int at, long[] src) {
System.arraycopy(src, 0, dst, at, src.length);
return at + src.length;
}
private static long[][] reshape(long[] flat, int rows, int cols) {
long[][] out = new long[rows][cols];
int k = 0;
for (int r = 0; r < rows; r++) {
System.arraycopy(flat, k, out[r], 0, cols);
k += cols;
}
return out;
}
}

View File

@@ -1,113 +0,0 @@
package puzzle.dict800;
public final class DictDataL2P0 {
private DictDataL2P0() {}
public static long[] get() {
return new long[] {
0x2210a009040800L,
0x8L,
0x0L,
0x0L,
0x0L,
0x0L,
0x2040000200000008L,
0x0L,
0x4084630080000003L,
0x0L,
0x0L,
0x0L,
0x100000000010000L,
0x0L,
0x8000000000004000L,
0x10L,
0x208000000081410L,
0x0L,
0x400100L,
0x0L,
0x400000000000000L,
0x20L,
0x800000402000000L,
0x1L,
0x804002000L,
0x42L,
0x800000008200L,
0x0L,
0x1000000060120080L,
0x0L,
0x10000000L,
0x80L,
0x0L,
0x0L,
0x44000000000L,
0x0L,
0x11080000000000L,
0x0L,
0x1000000004L,
0x0L,
0x100800000L,
0x0L,
0x0L,
0x4L,
0x20L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x200040L,
0x0L,
0x8401040016410200L,
0x4L,
0x4000000000000000L,
0x8L,
0x0L,
0x0L,
0x202200000000000L,
0x0L,
0x10008400008616cL,
0x0L,
0x140000L,
0x0L,
0x0L,
0x0L,
0x80000148000000L,
0x0L,
0x850000080000000L,
0x92L,
0x0L,
0x0L,
0x20000010L,
0x0L,
0x400000000800L,
0x0L,
0x24000000020000L,
0x0L,
0x2000000401L,
0x0L,
0x2000800000200000L,
0x61L,
0x80L,
0x0L,
0x0L,
0x0L,
0x8a00000002L,
0x0L,
0x1000010401001000L,
0x0L,
0x8120000000000L,
0x0L,
0x8000L,
0x0L,
0x1000000000L,
0x0L,
0x800000L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L
};
}
}

View File

@@ -1,81 +0,0 @@
package puzzle.dict800;
public final class DictDataL2W0 {
private DictDataL2W0() {}
public static long[] get() {
return new long[] {
0x100000001c5L,
0x90000000245L,
0x1100000000b4L,
0x1900000000a4L,
0x210000000169L,
0x2900000000b7L,
0x3100000000baL,
0x39000000020fL,
0x4100000000aaL,
0x49000000002eL,
0x5100000001c9L,
0x590000000181L,
0x610000000269L,
0x6900000000adL,
0x7100000000a8L,
0x7900000002aeL,
0x810000000027L,
0x8900000001afL,
0x9100000000c1L,
0x9900000000a9L,
0xa100000000cfL,
0xa900000001faL,
0xb1000000002aL,
0xb900000002f5L,
0xc10000000261L,
0xc9000000002cL,
0xd1000000002dL,
0xd90000000101L,
0xe10000000030L,
0xe9000000016fL,
0xf1000000010fL,
0xf90000000125L,
0x1010000000115L,
0x1090000000244L,
0x111000000026cL,
0x119000000024dL,
0x12100000002d4L,
0x12900000001c1L,
0x13100000000b2L,
0x1390000000241L,
0x1410000000265L,
0x1490000000285L,
0x1510000000032L,
0x15900000000b3L,
0x1610000000281L,
0x1690000000085L,
0x1710000000185L,
0x17900000001eeL,
0x1810000000033L,
0x1890000000081L,
0x19100000001a5L,
0x1990000000289L,
0x1a10000000133L,
0x1a900000001a1L,
0x1b10000000124L,
0x1b90000000105L,
0x1c100000000a7L,
0x1c90000000089L,
0x1d1000000002bL,
0x1d9000000012cL,
0x1e1000000026fL,
0x1e900000001e4L,
0x1f10000000045L,
0x1f90000000028L,
0x20100000001ecL,
0x209000000012dL,
0x2110000000036L,
0x2190000000041L,
0x2210000000128L,
0x22900000001ebL,
0x23100000001edL,
0x2390000000130L
};
}
}

View File

@@ -1,41 +0,0 @@
package puzzle.dict800;
public final class DictDataL3 {
private DictDataL3() {}
static final int LEN = 3;
static final int ROWS = 78;
static final int COLS = 8;
static final int WORDS_LEN = 490;
static final int POS_LEN = 624;
private static long[] words() {
return DictDataL3W0.get();
}
private static long[] posFlat() {
return DictDataL3P0.get();
}
public static puzzle.SwedishGenerator.DictEntry entry() {
long[] wds = words();
long[] flat = posFlat();
long[][] pos = reshape(flat, ROWS, COLS);
return new puzzle.SwedishGenerator.DictEntry(wds, pos, wds.length, (wds.length + 63) >>> 6);
}
private static int copy(long[] dst, int at, long[] src) {
System.arraycopy(src, 0, dst, at, src.length);
return at + src.length;
}
private static long[][] reshape(long[] flat, int rows, int cols) {
long[][] out = new long[rows][cols];
int k = 0;
for (int r = 0; r < rows; r++) {
System.arraycopy(flat, k, out[r], 0, cols);
k += cols;
}
return out;
}
}

View File

@@ -1,633 +0,0 @@
package puzzle.dict800;
public final class DictDataL3P0 {
private DictDataL3P0() {}
public static long[] get() {
return new long[] {
0x2000000000001010L,
0x0L,
0x800300e020008000L,
0x2000000f800000L,
0x0L,
0x800000L,
0xeL,
0x0L,
0x2000002000L,
0x8003800018001000L,
0x2030001L,
0x40000000000000L,
0xe0000000c0000L,
0x3000000L,
0x180001e0000f0L,
0x4040080000L,
0x0L,
0x4000000000000L,
0x0L,
0x0L,
0x0L,
0xc000000L,
0x6000000000000L,
0x8002100000L,
0x20000020020182L,
0x80000e0002000L,
0x4010000000000L,
0x38000007000000fL,
0x10000000700000L,
0x10000000L,
0x8000000000000300L,
0x100L,
0x40400e0000000001L,
0x40L,
0x8060108000000L,
0x400000000000070L,
0x20000000800000L,
0x20000000L,
0x0L,
0x0L,
0x0L,
0x4000L,
0x0L,
0x80000000L,
0x40000000000000L,
0xc0000000L,
0x8000000000400L,
0x12400000001L,
0x0L,
0x100018000L,
0x40002L,
0x1800000000000080L,
0x80000001000000L,
0x300000000L,
0x70000060000000L,
0x4200002L,
0x80000841040004L,
0x10000600020000L,
0x10000000000400L,
0x6000000300000000L,
0xf00000000000000L,
0x1c00000000L,
0x80000380003800L,
0xe00L,
0x0L,
0x0L,
0x80200000000L,
0x0L,
0x0L,
0x0L,
0x0L,
0x4L,
0x11000000000L,
0x0L,
0x80800L,
0x0L,
0x1000000000000000L,
0x2000000000L,
0x100000400004000L,
0x10a8401000L,
0x1000080000200L,
0x800000180L,
0x100cL,
0x8000001c00000100L,
0xe000000002000000L,
0x1c000000000L,
0x38000L,
0x800000L,
0x300100000000000L,
0x70001c0000L,
0x60000000000010L,
0xe000000200L,
0x3c000003L,
0xfe0000000003L,
0x2000000000c0000L,
0x2000L,
0x8002000400004440L,
0x20008000200001L,
0x4000000L,
0x30000000400L,
0x4000000cL,
0x700000000003cL,
0x1800700000L,
0x800000018L,
0x4400000480028L,
0x0L,
0x180100400000000L,
0x40000001800L,
0x80000010L,
0x0L,
0x0L,
0x0L,
0x2008800L,
0xc0010000400202L,
0x200800000000L,
0x80000000000L,
0x0L,
0x40L,
0x0L,
0x4000L,
0x400000000000000L,
0x300020000800004L,
0x20L,
0x100000000000L,
0x1000000e0L,
0x38000000000f80L,
0xc00006000800000L,
0x1008000L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x100000000L,
0x8000000000000L,
0x408L,
0xe00400050100040L,
0x1e0000001e000L,
0x1e00000100L,
0x3c0000000003000L,
0x8000000000L,
0x0L,
0x800000000000000L,
0x0L,
0x1000000000000000L,
0x6000000060000L,
0xe000000200L,
0x40000000001c000L,
0x0L,
0x20L,
0x1010a00000100000L,
0x400000000000000L,
0x2000801080000000L,
0x8000000180000L,
0xf0000001c00L,
0xe0000L,
0x1000010001000000L,
0x10000040L,
0x800000L,
0x800000000000000L,
0x0L,
0x0L,
0x0L,
0x800000000100000L,
0x0L,
0x80L,
0x10000L,
0xc0000000810L,
0x4000000000000080L,
0x200000L,
0x300000006000L,
0x3000000000000000L,
0x2000020000000000L,
0x0L,
0x431c200000L,
0x1000000001000000L,
0x200000L,
0x10000000400000L,
0x1c00000018000L,
0xc000000000600000L,
0x40000c0000000000L,
0x10000L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x20000000000L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x300000000001L,
0x200020000L,
0x8000000000L,
0x6000700006000020L,
0x1c06300L,
0x0L,
0x20000L,
0x0L,
0x400000000000L,
0x40000L,
0x100840000c010692L,
0xa12186922081f080L,
0x2210024044c2120L,
0xe0c0316411822801L,
0x218651214c108d24L,
0x5001024c4c000085L,
0x402000802044810L,
0x2000601000L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x100000L,
0x0L,
0x0L,
0x8000L,
0x20000000000000L,
0x0L,
0x800000L,
0x0L,
0x4000L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x8787bc015100606dL,
0x630011b060034L,
0x5c58291bd0004000L,
0x9104083a068d586L,
0x1200200001032041L,
0x18042081200008L,
0x140400000001L,
0x10020000L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x400000000000000L,
0x0L,
0x0L,
0x0L,
0x800000L,
0x0L,
0x0L,
0x0L,
0x2000000L,
0x0L,
0x0L,
0x0L,
0x80L,
0x1ee00a20100L,
0x1000480044200800L,
0x2080824000100204L,
0x1200060800010218L,
0xcc50820232045080L,
0x8062198100165302L,
0x4008a22080801460L,
0x804002142L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x1000000000000000L,
0x4L,
0x8000L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x1000L,
0x40L,
0x8000000000L,
0x2000004000020L,
0x0L,
0x22000000L,
0x2L,
0x400000000L,
0x0L,
0x200L,
0x0L,
0x80000000000L,
0x0L,
0x0L,
0x0L,
0x0L,
0x40020000000800L,
0x0L,
0x4040000000000L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x300010825c0000L,
0x464801248018050bL,
0x100500002a11c83L,
0x8801040140000L,
0x90c4c0028020aL,
0x208460101049a430L,
0xb9549112c39a380L,
0x1c0e0010209L,
0x0L,
0x400000L,
0x0L,
0x0L,
0x8000000000L,
0x0L,
0x20000000000000L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x6000000000000000L,
0x0L,
0x2000028000000L,
0x8000000L,
0x800000L,
0x800L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x40000000L,
0x0L,
0x800000000000000L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x20000000000L,
0x20000000L,
0x890004800000000L,
0x1020058L,
0x5000000000000L,
0x20001080400010L,
0x700800200000040L,
0xa04000c21142000cL,
0x130b0c8c30L,
0x0L,
0x0L,
0x8000000000000000L,
0x40L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x800000000000000L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x800000000000000L,
0x400a00L,
0x4001000000000L,
0x2000002000048L,
0x8000000000L,
0x2000000L,
0x1000000000000000L,
0x100000000L,
0x40000000L,
0x0L,
0x2000000L,
0x0L,
0x0L,
0x80020000001000L,
0x40000000004L,
0x81800000L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x20000000000L,
0x0L,
0x80820208000000L,
0x400040100000002L,
0x2000L,
0x4000040010000000L,
0x200000L,
0x4000020L,
0x0L,
0x30120000248148L,
0x4000021L,
0xc010c080b8000800L,
0x24081080400000L,
0x1001000000080000L,
0x800000000000000L,
0x0L,
0x0L,
0x0L,
0x0L,
0x40000L,
0x0L,
0x800000L,
0x40040020000000L,
0x600010800040002L,
0x100000022aL,
0x4040000100400000L,
0x60001020040000L,
0x8000000404040L,
0x0L,
0x0L,
0x8080000022000L,
0x800000080100L,
0x80010L,
0x0L,
0x0L,
0x8000L,
0x800000L,
0x20000000000000L,
0x0L,
0x10000002000000L,
0x20004400L,
0x0L,
0x4402000000L,
0x40200000000000L,
0x2000000100000500L,
0x10000L,
0x0L,
0x10000000L,
0x0L,
0x1ec00000000L,
0x0L,
0x100000L,
0x0L,
0x0L,
0x0L,
0x0L,
0x4002140L,
0x4000002000000L,
0x8102000140002040L,
0x2000L,
0x100040008004010L,
0x200020404000401L,
0x1102208410088006L,
0x9000121909000L,
0x1L,
0x210000000L,
0x5042090020400L,
0x801000000000190L,
0x80008020080000L,
0x81802840e1001000L,
0x4424000180100080L,
0x2044080008002040L,
0x40000L,
0x2000000081000000L,
0x8018000000000L,
0x10000L,
0x200000008800L,
0x2010000808100800L,
0x200010800010000L,
0x40200010L,
0x1080L,
0x483200000012691L,
0x4010400800004100L,
0x2020110840000000L,
0x1051120840340280L,
0x4880000046c088L,
0x2200400000L,
0x100200000004001L,
0x0L,
0x0L,
0x0L,
0x0L,
0x400000000000002L,
0x0L,
0x800L,
0x0L,
0x0L,
0x0L,
0x400000000000000L,
0x1024L,
0x400001001000L,
0x12200000100L,
0x11104000044009L,
0x4882023080000a00L,
0x202428800L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x840000000000L,
0x800000000001016L,
0x100004600000000L,
0x4008010600000001L,
0x400000000022L,
0x400L,
0x0L,
0x0L,
0x9100000024001800L,
0x180000a88000L,
0x2800220010a0009L,
0x8200802010020024L,
0x402001000000200L,
0xa000800004000110L,
0x20100000400000L,
0x8100004L,
0x208480008924026L,
0x3200200001110088L,
0x1002080000000200L,
0x800004004010000L,
0x804100102202054L,
0x1048800260L,
0x404600020480L,
0x0L,
0x1000080000L,
0x0L,
0xa00400L,
0x0L,
0x0L,
0x400001000000L,
0x10000L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x8000008000000008L,
0x10000L,
0x0L,
0x0L,
0x4000000L,
0x0L,
0x0L,
0x0L,
0x0L,
0x1e810000000L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x440200000L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L
};
}
}

View File

@@ -1,499 +0,0 @@
package puzzle.dict800;
public final class DictDataL3W0 {
private DictDataL3W0() {}
public static long[] get() {
return new long[] {
0x200000038a5L,
0xa0000005024L,
0x1200000050a8L,
0x1a00000014aeL,
0x220000003821L,
0x2a00000050aeL,
0x3200000014adL,
0x3a0000003824L,
0x420000001524L,
0x4a000000382bL,
0x52000000382dL,
0x5a0000004dcfL,
0x620000004d81L,
0x6a00000038a2L,
0x7200000050adL,
0x7a000000156fL,
0x820000003836L,
0x8a0000005124L,
0x9200000015e8L,
0x9a00000055eeL,
0xa200000051f4L,
0xaa0000001537L,
0xb20000001deeL,
0xba0000005135L,
0xc200000034a8L,
0xca0000002defL,
0xd20000004c37L,
0xda0000005037L,
0xe200000030b7L,
0xea0000004ea4L,
0xf200000008a8L,
0xfa00000035ebL,
0x1020000001cb7L,
0x10a0000003137L,
0x112000000292dL,
0x11a0000002928L,
0x12200000055eaL,
0x12a0000002922L,
0x1320000002937L,
0x13a000000293aL,
0x142000000292aL,
0x14a00000015c5L,
0x15200000048a5L,
0x15a00000050a5L,
0x16200000014acL,
0x16a00000038b4L,
0x172000000502eL,
0x17a00000048b4L,
0x18200000038abL,
0x18a00000038adL,
0x1920000002caeL,
0x19a0000005032L,
0x1a200000015f4L,
0x1aa00000015e4L,
0x1b20000001dc5L,
0x1ba00000038a8L,
0x1c20000004cacL,
0x1ca00000050acL,
0x1d200000038b0L,
0x1da0000000693L,
0x1e20000004c34L,
0x1ea0000003641L,
0x1f20000001e45L,
0x1fa0000004cadL,
0x20200000015edL,
0x20a00000049efL,
0x21200000048b0L,
0x21a00000051f2L,
0x22200000048b6L,
0x22a00000014baL,
0x2320000002d85L,
0x23a000000502bL,
0x24200000039ebL,
0x24a00000005afL,
0x25200000031f2L,
0x25a0000000536L,
0x2620000004822L,
0x26a0000002c24L,
0x2720000003826L,
0x27a0000004c27L,
0x2820000005027L,
0x28a00000030a8L,
0x2920000001cacL,
0x29a0000004decL,
0x2a200000051ecL,
0x2aa0000004d2dL,
0x2b2000000060fL,
0x2ba0000004c30L,
0x2c200000050b7L,
0x2ca00000024baL,
0x2d2000000153aL,
0x2da00000010a2L,
0x2e200000030a2L,
0x2ea0000001c24L,
0x2f20000002d24L,
0x2fa00000031e4L,
0x3020000002ca7L,
0x30a0000001028L,
0x31200000025e8L,
0x31a0000003aabL,
0x3220000001c2cL,
0x32a00000031ecL,
0x33200000026acL,
0x33a000000342dL,
0x34200000035efL,
0x34a0000001030L,
0x3520000003036L,
0x35a0000004d36L,
0x3620000004cbaL,
0x36a00000050baL,
0x372000000393aL,
0x37a0000001022L,
0x3820000003022L,
0x38a0000002ca2L,
0x39200000030a3L,
0x39a00000035e4L,
0x3a20000003aa8L,
0x3aa0000001c2dL,
0x3b20000001defL,
0x3ba00000012afL,
0x3c20000002c30L,
0x3ca00000051f0L,
0x3d200000041f4L,
0x3da0000004ab5L,
0x3e20000005137L,
0x3ea000000503aL,
0x3f200000039faL,
0x3fa0000002c22L,
0x4020000004de2L,
0x40a00000011e7L,
0x412000000412bL,
0x41a0000004eabL,
0x42200000032acL,
0x42a0000004030L,
0x4320000001eb2L,
0x43a00000031f6L,
0x442000000303aL,
0x44a000000513aL,
0x45200000055e8L,
0x45a00000015eaL,
0x46200000041ebL,
0x46a0000002c3aL,
0x4720000001cbaL,
0x47a0000002061L,
0x48200000035e2L,
0x48a0000004ea2L,
0x4920000001827L,
0x49a0000004c2aL,
0x4a20000002932L,
0x4aa00000055f7L,
0x4b20000001c3aL,
0x4ba00000055faL,
0x4c20000004ebaL,
0x4ca00000009e2L,
0x4d2000000602dL,
0x4da0000001645L,
0x4e200000014b2L,
0x4ea0000001641L,
0x4f200000038b2L,
0x4fa00000014b4L,
0x50200000010a5L,
0x50a00000048a9L,
0x512000000482eL,
0x51a00000038afL,
0x52200000004b4L,
0x52a0000004c21L,
0x5320000004921L,
0x53a0000001581L,
0x54200000038a4L,
0x54a0000004d25L,
0x55200000011c5L,
0x55a00000050a9L,
0x56200000039eeL,
0x56a00000024afL,
0x57200000015f2L,
0x57a0000001534L,
0x5820000003021L,
0x58a0000005241L,
0x59200000005c4L,
0x59a0000001ca5L,
0x5a200000014a8L,
0x5aa000000382cL,
0x5b200000024acL,
0x5ba0000004d2eL,
0x5c200000049eeL,
0x5ca0000004c32L,
0x5d200000010b2L,
0x5da00000030b2L,
0x5e200000050b3L,
0x5ea0000003934L,
0x5f200000014b6L,
0x5fa00000016c1L,
0x6020000004824L,
0x60a0000003ca4L,
0x6120000004ca4L,
0x61a0000000524L,
0x6220000002d25L,
0x62a0000004d85L,
0x63200000006c5L,
0x63a00000038a7L,
0x64200000024abL,
0x64a000000392cL,
0x65200000024adL,
0x65a000000342eL,
0x66200000040aeL,
0x66a0000001032L,
0x6720000002cb2L,
0x67a00000034b2L,
0x6820000005132L,
0x68a0000004c33L,
0x69200000039f3L,
0x69a00000030b4L,
0x6a200000039f4L,
0x6aa00000038b6L,
0x6b200000014b7L,
0x6ba0000002021L,
0x6c20000004021L,
0x6ca0000000501L,
0x6d20000005181L,
0x6da0000002e41L,
0x6e20000004c24L,
0x6ea00000030a4L,
0x6f200000039e4L,
0x6fa00000014a6L,
0x70200000024a8L,
0x70a00000048a8L,
0x712000000482bL,
0x71a000000392bL,
0x72200000015ebL,
0x72a0000004c2cL,
0x732000000502cL,
0x73a00000030acL,
0x742000000482dL,
0x74a000000392dL,
0x7520000002d2eL,
0x75a00000015afL,
0x7620000003830L,
0x76a0000003432L,
0x77200000040b2L,
0x77a0000004df2L,
0x7820000003ab2L,
0x78a0000000593L,
0x79200000016b3L,
0x79a00000049f4L,
0x7a200000038b7L,
0x7aa0000001461L,
0x7b20000003822L,
0x7ba0000003024L,
0x7c20000002ca4L,
0x7ca0000004d24L,
0x7d20000003ce5L,
0x7da00000050a7L,
0x7e20000003927L,
0x7ea0000002428L,
0x7f20000004828L,
0x7fa0000004c2bL,
0x8020000002cacL,
0x80a00000049ecL,
0x812000000502dL,
0x81a00000039edL,
0x82200000052aeL,
0x82a0000004830L,
0x83200000050b0L,
0x83a0000003930L,
0x8420000004032L,
0x84a0000004df3L,
0x8520000002c34L,
0x85a0000003434L,
0x8620000003134L,
0x86a00000050b6L,
0x8720000003936L,
0x87a0000003837L,
0x88200000024b7L,
0x88a00000038baL,
0x8920000003922L,
0x89a00000015e2L,
0x8a20000003424L,
0x8aa00000051e4L,
0x8b20000003aa4L,
0x8ba0000001a45L,
0x8c200000030a7L,
0x8ca000000512bL,
0x8d20000002c2cL,
0x8da000000342cL,
0x8e2000000112cL,
0x8ea000000312cL,
0x8f2000000302dL,
0x8fa00000032aeL,
0x9020000005030L,
0x90a0000004132L,
0x9120000002df2L,
0x91a00000035f2L,
0x9220000004eb2L,
0x92a0000004033L,
0x93200000031f3L,
0x93a0000000613L,
0x9420000004034L,
0x94a0000002d34L,
0x95200000011f4L,
0x95a00000031f4L,
0x9620000005036L,
0x96a00000030b6L,
0x9720000004837L,
0x97a0000003937L,
0x98200000015f7L,
0x98a0000004c22L,
0x9920000005022L,
0x99a00000039e2L,
0x9a20000003524L,
0x9aa00000022a5L,
0x9b20000003926L,
0x9ba0000003027L,
0x9c20000003028L,
0x9ca0000002ca8L,
0x9d20000004d28L,
0x9da0000005128L,
0x9e200000014aaL,
0x9ea000000342bL,
0x9f2000000112bL,
0x9fa000000312bL,
0xa02000000402cL,
0xa0a0000002d2cL,
0xa120000002c2dL,
0xa1a00000040adL,
0xa220000004dedL,
0xa2a00000051edL,
0xa3200000052afL,
0xa3a0000003030L,
0xa420000004d30L,
0xa4a0000005130L,
0xa5200000049f0L,
0xa5a0000003e50L,
0xa620000000932L,
0xa6a0000001df2L,
0xa720000004133L,
0xa7a0000002df3L,
0xa8200000035f3L,
0xa8a0000001d34L,
0xa920000004134L,
0xa9a0000002df4L,
0xaa20000003135L,
0xaaa00000010b7L,
0xab200000039f7L,
0xaba0000005061L,
0xac200000054a2L,
0xaca0000000582L,
0xad20000004c23L,
0xada0000005023L,
0xae20000002de4L,
0xaea0000001985L,
0xaf20000005026L,
0xafa00000030a6L,
0xb020000003127L,
0xb0a0000003aa7L,
0xb120000002c28L,
0xb1a0000003428L,
0xb2200000051e8L,
0xb2a00000038aaL,
0xb32000000402bL,
0xb3a0000002d2bL,
0xb42000000352bL,
0xb4a000000082cL,
0xb5200000018acL,
0xb5a0000001d2cL,
0xb62000000412cL,
0xb6a0000002decL,
0xb7200000055ecL,
0xb7a0000004eacL,
0xb82000000402dL,
0xb8a0000002d2dL,
0xb9200000031edL,
0xb9a0000001cb0L,
0xba200000040b0L,
0xbaa0000003130L,
0xbb20000001932L,
0xbba00000009f2L,
0xbc20000002eb2L,
0xbca00000036b2L,
0xbd200000032b3L,
0xbda00000016f5L,
0xbe20000002c36L,
0xbea0000004df6L,
0xbf20000003037L,
0xbfa0000004d37L,
0xc0200000038b9L,
0xc0a0000001981L,
0xc120000000aa1L,
0xc1a0000005ea1L,
0xc220000003422L,
0xc2a0000001122L,
0xc320000003122L,
0xc3a00000051e2L,
0xc420000001de4L,
0xc4a00000041e4L,
0xc520000005126L,
0xc5a0000004028L,
0xc620000002d28L,
0xc6a00000031e8L,
0xc72000000382aL,
0xc7a0000002debL,
0xc8200000055ebL,
0xc8a00000052abL,
0xc92000000182cL,
0xc9a0000001decL,
0xca20000002dedL,
0xcaa00000035edL,
0xcb20000004eadL,
0xcba0000002d30L,
0xcc20000002eb4L,
0xcca0000002022L,
0xcd200000011e2L,
0xcda00000031e2L,
0xce200000026a2L,
0xcea0000002de7L,
0xcf20000003667L,
0xcfa0000004128L,
0xd020000002de8L,
0xd0a00000052a8L,
0xd1200000050aaL,
0xd1a000000182dL,
0xd2200000041edL,
0xd2a0000004130L,
0xd3200000052b0L,
0xd3a0000005eb2L,
0xd4200000019f4L,
0xd4a0000004136L,
0xd5200000008b7L,
0xd5a00000031f7L,
0xd620000004cb9L,
0xd6a0000003939L,
0xd7200000051faL,
0xd7a0000001d22L,
0xd820000002de2L,
0xd8a0000004023L,
0xd9200000031e3L,
0xd9a0000002d26L,
0xda200000021e7L,
0xdaa0000004e07L,
0xdb200000032a7L,
0xdba00000041e8L,
0xdc200000039eaL,
0xdca00000019ecL,
0xdd20000001830L,
0xdda00000041f0L,
0xde20000000554L,
0xdea00000032b6L,
0xdf20000004137L,
0xdfa0000005ea4L,
0xe020000002de6L,
0xe0a0000001927L,
0xe120000004d49L,
0xe1a00000019edL,
0xe220000001eadL,
0xe2a0000001ab3L,
0xe320000002934L,
0xe3a0000003515L,
0xe420000002924L,
0xe4a00000019e8L,
0xe5200000022a8L,
0xe5a00000042a8L,
0xe62000000342aL,
0xe6a000000292cL,
0xe72000000206fL,
0xe7a00000042b0L,
0xe820000005df7L,
0xe8a00000040b9L,
0xe9200000032baL,
0xe9a0000001ea2L,
0xea20000004c43L,
0xeaa0000006427L,
0xeb2000000402aL,
0xeba00000008ebL,
0xec20000000ab0L,
0xeca00000042a3L,
0xed20000002927L,
0xeda0000004eaaL,
0xee200000060b4L,
0xeea00000021eaL,
0xef200000065e2L,
0xefa00000009eaL,
0xf0200000006b1L,
0xf0a00000042b9L,
0xf120000006586L,
0xf1a000000612dL,
0xf220000001aaaL,
0xf2a0000006026L,
0xf3200000061e2L,
0xf3a00000061e3L,
0xf4200000061e6L,
0xf4a0000000e98L
};
}
}

View File

@@ -1,41 +0,0 @@
package puzzle.dict800;
public final class DictDataL4 {
private DictDataL4() {}
static final int LEN = 4;
static final int ROWS = 104;
static final int COLS = 15;
static final int WORDS_LEN = 932;
static final int POS_LEN = 1560;
private static long[] words() {
return DictDataL4W0.get();
}
private static long[] posFlat() {
return DictDataL4P0.get();
}
public static puzzle.SwedishGenerator.DictEntry entry() {
long[] wds = words();
long[] flat = posFlat();
long[][] pos = reshape(flat, ROWS, COLS);
return new puzzle.SwedishGenerator.DictEntry(wds, pos, wds.length, (wds.length + 63) >>> 6);
}
private static int copy(long[] dst, int at, long[] src) {
System.arraycopy(src, 0, dst, at, src.length);
return at + src.length;
}
private static long[][] reshape(long[] flat, int rows, int cols) {
long[][] out = new long[rows][cols];
int k = 0;
for (int r = 0; r < rows; r++) {
System.arraycopy(flat, k, out[r], 0, cols);
k += cols;
}
return out;
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,941 +0,0 @@
package puzzle.dict800;
public final class DictDataL4W0 {
private DictDataL4W0() {}
public static long[] get() {
return new long[] {
0x3000009042eL,
0xb00000a152eL,
0x1300000714a7L,
0x1b0000090424L,
0x2300000715e4L,
0x2b0000070427L,
0x33000009042dL,
0x3b0000090428L,
0x430000091528L,
0x4b00000916cfL,
0x530000090437L,
0x5b00000215e7L,
0x630000093df6L,
0x6b000007292dL,
0x73000007293aL,
0x7b00000914aeL,
0x83000009b8a5L,
0x8b0000071685L,
0x930000072645L,
0x9b00000a14b2L,
0xa300000694aeL,
0xab0000090432L,
0xb30000071534L,
0xbb00000716c5L,
0xc300000714a8L,
0xcb00000914abL,
0xd300000914adL,
0xdb000009a4b2L,
0xe300000715f4L,
0xeb00000614a4L,
0xf3000002a644L,
0xfb00000914a8L,
0x103000009d0a9L,
0x10b000007042dL,
0x113000006842eL,
0x11b000002b181L,
0x123000002ad85L,
0x12b00000a14a8L,
0x13300000a042cL,
0x13b00000684b4L,
0x14300000914b7L,
0x14b0000070422L,
0x15300000a15e4L,
0x15b00000614a8L,
0x163000002b0a8L,
0x16b00000a042dL,
0x173000007160fL,
0x17b0000090430L,
0x18300000296f4L,
0x18b00000614b6L,
0x1930000091536L,
0x19b00000a14b7L,
0x1a300000914baL,
0x1ab00000954a4L,
0x1b300000615e4L,
0x1bb0000083e45L,
0x1c300000a0427L,
0x1cb00000224adL,
0x1d300000a15edL,
0x1db000007153aL,
0x1e30000098422L,
0x1eb000002e8a4L,
0x1f30000093de4L,
0x1fb000005842dL,
0x203000000b42dL,
0x20b000002e9cfL,
0x21300000594b7L,
0x21b0000058436L,
0x22300000a153aL,
0x22b0000023de4L,
0x23300000314a7L,
0x23b0000093de8L,
0x2430000029489L,
0x24b000005d4acL,
0x253000003152cL,
0x25b000000c030L,
0x26300000595e2L,
0x26b000009042aL,
0x273000005843aL,
0x27b000005953aL,
0x2830000073dfaL,
0x28b000009a6a8L,
0x29300000a4cb2L,
0x29b00000615d3L,
0x2a30000091693L,
0x2ab000007d1e6L,
0x2b3000009b8adL,
0x2bb000005b8a4L,
0x2c3000009b82bL,
0x2cb00000a382bL,
0x2d3000002382cL,
0x2db00000239f2L,
0x2e300000a38b6L,
0x2eb00000956b6L,
0x2f300000a38a2L,
0x2fb000005b824L,
0x30300000a55e6L,
0x30b000009ad2eL,
0x31300000a25efL,
0x31b0000020693L,
0x323000007d2a1L,
0x32b0000023828L,
0x33300000a4828L,
0x33b000002392bL,
0x34300000a39ebL,
0x34b000003b82cL,
0x3530000070590L,
0x35b0000062693L,
0x36300000a3837L,
0x36b0000023822L,
0x373000003b924L,
0x37b0000024828L,
0x38300000239edL,
0x38b000004bdedL,
0x39300000a4eb2L,
0x39b0000061613L,
0x3a30000080693L,
0x3ab00000a4c36L,
0x3b30000023936L,
0x3bb00000248b7L,
0x3c3000005b822L,
0x3cb000003b827L,
0x3d300000230a7L,
0x3db00000239e8L,
0x3e300000a3aabL,
0x3eb000009b5f3L,
0x3f3000006be93L,
0x3fb000005c8b7L,
0x403000003b822L,
0x40b0000059590L,
0x41300000a4d37L,
0x41b000005d644L,
0x42300000a08a8L,
0x42b00000a35ebL,
0x433000005d693L,
0x43b000005b0b7L,
0x44300000a3137L,
0x44b00000a2065L,
0x45300000a1cbaL,
0x45b00000a2061L,
0x46300000bd5eaL,
0x46b000007292cL,
0x473000006b126L,
0x47b0000072930L,
0x483000005a932L,
0x48b0000022934L,
0x4930000040df4L,
0x49b00000330baL,
0x4a300000832a8L,
0x4ab000003b9eaL,
0x4b30000052656L,
0x4bb0000072937L,
0x4c30000072926L,
0x4cb000005a92bL,
0x4d30000052582L,
0x4db0000040d3aL,
0x4e30000058c2aL,
0x4eb00000c8822L,
0x4f30000032936L,
0x4fb00000714aeL,
0x5030000071645L,
0x50b000002b8b2L,
0x513000000ba45L,
0x51b00000295d3L,
0x52300000714b4L,
0x52b0000071485L,
0x53300000238a5L,
0x53b00000714acL,
0x543000009152eL,
0x54b000002c832L,
0x55300000724b2L,
0x55b00000914b4L,
0x56300000914acL,
0x56b00000714adL,
0x573000007164fL,
0x57b00000290b2L,
0x58300000214b2L,
0x58b00000724b3L,
0x5930000091481L,
0x59b00000715a1L,
0x5a30000071524L,
0x5ab0000023925L,
0x5b3000002b8a7L,
0x5bb000002b82bL,
0x5c3000007042cL,
0x5cb00000994acL,
0x5d3000002042eL,
0x5db00000a1532L,
0x5e300000915f2L,
0x5eb000000c833L,
0x5f3000002c933L,
0x5fb0000029593L,
0x6030000024821L,
0x60b0000071601L,
0x613000002b641L,
0x61b00000714a2L,
0x623000002d024L,
0x62b00000214a4L,
0x6330000091524L,
0x63b000002a5cbL,
0x643000002d02cL,
0x64b00000214acL,
0x65300000914b0L,
0x65b0000020432L,
0x66300000814b2L,
0x66b00000995f2L,
0x67300000a15f2L,
0x67b000002cdf2L,
0x683000002d133L,
0x68b00000a1534L,
0x69300000915f4L,
0x69b0000071655L,
0x6a300000914b6L,
0x6ab0000061481L,
0x6b3000002d161L,
0x6bb00000914a2L,
0x6c30000029642L,
0x6cb000002b024L,
0x6d3000000d024L,
0x6db00000604a4L,
0x6e3000003a5c5L,
0x6eb0000070428L,
0x6f3000002d0a8L,
0x6fb00000614abL,
0x703000002902cL,
0x70b00000594acL,
0x71300000a152cL,
0x71b00000915ecL,
0x723000002d02dL,
0x72b00000290adL,
0x73300000614adL,
0x73b000009152dL,
0x743000000b92dL,
0x74b00000314aeL,
0x753000009d4aeL,
0x75b00000695eeL,
0x763000002924fL,
0x76b0000058432L,
0x7730000068432L,
0x77b0000069532L,
0x78300000291f2L,
0x78b0000060434L,
0x7930000029514L,
0x79b0000069481L,
0x7a300000a14a2L,
0x7ab0000020424L,
0x7b3000002b424L,
0x7bb000006be45L,
0x7c30000090427L,
0x7cb000002d027L,
0x7d300000614a7L,
0x7db000002b0a7L,
0x7e3000009842bL,
0x7eb000002902bL,
0x7f300000594abL,
0x7fb000009952bL,
0x80300000394acL,
0x80b0000029cacL,
0x81300000224acL,
0x81b000002d8acL,
0x823000002152cL,
0x82b00000915edL,
0x83300000a3deeL,
0x83b00000714efL,
0x84300000716cfL,
0x84b0000091530L,
0x8530000029590L,
0x85b00000715f0L,
0x8630000080432L,
0x86b000009d4b2L,
0x8730000081532L,
0x87b00000695f2L,
0x883000002b5f2L,
0x88b0000058434L,
0x893000002c034L,
0x89b000002b534L,
0x8a30000073df4L,
0x8ab000002b0b6L,
0x8b30000070437L,
0x8bb000002c837L,
0x8c300000994b7L,
0x8cb0000068481L,
0x8d30000091522L,
0x8db00000291e4L,
0x8e3000002caa4L,
0x8eb0000030645L,
0x8f300000a24a7L,
0x8fb0000098428L,
0x90300000a0428L,
0x90b00000915e8L,
0x913000006042bL,
0x91b000004958bL,
0x9230000029c2cL,
0x92b0000073decL,
0x933000006042dL,
0x93b00000ab8adL,
0x94300000995edL,
0x94b000005d4aeL,
0x9530000028d2eL,
0x95b0000023deeL,
0x96300000a1530L,
0x96b0000028c32L,
0x97300000815f2L,
0x97b000009bdf2L,
0x98300000314b4L,
0x98b00000726b4L,
0x9930000098436L,
0x99b0000099536L,
0x9a300000915f6L,
0x9ab00000214b7L,
0x9b30000061441L,
0x9bb00000a0422L,
0x9c300000915e2L,
0x9cb0000038424L,
0x9d30000081524L,
0x9db00000595e4L,
0x9e30000061745L,
0x9eb000002cc26L,
0x9f30000091526L,
0x9fb000002b427L,
0xa0300000624a7L,
0xa0b0000060428L,
0xa1300000624a8L,
0xa1b000004b0a8L,
0xa23000005842bL,
0xa2b00000615ebL,
0xa33000003842cL,
0xa3b00000314acL,
0xa43000003952cL,
0xa4b000008152cL,
0xa53000002d92cL,
0xa5b000006242dL,
0xa6300000291edL,
0xa6b00000215edL,
0xa730000073dedL,
0xa7b000009144fL,
0xa8300000249efL,
0xa8b00000a4defL,
0xa930000060430L,
0xa9b0000073d30L,
0xaa300000995f0L,
0xaab0000023df2L,
0xab3000009a6b2L,
0xabb00000a26b2L,
0xac3000009d433L,
0xacb00000815f3L,
0xad3000007d1f4L,
0xadb000004d654L,
0xae30000061536L,
0xaeb00000a15f6L,
0xaf30000029037L,
0xafb00000a1537L,
0xb03000009153aL,
0xb0b00000715faL,
0xb13000002b9faL,
0xb1b0000021522L,
0xb23000009bde4L,
0xb2b00000616a4L,
0xb330000092426L,
0xb3b00000a24a6L,
0xb43000002d827L,
0xb4b00000954a7L,
0xb530000058428L,
0xb5b00000215e8L,
0xb63000009d4abL,
0xb6b00000595ebL,
0xb730000093debL,
0xb7b000009bdecL,
0xb83000002d9ecL,
0xb8b000003842dL,
0xb930000093dedL,
0xb9b0000059530L,
0xba3000005bdf2L,
0xbab000006bdf2L,
0xbb3000002e9f2L,
0xbbb00000626b2L,
0xbc3000007b1f3L,
0xbcb00000615f6L,
0xbd3000002ac37L,
0xbdb0000061537L,
0xbe300000615e2L,
0xbeb000002ac23L,
0xbf3000005d4a4L,
0xbfb0000031524L,
0xc03000002b126L,
0xc0b00000605e7L,
0xc130000093de7L,
0xc1b000009d4a8L,
0xc2300000595e8L,
0xc2b00000799c9L,
0xc33000007b12bL,
0xc3b000009bdebL,
0xc430000023decL,
0xc4b000009a6acL,
0xc530000029dedL,
0xc5b00000bd42eL,
0xc630000081530L,
0xc6b00000726b0L,
0xc7300000a38b2L,
0xc7b000005a6b2L,
0xc83000006a6b2L,
0xc8b0000038436L,
0xc930000058437L,
0xc9b0000073df7L,
0xca3000002043aL,
0xcab000006043aL,
0xcb300000814baL,
0xcbb0000029cbaL,
0xcc300000624baL,
0xccb000006153aL,
0xcd300000a15faL,
0xcdb00000695e2L,
0xce30000093de2L,
0xceb000002c023L,
0xcf300000291e3L,
0xcfb00000a3de7L,
0xd030000029de8L,
0xd0b000002c1e8L,
0xd130000063debL,
0xd1b000005bdecL,
0xd2300000226acL,
0xd2b000009a6adL,
0xd3300000248aeL,
0xd3b00000a4caeL,
0xd43000009d430L,
0xd4b00000815f0L,
0xd53000009bdf0L,
0xd5b00000a3df0L,
0xd6300000bd432L,
0xd6b000003a6b2L,
0xd730000048433L,
0xd7b0000048434L,
0xd8300000a38b4L,
0xd8b0000038437L,
0xd930000039537L,
0xd9b000005a4baL,
0xda300000395e2L,
0xdab000009bde2L,
0xdb300000a3de2L,
0xdbb000002ade3L,
0xdc3000000b1e3L,
0xdcb0000083de4L,
0xdd3000005a6a4L,
0xddb000006a6a4L,
0xde300000956a4L,
0xdeb0000030427L,
0xdf3000002902aL,
0xdfb00000748abL,
0xe03000009b8acL,
0xe0b000003bdecL,
0xe130000083decL,
0xe1b000005a6acL,
0xe23000002956fL,
0xe2b0000063df0L,
0xe330000023832L,
0xe3b0000033df2L,
0xe43000003a6b4L,
0xe4b000003843aL,
0xe5300000605faL,
0xe5b00000595faL,
0xe63000009d241L,
0xe6b0000023de2L,
0xe73000009a6a2L,
0xe7b00000a26a2L,
0xe830000029823L,
0xe8b000000b5e3L,
0xe93000009b824L,
0xe9b00000495e4L,
0xea3000007a065L,
0xeab00000315e8L,
0xeb3000007b5e8L,
0xebb00000a55e8L,
0xec300000226a8L,
0xecb00000626a8L,
0xed300000814aaL,
0xedb00000a38abL,
0xee30000083debL,
0xeeb00000255ebL,
0xef3000009b82cL,
0xefb00000956adL,
0xf03000002a58fL,
0xf0b00000a10b2L,
0xf1300000bd5f2L,
0xf1b0000093dd3L,
0xf230000090693L,
0xf2b0000023834L,
0xf3300000a4cb4L,
0xf3b00000626b6L,
0xf4300000315e2L,
0xf4b000006bde2L,
0xf53000002e9e2L,
0xf5b0000071642L,
0xf630000063de3L,
0xf6b0000033de4L,
0xf73000007caa5L,
0xf7b00000255e7L,
0xf830000048428L,
0xf8b000009b8a8L,
0xf93000003bde8L,
0xf9b0000083de8L,
0xfa300000255e8L,
0xfab00000956a8L,
0xfb300000615eaL,
0xfbb000009c8abL,
0xfc3000009d0acL,
0xfcb00000a392cL,
0xfd3000009b82dL,
0xfdb000000e42dL,
0xfe3000002eaadL,
0xfeb00000956b0L,
0xff3000003b832L,
0xffb000009d132L,
0x100300000a1593L,
0x100b0000061693L,
0x1013000005b834L,
0x101b00000a30b4L,
0x1023000006c8b4L,
0x102b00000bd5f4L,
0x10330000059654L,
0x103b0000048422L,
0x1043000003bde2L,
0x104b000005a6a2L,
0x105300000956a2L,
0x105b000009b827L,
0x106300000bd427L,
0x106b000009b828L,
0x107300000a48a8L,
0x107b00000a2dc9L,
0x1083000003842aL,
0x108b000004baaaL,
0x109300000605cbL,
0x109b00000a064bL,
0x10a300000a4c2cL,
0x10ab00000a39ecL,
0x10b3000002382dL,
0x10bb000009c82dL,
0x10c300000a4cadL,
0x10cb000009d0adL,
0x10d3000006c9eeL,
0x10db000009c8b0L,
0x10e300000a1650L,
0x10eb000003b932L,
0x10f3000009d1f2L,
0x10fb000009acb3L,
0x110300000a15b3L,
0x110b00000805d3L,
0x1113000005a5d3L,
0x111b0000070613L,
0x11230000060693L,
0x112b0000069693L,
0x1133000003b834L,
0x113b000009c8b6L,
0x1143000009b8b7L,
0x114b00000255f7L,
0x1153000006bdfaL,
0x115b00000a55faL,
0x116300000226baL,
0x116b00000a38a3L,
0x117300000bd4a5L,
0x117b0000098647L,
0x118300000a3928L,
0x118b00000a4c2bL,
0x1193000005c8abL,
0x119b000005b92cL,
0x11a300000a4d2cL,
0x11ab000005b82dL,
0x11b3000005c8adL,
0x11bb00000bd5edL,
0x11c300000c856fL,
0x11cb00000292afL,
0x11d30000023830L,
0x11db00000a4830L,
0x11e300000a4cb0L,
0x11eb0000072613L,
0x11f30000058693L,
0x11fb0000068693L,
0x12030000080654L,
0x120b00000a4cb6L,
0x121300000bd437L,
0x121b00000956baL,
0x122300000a4ca2L,
0x122b0000073e42L,
0x1233000009b826L,
0x123b00000a4c27L,
0x1243000005b828L,
0x124b0000023deaL,
0x125300000a4d2bL,
0x125b000009d12bL,
0x1263000009858bL,
0x126b00000805cbL,
0x1273000004bdebL,
0x127b00000a49ebL,
0x128300000a3e4bL,
0x128b00000a1cacL,
0x129300000249ecL,
0x129b00000a4decL,
0x12a3000005c82dL,
0x12ab00000230adL,
0x12b3000009cd2dL,
0x12bb00000a4d2dL,
0x12c3000009cc30L,
0x12cb00000a4c30L,
0x12d30000070473L,
0x12db0000058593L,
0x12e300000a3d93L,
0x12eb000003b9f3L,
0x12f3000003b9f4L,
0x12fb0000082654L,
0x1303000005be54L,
0x130b00000a5654L,
0x13130000023837L,
0x131b00000a4cb7L,
0x132300000a3937L,
0x132b0000009df9L,
0x133300000a30a2L,
0x133b0000023922L,
0x134300000a39e2L,
0x134b00000bd5e2L,
0x135300000a2642L,
0x135b0000070583L,
0x13630000098587L,
0x136b000004bde7L,
0x13730000068647L,
0x137b00000a3e47L,
0x1383000009b028L,
0x138b00000a3028L,
0x1393000003b828L,
0x139b000009aca8L,
0x13a300000230a8L,
0x13ab000004bde8L,
0x13b3000004b2aaL,
0x13bb000006958bL,
0x13c300000a4debL,
0x13cb000009d1ebL,
0x13d3000008064bL,
0x13db000003b9ecL,
0x13e3000009b42dL,
0x13eb000005b0adL,
0x13f300000a312dL,
0x13fb00000a3aadL,
0x1403000003b830L,
0x140b000005c830L,
0x1413000005b930L,
0x141b00000a4d30L,
0x14230000098590L,
0x142b00000a0590L,
0x143300000239f0L,
0x143b00000a49f0L,
0x14430000058650L,
0x144b0000083432L,
0x145300000a2513L,
0x145b0000038593L,
0x14630000080593L,
0x146b000006a593L,
0x14730000059613L,
0x147b00000a2613L,
0x1483000005be93L,
0x148b000004e034L,
0x1493000009b036L,
0x149b00000a3036L,
0x14a3000003b836L,
0x14ab00000230b6L,
0x14b300000239f6L,
0x14bb0000023937L,
0x14c3000002383aL,
0x14cb000003c8a2L,
0x14d3000005b922L,
0x14db00000239e2L,
0x14e30000058642L,
0x14eb0000062642L,
0x14f30000024823L,
0x14fb00000a4c23L,
0x150300000849e4L,
0x150b0000099586L,
0x1513000009a646L,
0x151b0000099127L,
0x1523000003b927L,
0x152b0000020587L,
0x15330000080647L,
0x153b000006b0a8L,
0x154300000234a8L,
0x154b000005b9e8L,
0x1553000006b02bL,
0x155b000008158bL,
0x1563000009bd8bL,
0x156b0000083dcbL,
0x157300000655cbL,
0x157b000006be4bL,
0x158300000a1d2cL,
0x158b00000a4eacL,
0x1593000002312dL,
0x159b000002deafL,
0x15a300000a2c30L,
0x15ab00000a4df0L,
0x15b3000005a650L,
0x15bb00000a3ab0L,
0x15c300000a3d13L,
0x15cb000005bd93L,
0x15d300000a3e13L,
0x15db0000030693L,
0x15e30000083e93L,
0x15eb000005b1f4L,
0x15f3000005cab4L,
0x15fb0000059596L,
0x1603000005b9f6L,
0x160b000009b037L,
0x161300000a3037L,
0x161b000003b837L,
0x1623000006c837L,
0x162b00000239f7L,
0x16330000058657L,
0x163b0000020582L,
0x164300000249e2L,
0x164b000005b1e4L,
0x165300000a0586L,
0x165b000004bde6L,
0x166300000a49e6L,
0x166b00000991e7L,
0x167300000830a8L,
0x167b000008058bL,
0x1683000005a58bL,
0x168b00000a4eabL,
0x1693000008342cL,
0x169b0000058590L,
0x16a300000a3d90L,
0x16ab000009b1f0L,
0x16b300000835f2L,
0x16bb00000348b6L,
0x16c30000058596L,
0x16cb0000068596L,
0x16d300000a3d96L,
0x16db000005c9f6L,
0x16e3000006c9f6L,
0x16eb00000249f7L,
0x16f3000004bdfaL,
0x16fb00000a1503L,
0x1703000003d644L,
0x170b0000030647L,
0x1713000008342bL,
0x171b000005bd8bL,
0x1723000009d58bL,
0x172b000005d64bL,
0x173300000a192cL,
0x173b00000a2eacL,
0x1743000002e2acL,
0x174b0000083e50L,
0x17530000033e93L,
0x175b0000038596L,
0x17630000023137L,
0x176b000006c9f7L,
0x1773000003b93aL,
0x177b000005a582L,
0x1783000003c9e2L,
0x178b0000044c23L,
0x179300000a31e3L,
0x179b000006be46L,
0x17a30000083d8bL,
0x17ab00000686ebL,
0x17b30000040deeL,
0x17bb000009d590L,
0x17c30000058df2L,
0x17cb0000065613L,
0x17d3000001d654L,
0x17db000005b1f6L,
0x17e300000849f7L,
0x17eb000005b839L,
0x17f3000006b03aL,
0x17fb000003b9faL,
0x1803000005bd82L,
0x180b00000a5582L,
0x181300000a32a2L,
0x181b0000034aa4L,
0x182300000a1927L,
0x182b0000033e47L,
0x18330000033028L,
0x183b0000040c2cL,
0x18430000033e50L,
0x184b0000022932L,
0x185300000bbd13L,
0x185b000003b1f6L,
0x1863000005b1f7L,
0x186b000003c9faL,
0x1873000003d642L,
0x187b00000c8647L,
0x18830000041d28L,
0x188b0000058d2bL,
0x189300000c902cL,
0x189b0000040cb0L,
0x18a300000835f0L,
0x18ab000002c334L,
0x18b300000a32baL,
0x18bb0000044ea2L,
0x18c30000083d86L,
0x18cb00000331e7L,
0x18d300000cb9f0L,
0x18db0000082932L,
0x18e3000003d596L,
0x18eb00000586faL,
0x18f30000031503L,
0x18fb0000082503L,
0x1903000009a928L,
0x190b000005baaaL,
0x1913000005a92cL,
0x191b000006292dL,
0x192300000331f7L,
0x192b000005b2baL,
0x193300000a2922L,
0x193b000005caaaL,
0x19430000062930L,
0x194b000009a937L,
0x19530000062922L,
0x195b00000cd123L,
0x19630000015583L,
0x196b0000022937L,
0x197300000a293aL,
0x197b000003292cL,
0x19830000082930L,
0x198b000005a937L,
0x19930000058ea6L,
0x199b00000ccaaaL,
0x19a300000d682aL,
0x19ab0000040deaL,
0x19b30000032937L,
0x19bb00000ce0b3L,
0x19c300000715c5L,
0x19cb000002b9c5L,
0x19d300000714b2L,
0x19db000002b9c9L,
0x19e3000002c82eL,
0x19eb00000a14aeL,
0x19f3000002d1c1L,
0x19fb0000071681L,
0x1a0300000714a4L,
0x1a0b00000a48a5L,
0x1a1300000291c5L,
0x1a1b0000091685L,
0x1a23000002b8acL,
0x1a2b0000073caeL,
0x1a3300000715eeL,
0x1a3b000002b9eeL,
0x1a4300000994b2L,
0x1a4b000002c8b4L,
0x1a530000029654L,
0x1a5b0000071581L,
0x1a630000099641L,
0x1a6b00000914a4L,
0x1a7300000a4ca5L,
0x1a7b0000070585L,
0x1a8300000714abL,
0x1a8b000002b4aeL,
0x1a93000007c8aeL,
0x1a9b000009952eL,
0x1aa3000000c832L,
0x1aab00000614b2L,
0x1ab3000000c8b3L,
0x1abb0000071533L,
0x1ac30000029693L,
0x1acb000000b834L,
0x1ad3000009c821L,
0x1adb0000071561L,
0x1ae3000004d1c1L,
0x1aeb0000073e41L,
0x1af3000002ce61L,
0x1afb00000a14a4L,
0x1b0300000a30a5L,
0x1b0b0000029dc5L,
0x1b13000009c8a9L,
0x1b1b00000291c9L,
0x1b2300000a14acL,
0x1b2b000002b92cL,
0x1b33000000902eL,
0x1b3b000002b42eL,
0x1b43000004cc2eL,
0x1b4b00000714b0L,
0x1b53000002b8b0L,
0x1b5b0000098432L,
0x1b6300000a0432L,
0x1b6b0000029032L,
0x1b7300000604b2L,
0x1b7b00000a24b2L,
0x1b83000002d132L,
0x1b8b0000090433L,
0x1b930000091533L,
0x1b9b000002b0b4L,
0x1ba3000002b9f4L,
0x1bab00000714b6L,
0x1bb300000a4c21L,
0x1bbb0000099581L,
0x1bc300000915a1L,
0x1bcb000002b8a2L,
0x1bd300000290a4L,
0x1bdb000002b0a4L,
0x1be3000000b924L,
0x1beb0000061485L,
0x1bf300000a4d25L,
0x1bfb0000029e45L,
0x1c03000009be45L,
0x1c0b00000916c5L,
0x1c1300000914a7L,
0x1c1b000002c8a8L,
0x1c2300000994abL,
0x1c2b00000a14abL,
0x1c33000007152bL,
0x1c3b000002b92bL,
0x1c43000009042cL,
0x1c4b00000290acL,
0x1c53000009152cL,
0x1c5b000002c92cL,
0x1c63000002b9ecL,
0x1c6b000000b82dL,
0x1c73000002c82dL,
0x1c7b00000994adL,
0x1c8300000a14adL,
0x1c8b000002d0adL,
0x1c93000007152dL,
0x1c9b000002b92dL,
0x1ca300000291eeL,
0x1cab00000615eeL,
0x1cb3000000d1eeL,
0x1cbb0000029650L,
0x1cc3000002ac32L,
0x1ccb0000029132L,
0x1cd3000002bab2L,
0x1cdb000004c833L,
0x1ce300000604b3L,
0x1ceb000000b0b3L,
0x1cf3000002b034L,
0x1cfb00000594b4L,
0x1d0300000694b4L,
0x1d0b000002ba55L,
0x1d130000029656L,
0x1d1b00000714b7L
};
}
}

View File

@@ -1,41 +0,0 @@
package puzzle.dict800;
public final class DictDataL5 {
private DictDataL5() {}
static final int LEN = 5;
static final int ROWS = 130;
static final int COLS = 38;
static final int WORDS_LEN = 2399;
static final int POS_LEN = 4940;
private static long[] words() {
return DictDataL5W0.get();
}
private static long[] posFlat() {
return DictDataL5P0.get();
}
public static puzzle.SwedishGenerator.DictEntry entry() {
long[] wds = words();
long[] flat = posFlat();
long[][] pos = reshape(flat, ROWS, COLS);
return new puzzle.SwedishGenerator.DictEntry(wds, pos, wds.length, (wds.length + 63) >>> 6);
}
private static int copy(long[] dst, int at, long[] src) {
System.arraycopy(src, 0, dst, at, src.length);
return at + src.length;
}
private static long[][] reshape(long[] flat, int rows, int cols) {
long[][] out = new long[rows][cols];
int k = 0;
for (int r = 0; r < rows; r++) {
System.arraycopy(flat, k, out[r], 0, cols);
k += cols;
}
return out;
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,41 +0,0 @@
package puzzle.dict800;
public final class DictDataL6 {
private DictDataL6() {}
static final int LEN = 6;
static final int ROWS = 156;
static final int COLS = 38;
static final int WORDS_LEN = 2382;
static final int POS_LEN = 5928;
private static long[] words() {
return DictDataL6W0.get();
}
private static long[] posFlat() {
return DictDataL6P0.get();
}
public static puzzle.SwedishGenerator.DictEntry entry() {
long[] wds = words();
long[] flat = posFlat();
long[][] pos = reshape(flat, ROWS, COLS);
return new puzzle.SwedishGenerator.DictEntry(wds, pos, wds.length, (wds.length + 63) >>> 6);
}
private static int copy(long[] dst, int at, long[] src) {
System.arraycopy(src, 0, dst, at, src.length);
return at + src.length;
}
private static long[][] reshape(long[] flat, int rows, int cols) {
long[][] out = new long[rows][cols];
int k = 0;
for (int r = 0; r < rows; r++) {
System.arraycopy(flat, k, out[r], 0, cols);
k += cols;
}
return out;
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,46 +0,0 @@
package puzzle.dict800;
public final class DictDataL7 {
private DictDataL7() {}
static final int LEN = 7;
static final int ROWS = 182;
static final int COLS = 99;
static final int WORDS_LEN = 6281;
static final int POS_LEN = 18018;
private static long[] words() {
return DictDataL7W0.get();
}
private static long[] posFlat() {
long[] out = new long[POS_LEN];
int k = 0;
k = copy(out, k, DictDataL7P0.get());
k = copy(out, k, DictDataL7P1.get());
k = copy(out, k, DictDataL7P2.get());
return out;
}
public static puzzle.SwedishGenerator.DictEntry entry() {
long[] wds = words();
long[] flat = posFlat();
long[][] pos = reshape(flat, ROWS, COLS);
return new puzzle.SwedishGenerator.DictEntry(wds, pos, wds.length, (wds.length + 63) >>> 6);
}
private static int copy(long[] dst, int at, long[] src) {
System.arraycopy(src, 0, dst, at, src.length);
return at + src.length;
}
private static long[][] reshape(long[] flat, int rows, int cols) {
long[][] out = new long[rows][cols];
int k = 0;
for (int r = 0; r < rows; r++) {
System.arraycopy(flat, k, out[r], 0, cols);
k += cols;
}
return out;
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,45 +0,0 @@
package puzzle.dict800;
public final class DictDataL8 {
private DictDataL8() {}
static final int LEN = 8;
static final int ROWS = 208;
static final int COLS = 61;
static final int WORDS_LEN = 3889;
static final int POS_LEN = 12688;
private static long[] words() {
return DictDataL8W0.get();
}
private static long[] posFlat() {
long[] out = new long[POS_LEN];
int k = 0;
k = copy(out, k, DictDataL8P0.get());
k = copy(out, k, DictDataL8P1.get());
return out;
}
public static puzzle.SwedishGenerator.DictEntry entry() {
long[] wds = words();
long[] flat = posFlat();
long[][] pos = reshape(flat, ROWS, COLS);
return new puzzle.SwedishGenerator.DictEntry(wds, pos, wds.length, (wds.length + 63) >>> 6);
}
private static int copy(long[] dst, int at, long[] src) {
System.arraycopy(src, 0, dst, at, src.length);
return at + src.length;
}
private static long[][] reshape(long[] flat, int rows, int cols) {
long[][] out = new long[rows][cols];
int k = 0;
for (int r = 0; r < rows; r++) {
System.arraycopy(flat, k, out[r], 0, cols);
k += cols;
}
return out;
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,19 +0,0 @@
package puzzle.dict900;
public final class DictData {
private DictData() {}
public static final puzzle.SwedishGenerator.Dict DICT900 = build();
private static puzzle.SwedishGenerator.Dict build() {
puzzle.SwedishGenerator.DictEntry[] idx = new puzzle.SwedishGenerator.DictEntry[9];
idx[2] = DictDataL2.entry();
idx[3] = DictDataL3.entry();
idx[4] = DictDataL4.entry();
idx[5] = DictDataL5.entry();
idx[6] = DictDataL6.entry();
idx[7] = DictDataL7.entry();
idx[8] = DictDataL8.entry();
return new puzzle.SwedishGenerator.Dict(idx, 38691);
}
}

View File

@@ -1,41 +0,0 @@
package puzzle.dict900;
public final class DictDataL2 {
private DictDataL2() {}
static final int LEN = 2;
static final int ROWS = 52;
static final int COLS = 2;
static final int WORDS_LEN = 120;
static final int POS_LEN = 104;
private static long[] words() {
return DictDataL2W0.get();
}
private static long[] posFlat() {
return DictDataL2P0.get();
}
public static puzzle.SwedishGenerator.DictEntry entry() {
long[] wds = words();
long[] flat = posFlat();
long[][] pos = reshape(flat, ROWS, COLS);
return new puzzle.SwedishGenerator.DictEntry(wds, pos, wds.length, (wds.length + 63) >>> 6);
}
private static int copy(long[] dst, int at, long[] src) {
System.arraycopy(src, 0, dst, at, src.length);
return at + src.length;
}
private static long[][] reshape(long[] flat, int rows, int cols) {
long[][] out = new long[rows][cols];
int k = 0;
for (int r = 0; r < rows; r++) {
System.arraycopy(flat, k, out[r], 0, cols);
k += cols;
}
return out;
}
}

View File

@@ -1,113 +0,0 @@
package puzzle.dict900;
public final class DictDataL2P0 {
private DictDataL2P0() {}
public static long[] get() {
return new long[] {
0x2210a009040800L,
0x8000004108008L,
0x0L,
0x108000010100L,
0x0L,
0x55000200200L,
0x2040000200000008L,
0x400L,
0x4084630080000003L,
0xe00080000000L,
0x0L,
0x20800L,
0x100000000010000L,
0x1000L,
0x8000000000004000L,
0x2000002010L,
0x208000000081410L,
0x40000002000000L,
0x400100L,
0x20008000000L,
0x400000000000000L,
0x10000000000020L,
0x800000402000000L,
0x1L,
0x804002000L,
0x810000042L,
0x800000008200L,
0x0L,
0x1000000060120080L,
0x21000000400000L,
0x10000000L,
0x2000100004080L,
0x0L,
0x0L,
0x44000000000L,
0x0L,
0x11080000000000L,
0x220000000L,
0x1000000004L,
0x0L,
0x100800000L,
0x80000040840000L,
0x0L,
0x4000401000004L,
0x20L,
0x80000080000L,
0x0L,
0x0L,
0x0L,
0x0L,
0x200040L,
0x0L,
0x8401040016410200L,
0x8a04L,
0x4000000000000000L,
0x8L,
0x0L,
0x80000000000L,
0x202200000000000L,
0x20004000000000L,
0x10008400008616cL,
0x6000000400000L,
0x140000L,
0x0L,
0x0L,
0x400000000000L,
0x80000148000000L,
0x8000000000L,
0x850000080000000L,
0x10000040120192L,
0x0L,
0x2000000L,
0x20000010L,
0x200000000000L,
0x400000000800L,
0x0L,
0x24000000020000L,
0x12a00040000L,
0x2000000401L,
0x10000000L,
0x2000800000200000L,
0x8297061L,
0x80L,
0x40800000800000L,
0x0L,
0x0L,
0x8a00000002L,
0x20100000000L,
0x1000010401001000L,
0x400000000L,
0x8120000000000L,
0x81001020000000L,
0x8000L,
0x5000400L,
0x1000000000L,
0x8040000000000L,
0x800000L,
0x0L,
0x0L,
0x80000000L,
0x0L,
0x100000000000L,
0x0L,
0x0L
};
}
}

View File

@@ -1,129 +0,0 @@
package puzzle.dict900;
public final class DictDataL2W0 {
private DictDataL2W0() {}
public static long[] get() {
return new long[] {
0x100000001c5L,
0x90000000245L,
0x1100000000b4L,
0x1900000000a4L,
0x210000000169L,
0x2900000000b7L,
0x3100000000baL,
0x39000000020fL,
0x4100000000aaL,
0x49000000002eL,
0x5100000001c9L,
0x590000000181L,
0x610000000269L,
0x6900000000adL,
0x7100000000a8L,
0x7900000002aeL,
0x810000000027L,
0x8900000001afL,
0x9100000000c1L,
0x9900000000a9L,
0xa100000000cfL,
0xa900000001faL,
0xb1000000002aL,
0xb900000002f5L,
0xc10000000261L,
0xc9000000002cL,
0xd1000000002dL,
0xd90000000101L,
0xe10000000030L,
0xe9000000016fL,
0xf1000000010fL,
0xf90000000125L,
0x1010000000115L,
0x1090000000244L,
0x111000000026cL,
0x119000000024dL,
0x12100000002d4L,
0x12900000001c1L,
0x13100000000b2L,
0x1390000000241L,
0x1410000000265L,
0x1490000000285L,
0x1510000000032L,
0x15900000000b3L,
0x1610000000281L,
0x1690000000085L,
0x1710000000185L,
0x17900000001eeL,
0x1810000000033L,
0x1890000000081L,
0x19100000001a5L,
0x1990000000289L,
0x1a10000000133L,
0x1a900000001a1L,
0x1b10000000124L,
0x1b90000000105L,
0x1c100000000a7L,
0x1c90000000089L,
0x1d1000000002bL,
0x1d9000000012cL,
0x1e1000000026fL,
0x1e900000001e4L,
0x1f10000000045L,
0x1f90000000028L,
0x20100000001ecL,
0x209000000012dL,
0x2110000000036L,
0x2190000000041L,
0x2210000000128L,
0x22900000001ebL,
0x23100000001edL,
0x2390000000130L,
0x2410000000122L,
0x2490000000023L,
0x25100000002a4L,
0x2590000000026L,
0x26100000001e7L,
0x26900000001e8L,
0x27100000001f0L,
0x2790000000021L,
0x28100000001e2L,
0x2890000000126L,
0x29100000001b5L,
0x29900000001f7L,
0x2a10000000121L,
0x2a900000001e3L,
0x2b100000000afL,
0x2b90000000215L,
0x2c100000002b6L,
0x2c90000000149L,
0x2d100000002a1L,
0x2d900000001eaL,
0x2e100000001cdL,
0x2e90000000293L,
0x2f10000000135L,
0x2f90000000305L,
0x3010000000250L,
0x30900000001b3L,
0x3110000000276L,
0x31900000001adL,
0x3210000000283L,
0x32900000001a8L,
0x3310000000083L,
0x3390000000102L,
0x34100000001a3L,
0x349000000024aL,
0x35100000002c3L,
0x3590000000077L,
0x3610000000322L,
0x3690000000165L,
0x37100000000e5L,
0x3790000000205L,
0x381000000028fL,
0x38900000000b0L,
0x39100000000b6L,
0x39900000002c1L,
0x3a1000000012bL,
0x3a9000000008fL,
0x3b10000000209L,
0x3b90000000295L
};
}
}

View File

@@ -1,41 +0,0 @@
package puzzle.dict900;
public final class DictDataL3 {
private DictDataL3() {}
static final int LEN = 3;
static final int ROWS = 78;
static final int COLS = 15;
static final int WORDS_LEN = 903;
static final int POS_LEN = 1170;
private static long[] words() {
return DictDataL3W0.get();
}
private static long[] posFlat() {
return DictDataL3P0.get();
}
public static puzzle.SwedishGenerator.DictEntry entry() {
long[] wds = words();
long[] flat = posFlat();
long[][] pos = reshape(flat, ROWS, COLS);
return new puzzle.SwedishGenerator.DictEntry(wds, pos, wds.length, (wds.length + 63) >>> 6);
}
private static int copy(long[] dst, int at, long[] src) {
System.arraycopy(src, 0, dst, at, src.length);
return at + src.length;
}
private static long[][] reshape(long[] flat, int rows, int cols) {
long[][] out = new long[rows][cols];
int k = 0;
for (int r = 0; r < rows; r++) {
System.arraycopy(flat, k, out[r], 0, cols);
k += cols;
}
return out;
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,912 +0,0 @@
package puzzle.dict900;
public final class DictDataL3W0 {
private DictDataL3W0() {}
public static long[] get() {
return new long[] {
0x200000038a5L,
0xa0000005024L,
0x1200000050a8L,
0x1a00000014aeL,
0x220000003821L,
0x2a00000050aeL,
0x3200000014adL,
0x3a0000003824L,
0x420000001524L,
0x4a000000382bL,
0x52000000382dL,
0x5a0000004dcfL,
0x620000004d81L,
0x6a00000038a2L,
0x7200000050adL,
0x7a000000156fL,
0x820000003836L,
0x8a0000005124L,
0x9200000015e8L,
0x9a00000055eeL,
0xa200000051f4L,
0xaa0000001537L,
0xb20000001deeL,
0xba0000005135L,
0xc200000034a8L,
0xca0000002defL,
0xd20000004c37L,
0xda0000005037L,
0xe200000030b7L,
0xea0000004ea4L,
0xf200000008a8L,
0xfa00000035ebL,
0x1020000001cb7L,
0x10a0000003137L,
0x112000000292dL,
0x11a0000002928L,
0x12200000055eaL,
0x12a0000002922L,
0x1320000002937L,
0x13a000000293aL,
0x142000000292aL,
0x14a00000015c5L,
0x15200000048a5L,
0x15a00000050a5L,
0x16200000014acL,
0x16a00000038b4L,
0x172000000502eL,
0x17a00000048b4L,
0x18200000038abL,
0x18a00000038adL,
0x1920000002caeL,
0x19a0000005032L,
0x1a200000015f4L,
0x1aa00000015e4L,
0x1b20000001dc5L,
0x1ba00000038a8L,
0x1c20000004cacL,
0x1ca00000050acL,
0x1d200000038b0L,
0x1da0000000693L,
0x1e20000004c34L,
0x1ea0000003641L,
0x1f20000001e45L,
0x1fa0000004cadL,
0x20200000015edL,
0x20a00000049efL,
0x21200000048b0L,
0x21a00000051f2L,
0x22200000048b6L,
0x22a00000014baL,
0x2320000002d85L,
0x23a000000502bL,
0x24200000039ebL,
0x24a00000005afL,
0x25200000031f2L,
0x25a0000000536L,
0x2620000004822L,
0x26a0000002c24L,
0x2720000003826L,
0x27a0000004c27L,
0x2820000005027L,
0x28a00000030a8L,
0x2920000001cacL,
0x29a0000004decL,
0x2a200000051ecL,
0x2aa0000004d2dL,
0x2b2000000060fL,
0x2ba0000004c30L,
0x2c200000050b7L,
0x2ca00000024baL,
0x2d2000000153aL,
0x2da00000010a2L,
0x2e200000030a2L,
0x2ea0000001c24L,
0x2f20000002d24L,
0x2fa00000031e4L,
0x3020000002ca7L,
0x30a0000001028L,
0x31200000025e8L,
0x31a0000003aabL,
0x3220000001c2cL,
0x32a00000031ecL,
0x33200000026acL,
0x33a000000342dL,
0x34200000035efL,
0x34a0000001030L,
0x3520000003036L,
0x35a0000004d36L,
0x3620000004cbaL,
0x36a00000050baL,
0x372000000393aL,
0x37a0000001022L,
0x3820000003022L,
0x38a0000002ca2L,
0x39200000030a3L,
0x39a00000035e4L,
0x3a20000003aa8L,
0x3aa0000001c2dL,
0x3b20000001defL,
0x3ba00000012afL,
0x3c20000002c30L,
0x3ca00000051f0L,
0x3d200000041f4L,
0x3da0000004ab5L,
0x3e20000005137L,
0x3ea000000503aL,
0x3f200000039faL,
0x3fa0000002c22L,
0x4020000004de2L,
0x40a00000011e7L,
0x412000000412bL,
0x41a0000004eabL,
0x42200000032acL,
0x42a0000004030L,
0x4320000001eb2L,
0x43a00000031f6L,
0x442000000303aL,
0x44a000000513aL,
0x45200000055e8L,
0x45a00000015eaL,
0x46200000041ebL,
0x46a0000002c3aL,
0x4720000001cbaL,
0x47a0000002061L,
0x48200000035e2L,
0x48a0000004ea2L,
0x4920000001827L,
0x49a0000004c2aL,
0x4a20000002932L,
0x4aa00000055f7L,
0x4b20000001c3aL,
0x4ba00000055faL,
0x4c20000004ebaL,
0x4ca00000009e2L,
0x4d2000000602dL,
0x4da0000001645L,
0x4e200000014b2L,
0x4ea0000001641L,
0x4f200000038b2L,
0x4fa00000014b4L,
0x50200000010a5L,
0x50a00000048a9L,
0x512000000482eL,
0x51a00000038afL,
0x52200000004b4L,
0x52a0000004c21L,
0x5320000004921L,
0x53a0000001581L,
0x54200000038a4L,
0x54a0000004d25L,
0x55200000011c5L,
0x55a00000050a9L,
0x56200000039eeL,
0x56a00000024afL,
0x57200000015f2L,
0x57a0000001534L,
0x5820000003021L,
0x58a0000005241L,
0x59200000005c4L,
0x59a0000001ca5L,
0x5a200000014a8L,
0x5aa000000382cL,
0x5b200000024acL,
0x5ba0000004d2eL,
0x5c200000049eeL,
0x5ca0000004c32L,
0x5d200000010b2L,
0x5da00000030b2L,
0x5e200000050b3L,
0x5ea0000003934L,
0x5f200000014b6L,
0x5fa00000016c1L,
0x6020000004824L,
0x60a0000003ca4L,
0x6120000004ca4L,
0x61a0000000524L,
0x6220000002d25L,
0x62a0000004d85L,
0x63200000006c5L,
0x63a00000038a7L,
0x64200000024abL,
0x64a000000392cL,
0x65200000024adL,
0x65a000000342eL,
0x66200000040aeL,
0x66a0000001032L,
0x6720000002cb2L,
0x67a00000034b2L,
0x6820000005132L,
0x68a0000004c33L,
0x69200000039f3L,
0x69a00000030b4L,
0x6a200000039f4L,
0x6aa00000038b6L,
0x6b200000014b7L,
0x6ba0000002021L,
0x6c20000004021L,
0x6ca0000000501L,
0x6d20000005181L,
0x6da0000002e41L,
0x6e20000004c24L,
0x6ea00000030a4L,
0x6f200000039e4L,
0x6fa00000014a6L,
0x70200000024a8L,
0x70a00000048a8L,
0x712000000482bL,
0x71a000000392bL,
0x72200000015ebL,
0x72a0000004c2cL,
0x732000000502cL,
0x73a00000030acL,
0x742000000482dL,
0x74a000000392dL,
0x7520000002d2eL,
0x75a00000015afL,
0x7620000003830L,
0x76a0000003432L,
0x77200000040b2L,
0x77a0000004df2L,
0x7820000003ab2L,
0x78a0000000593L,
0x79200000016b3L,
0x79a00000049f4L,
0x7a200000038b7L,
0x7aa0000001461L,
0x7b20000003822L,
0x7ba0000003024L,
0x7c20000002ca4L,
0x7ca0000004d24L,
0x7d20000003ce5L,
0x7da00000050a7L,
0x7e20000003927L,
0x7ea0000002428L,
0x7f20000004828L,
0x7fa0000004c2bL,
0x8020000002cacL,
0x80a00000049ecL,
0x812000000502dL,
0x81a00000039edL,
0x82200000052aeL,
0x82a0000004830L,
0x83200000050b0L,
0x83a0000003930L,
0x8420000004032L,
0x84a0000004df3L,
0x8520000002c34L,
0x85a0000003434L,
0x8620000003134L,
0x86a00000050b6L,
0x8720000003936L,
0x87a0000003837L,
0x88200000024b7L,
0x88a00000038baL,
0x8920000003922L,
0x89a00000015e2L,
0x8a20000003424L,
0x8aa00000051e4L,
0x8b20000003aa4L,
0x8ba0000001a45L,
0x8c200000030a7L,
0x8ca000000512bL,
0x8d20000002c2cL,
0x8da000000342cL,
0x8e2000000112cL,
0x8ea000000312cL,
0x8f2000000302dL,
0x8fa00000032aeL,
0x9020000005030L,
0x90a0000004132L,
0x9120000002df2L,
0x91a00000035f2L,
0x9220000004eb2L,
0x92a0000004033L,
0x93200000031f3L,
0x93a0000000613L,
0x9420000004034L,
0x94a0000002d34L,
0x95200000011f4L,
0x95a00000031f4L,
0x9620000005036L,
0x96a00000030b6L,
0x9720000004837L,
0x97a0000003937L,
0x98200000015f7L,
0x98a0000004c22L,
0x9920000005022L,
0x99a00000039e2L,
0x9a20000003524L,
0x9aa00000022a5L,
0x9b20000003926L,
0x9ba0000003027L,
0x9c20000003028L,
0x9ca0000002ca8L,
0x9d20000004d28L,
0x9da0000005128L,
0x9e200000014aaL,
0x9ea000000342bL,
0x9f2000000112bL,
0x9fa000000312bL,
0xa02000000402cL,
0xa0a0000002d2cL,
0xa120000002c2dL,
0xa1a00000040adL,
0xa220000004dedL,
0xa2a00000051edL,
0xa3200000052afL,
0xa3a0000003030L,
0xa420000004d30L,
0xa4a0000005130L,
0xa5200000049f0L,
0xa5a0000003e50L,
0xa620000000932L,
0xa6a0000001df2L,
0xa720000004133L,
0xa7a0000002df3L,
0xa8200000035f3L,
0xa8a0000001d34L,
0xa920000004134L,
0xa9a0000002df4L,
0xaa20000003135L,
0xaaa00000010b7L,
0xab200000039f7L,
0xaba0000005061L,
0xac200000054a2L,
0xaca0000000582L,
0xad20000004c23L,
0xada0000005023L,
0xae20000002de4L,
0xaea0000001985L,
0xaf20000005026L,
0xafa00000030a6L,
0xb020000003127L,
0xb0a0000003aa7L,
0xb120000002c28L,
0xb1a0000003428L,
0xb2200000051e8L,
0xb2a00000038aaL,
0xb32000000402bL,
0xb3a0000002d2bL,
0xb42000000352bL,
0xb4a000000082cL,
0xb5200000018acL,
0xb5a0000001d2cL,
0xb62000000412cL,
0xb6a0000002decL,
0xb7200000055ecL,
0xb7a0000004eacL,
0xb82000000402dL,
0xb8a0000002d2dL,
0xb9200000031edL,
0xb9a0000001cb0L,
0xba200000040b0L,
0xbaa0000003130L,
0xbb20000001932L,
0xbba00000009f2L,
0xbc20000002eb2L,
0xbca00000036b2L,
0xbd200000032b3L,
0xbda00000016f5L,
0xbe20000002c36L,
0xbea0000004df6L,
0xbf20000003037L,
0xbfa0000004d37L,
0xc0200000038b9L,
0xc0a0000001981L,
0xc120000000aa1L,
0xc1a0000005ea1L,
0xc220000003422L,
0xc2a0000001122L,
0xc320000003122L,
0xc3a00000051e2L,
0xc420000001de4L,
0xc4a00000041e4L,
0xc520000005126L,
0xc5a0000004028L,
0xc620000002d28L,
0xc6a00000031e8L,
0xc72000000382aL,
0xc7a0000002debL,
0xc8200000055ebL,
0xc8a00000052abL,
0xc92000000182cL,
0xc9a0000001decL,
0xca20000002dedL,
0xcaa00000035edL,
0xcb20000004eadL,
0xcba0000002d30L,
0xcc20000002eb4L,
0xcca0000002022L,
0xcd200000011e2L,
0xcda00000031e2L,
0xce200000026a2L,
0xcea0000002de7L,
0xcf20000003667L,
0xcfa0000004128L,
0xd020000002de8L,
0xd0a00000052a8L,
0xd1200000050aaL,
0xd1a000000182dL,
0xd2200000041edL,
0xd2a0000004130L,
0xd3200000052b0L,
0xd3a0000005eb2L,
0xd4200000019f4L,
0xd4a0000004136L,
0xd5200000008b7L,
0xd5a00000031f7L,
0xd620000004cb9L,
0xd6a0000003939L,
0xd7200000051faL,
0xd7a0000001d22L,
0xd820000002de2L,
0xd8a0000004023L,
0xd9200000031e3L,
0xd9a0000002d26L,
0xda200000021e7L,
0xdaa0000004e07L,
0xdb200000032a7L,
0xdba00000041e8L,
0xdc200000039eaL,
0xdca00000019ecL,
0xdd20000001830L,
0xdda00000041f0L,
0xde20000000554L,
0xdea00000032b6L,
0xdf20000004137L,
0xdfa0000005ea4L,
0xe020000002de6L,
0xe0a0000001927L,
0xe120000004d49L,
0xe1a00000019edL,
0xe220000001eadL,
0xe2a0000001ab3L,
0xe320000002934L,
0xe3a0000003515L,
0xe420000002924L,
0xe4a00000019e8L,
0xe5200000022a8L,
0xe5a00000042a8L,
0xe62000000342aL,
0xe6a000000292cL,
0xe72000000206fL,
0xe7a00000042b0L,
0xe820000005df7L,
0xe8a00000040b9L,
0xe9200000032baL,
0xe9a0000001ea2L,
0xea20000004c43L,
0xeaa0000006427L,
0xeb2000000402aL,
0xeba00000008ebL,
0xec20000000ab0L,
0xeca00000042a3L,
0xed20000002927L,
0xeda0000004eaaL,
0xee200000060b4L,
0xeea00000021eaL,
0xef200000065e2L,
0xefa00000009eaL,
0xf0200000006b1L,
0xf0a00000042b9L,
0xf120000006586L,
0xf1a000000612dL,
0xf220000001aaaL,
0xf2a0000006026L,
0xf3200000061e2L,
0xf3a00000061e3L,
0xf4200000061e6L,
0xf4a0000000e98L,
0xf520000000645L,
0xf5a0000001685L,
0xf6200000004b2L,
0xf6a0000002421L,
0xf720000004821L,
0xf7a00000025c1L,
0xf820000000641L,
0xf8a0000001485L,
0xf9200000051c5L,
0xf9a00000039e5L,
0xfa20000000665L,
0xfaa0000000685L,
0xfb20000003caeL,
0xfba0000004caeL,
0xfc200000024b2L,
0xfca00000005d2L,
0xfd20000005021L,
0xfda0000004a41L,
0xfe20000000661L,
0xfea0000002ca5L,
0xff20000004c2eL,
0xffa00000030aeL,
0x100200000005eeL,
0x100a00000048afL,
0x1012000000164fL,
0x101a0000000532L,
0x10220000004d21L,
0x102a00000015a1L,
0x10320000001125L,
0x103a0000002dc5L,
0x10420000005265L,
0x104a0000004e85L,
0x105200000030a9L,
0x105a00000051c9L,
0x106200000039e9L,
0x106a00000004abL,
0x107200000004adL,
0x107a00000054aeL,
0x108200000050afL,
0x108a00000014b0L,
0x10920000002433L,
0x109a0000004833L,
0x10a20000004cb4L,
0x10aa00000050b4L,
0x10b20000000534L,
0x10ba0000000654L,
0x10c20000002c21L,
0x10ca0000003421L,
0x10d200000005a1L,
0x10da0000003e61L,
0x10e20000005261L,
0x10ea00000050a4L,
0x10f20000003924L,
0x10fa0000000644L,
0x1102000000152bL,
0x110a000000152dL,
0x11120000001caeL,
0x111a0000004deeL,
0x1122000000148fL,
0x112a000000158fL,
0x113200000004b0L,
0x113a0000003032L,
0x114200000054b2L,
0x114a0000004d32L,
0x11520000004dd3L,
0x115a00000005f3L,
0x11620000002654L,
0x116a0000001655L,
0x117200000004e1L,
0x117a0000002561L,
0x11820000003da5L,
0x118a0000004da5L,
0x11920000002605L,
0x119a00000024a7L,
0x11a200000048a7L,
0x11aa0000001528L,
0x11b200000040a9L,
0x11ba00000050abL,
0x11c200000010acL,
0x11ca0000001c2eL,
0x11d2000000402eL,
0x11da000000582eL,
0x11e200000008aeL,
0x11ea00000031eeL,
0x11f20000002cafL,
0x11fa000000058fL,
0x120200000011cfL,
0x120a00000025efL,
0x12120000001650L,
0x121a0000002c32L,
0x12220000003132L,
0x122a0000004d33L,
0x12320000003034L,
0x123a00000034b4L,
0x12420000004d34L,
0x124a00000025d5L,
0x12520000003a55L,
0x125a00000024b6L,
0x12620000000441L,
0x126a0000001081L,
0x12720000004d61L,
0x127a0000001e41L,
0x12820000004241L,
0x128a00000024a2L,
0x12920000001522L,
0x129a00000049e4L,
0x12a20000004e44L,
0x12aa00000069c5L,
0x12b20000004265L,
0x12ba0000004ca8L,
0x12c20000001dc9L,
0x12ca000000492bL,
0x12d2000000302cL,
0x12da00000054acL,
0x12e20000004d2cL,
0x12ea000000512cL,
0x12f2000000264dL,
0x12fa000000412eL,
0x13020000002deeL,
0x130a0000004e6fL,
0x13120000001c32L,
0x131a0000005832L,
0x132200000008b2L,
0x132a0000002d32L,
0x13320000003532L,
0x133a00000026b2L,
0x13420000002c33L,
0x134a00000040b3L,
0x13520000000573L,
0x135a0000005273L,
0x13620000005434L,
0x136a0000004df4L,
0x13720000002d81L,
0x137a0000000dc1L,
0x13820000003e01L,
0x138a0000004ca2L,
0x139200000050a2L,
0x139a0000003124L,
0x13a20000004de4L,
0x13aa0000005045L,
0x13b2000000302bL,
0x13ba0000002cabL,
0x13c200000054abL,
0x13ca00000025ebL,
0x13d200000049ebL,
0x13da00000040acL,
0x13e200000058acL,
0x13ea0000003e6cL,
0x13f20000003e8cL,
0x13fa00000034adL,
0x140200000049edL,
0x140a00000041eeL,
0x1412000000050fL,
0x141a0000003d8fL,
0x14220000002e4fL,
0x142a0000003c30L,
0x143200000030b0L,
0x143a00000039f0L,
0x144200000018b2L,
0x144a0000002d33L,
0x14520000003533L,
0x145a0000002573L,
0x146200000011f3L,
0x146a0000001c34L,
0x14720000000514L,
0x147a00000026b4L,
0x14820000004c41L,
0x148a0000005041L,
0x14920000001d81L,
0x149a0000004181L,
0x14a200000055a1L,
0x14aa0000000e41L,
0x14b200000005e2L,
0x14ba0000002423L,
0x14c20000003ca3L,
0x14ca0000000523L,
0x14d20000004aa4L,
0x14da0000004c65L,
0x14e20000005065L,
0x14ea0000003505L,
0x14f200000041a5L,
0x14fa0000000e85L,
0x150200000050a6L,
0x150a0000001686L,
0x15120000004d27L,
0x151a0000005127L,
0x152200000054a8L,
0x152a00000049e8L,
0x15320000002c2bL,
0x153a00000051ebL,
0x15420000001dccL,
0x154a000000126cL,
0x1552000000112dL,
0x155a000000312dL,
0x15620000002eaeL,
0x156a00000018afL,
0x1572000000516fL,
0x157a000000118fL,
0x158200000051afL,
0x158a0000000490L,
0x15920000002cb0L,
0x159a0000002670L,
0x15a200000032b2L,
0x15aa0000000833L,
0x15b20000000cb3L,
0x15ba0000004db3L,
0x15c200000055f3L,
0x15ca0000004eb3L,
0x15d20000000834L,
0x15da00000052b4L,
0x15e20000003255L,
0x15ea0000005136L,
0x15f20000000596L,
0x15fa0000003c37L,
0x1602000000243aL,
0x160a00000050c1L,
0x16120000001ea1L,
0x161a0000003d22L,
0x16220000004d22L,
0x162a0000005122L,
0x16320000003c23L,
0x163a0000000ca4L,
0x16420000004904L,
0x164a0000001d24L,
0x16520000004124L,
0x165a0000003ea4L,
0x166200000052a4L,
0x166a0000004c26L,
0x16720000002c27L,
0x167a0000001ca8L,
0x168200000031ebL,
0x168a0000004aabL,
0x169200000035ecL,
0x169a000000202dL,
0x16a200000026adL,
0x16aa00000064aeL,
0x16b2000000244fL,
0x16ba0000003d0fL,
0x16c2000000358fL,
0x16ca0000000a4fL,
0x16d20000005270L,
0x16da0000001df3L,
0x16e200000041f3L,
0x16ea0000001834L,
0x16f200000059f4L,
0x16fa00000032b4L,
0x17020000003136L,
0x170a0000001037L,
0x17120000002cb7L,
0x171a00000034b7L,
0x17220000005441L,
0x172a0000000721L,
0x173200000040a2L,
0x173a0000003aa2L,
0x17420000004d23L,
0x174a00000016a3L,
0x175200000032a4L,
0x175a0000005465L,
0x17620000004d26L,
0x176a0000000586L,
0x17720000001c27L,
0x177a0000004027L,
0x178200000008a7L,
0x178a0000003d87L,
0x17920000002028L,
0x179a00000026a8L,
0x17a20000001d2dL,
0x17aa000000598fL,
0x17b200000031f0L,
0x17ba00000026b0L,
0x17c20000004ab0L,
0x17ca0000000d33L,
0x17d200000036b3L,
0x17da0000000d34L,
0x17e200000009f4L,
0x17ea0000003d96L,
0x17f200000011f6L,
0x17fa0000002c37L,
0x18020000003437L,
0x180a0000002cc1L,
0x181200000034c1L,
0x181a0000001c22L,
0x18220000002d22L,
0x182a0000003d82L,
0x183200000012c4L,
0x183a0000003426L,
0x18420000003aa6L,
0x184a0000001d27L,
0x185200000035e7L,
0x185a00000052a7L,
0x186200000018a8L,
0x186a0000005928L,
0x187200000035e8L,
0x187a000000182bL,
0x1882000000358bL,
0x188a00000032abL,
0x18920000003c4cL,
0x189a00000009ecL,
0x18a20000002eacL,
0x18aa00000012adL,
0x18b200000032adL,
0x18ba000000350fL,
0x18c20000001dafL,
0x18ca0000002510L,
0x18d20000002df0L,
0x18da00000035f0L,
0x18e20000004eb0L,
0x18ea00000019f3L,
0x18f200000042b3L,
0x18fa0000004e15L,
0x190200000052b6L,
0x190a0000002d37L,
0x191200000040baL,
0x191a0000003dfaL,
0x192200000018a2L,
0x192a0000005643L,
0x193200000019e4L,
0x193a00000022a4L,
0x194200000011e6L,
0x194a0000001828L,
0x19520000002c69L,
0x195a000000502aL,
0x1962000000192bL,
0x196a0000000decL,
0x197200000035adL,
0x197a00000036adL,
0x19820000005590L,
0x198a00000032b0L,
0x19920000000ab3L,
0x199a0000004ef5L,
0x19a20000002755L,
0x19aa0000004d16L,
0x19b20000001d37L,
0x19ba0000002df7L,
0x19c20000004c39L,
0x19ca000000403aL,
0x19d20000000c41L,
0x19da0000000922L,
0x19e200000041e2L,
0x19ea00000032a2L,
0x19f20000002503L,
0x19fa0000004903L,
0x1a020000000aa4L,
0x1a0a00000068a6L,
0x1a1200000052a6L,
0x1a1a00000036a7L,
0x1a220000003c48L,
0x1a2a00000009e8L,
0x1a3200000036a8L,
0x1a3a000000102aL,
0x1a4200000054aaL,
0x1a4a00000019ebL,
0x1a520000000aacL,
0x1a5a0000002eb0L,
0x1a620000006654L,
0x1a6a0000003cd5L,
0x1a720000001837L,
0x1a7a0000003d17L,
0x1a82000000413aL,
0x1a8a0000000c61L,
0x1a920000005541L,
0x1a9a0000000d22L,
0x1aa20000002ea2L,
0x1aaa00000012c2L,
0x1ab20000006644L,
0x1aba0000001aa4L,
0x1ac20000002446L,
0x1aca00000041e6L,
0x1ad200000042a7L,
0x1ada0000001ea8L,
0x1ae20000003149L,
0x1aea0000002c2aL,
0x1af2000000112aL,
0x1afa0000003aaaL,
0x1b0200000019f0L,
0x1b0a0000001995L,
0x1b120000000df6L,
0x1b1a0000002c39L,
0x1b220000003439L,
0x1b2a0000001dfaL,
0x1b3200000019e2L,
0x1b3a0000001722L,
0x1b420000000aa8L,
0x1b4a0000005ea8L,
0x1b520000002d49L,
0x1b5a00000031eaL,
0x1b620000001aadL,
0x1b6a0000000c54L,
0x1b720000005da2L,
0x1b7a0000005503L,
0x1b820000000983L,
0x1b8a0000000907L,
0x1b92000000082aL,
0x1b9a00000035eaL,
0x1ba200000052aaL,
0x1baa0000002930L,
0x1bb20000001ab0L,
0x1bba0000001deaL,
0x1bc200000032aaL,
0x1bca0000005031L,
0x1bd200000010b1L,
0x1bda0000006033L,
0x1be20000004334L,
0x1bea0000004c38L,
0x1bf20000002eaaL,
0x1bfa0000000c42L,
0x1c020000003727L,
0x1c0a00000060a8L,
0x1c1200000018d0L,
0x1c1a0000000c66L,
0x1c220000006037L,
0x1c2a00000062acL,
0x1c320000006126L
};
}
}

View File

@@ -1,41 +0,0 @@
package puzzle.dict900;
public final class DictDataL4 {
private DictDataL4() {}
static final int LEN = 4;
static final int ROWS = 104;
static final int COLS = 35;
static final int WORDS_LEN = 2190;
static final int POS_LEN = 3640;
private static long[] words() {
return DictDataL4W0.get();
}
private static long[] posFlat() {
return DictDataL4P0.get();
}
public static puzzle.SwedishGenerator.DictEntry entry() {
long[] wds = words();
long[] flat = posFlat();
long[][] pos = reshape(flat, ROWS, COLS);
return new puzzle.SwedishGenerator.DictEntry(wds, pos, wds.length, (wds.length + 63) >>> 6);
}
private static int copy(long[] dst, int at, long[] src) {
System.arraycopy(src, 0, dst, at, src.length);
return at + src.length;
}
private static long[][] reshape(long[] flat, int rows, int cols) {
long[][] out = new long[rows][cols];
int k = 0;
for (int r = 0; r < rows; r++) {
System.arraycopy(flat, k, out[r], 0, cols);
k += cols;
}
return out;
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,45 +0,0 @@
package puzzle.dict900;
public final class DictDataL5 {
private DictDataL5() {}
static final int LEN = 5;
static final int ROWS = 130;
static final int COLS = 69;
static final int WORDS_LEN = 4403;
static final int POS_LEN = 8970;
private static long[] words() {
return DictDataL5W0.get();
}
private static long[] posFlat() {
long[] out = new long[POS_LEN];
int k = 0;
k = copy(out, k, DictDataL5P0.get());
k = copy(out, k, DictDataL5P1.get());
return out;
}
public static puzzle.SwedishGenerator.DictEntry entry() {
long[] wds = words();
long[] flat = posFlat();
long[][] pos = reshape(flat, ROWS, COLS);
return new puzzle.SwedishGenerator.DictEntry(wds, pos, wds.length, (wds.length + 63) >>> 6);
}
private static int copy(long[] dst, int at, long[] src) {
System.arraycopy(src, 0, dst, at, src.length);
return at + src.length;
}
private static long[][] reshape(long[] flat, int rows, int cols) {
long[][] out = new long[rows][cols];
int k = 0;
for (int r = 0; r < rows; r++) {
System.arraycopy(flat, k, out[r], 0, cols);
k += cols;
}
return out;
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,787 +0,0 @@
package puzzle.dict900;
public final class DictDataL5P1 {
private DictDataL5P1() {}
public static long[] get() {
return new long[] {
0x2000000020002L,
0x400000000000000L,
0x2000080000000000L,
0x200000000L,
0xa0041200000L,
0x800000000000L,
0x200201L,
0x20012040001L,
0x11010L,
0x0L,
0x32000400400L,
0x4000001000000L,
0x880000L,
0x0L,
0x1020000000L,
0x0L,
0x0L,
0x2000000000L,
0x0L,
0x0L,
0x0L,
0x0L,
0x2000000000020000L,
0x90000000L,
0x4000001000000L,
0x0L,
0x0L,
0x820000000000000L,
0x0L,
0x0L,
0x800000000000000L,
0x0L,
0x0L,
0x100L,
0x0L,
0x1000000000000L,
0x0L,
0x20004L,
0x0L,
0x0L,
0x40L,
0x400000L,
0x40L,
0x0L,
0x1012000L,
0x100L,
0x100000000000L,
0x1000040000000001L,
0x8000L,
0x200000L,
0x2000000000010000L,
0x200000000000000L,
0x6000000000L,
0x1000000080000080L,
0x2090004400000001L,
0x2100000040008000L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x8000000000000000L,
0x100000000000L,
0x40800000L,
0x1000000000040008L,
0x2008000000000000L,
0x0L,
0x4000800000L,
0x800000000L,
0x200004400000000L,
0x2000008000L,
0x0L,
0x40000L,
0x80000L,
0x20L,
0x8100000000000000L,
0x140000000000000L,
0xc002000081000000L,
0x10100L,
0x100000080L,
0x200000800L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x1280000000b80080L,
0x20110a1000400200L,
0x10b0010931L,
0x50880200c0008010L,
0x108c000200010120L,
0x2100081000000000L,
0x8800200c000800L,
0x0L,
0x0L,
0x18000a5460000L,
0x16c01008000c4012L,
0x44000400180a4100L,
0xa080201100044101L,
0x4808000200000000L,
0x800020000000004L,
0x8490000002800081L,
0x228b01000000140L,
0x4480108020404000L,
0x4000400020002400L,
0x281030100021000L,
0x800100260800200L,
0x8004000042000200L,
0x1010000044000200L,
0x100000108000200L,
0x5300000000080020L,
0x0L,
0x2000100000000L,
0x8000000000820000L,
0x1020020L,
0x120000020000400L,
0x40000000000000L,
0x800010000000000L,
0x4000000L,
0x800000L,
0x4000000000000L,
0x800000000L,
0x30000000L,
0x210000000000L,
0x40981800420c0004L,
0x1000002010800000L,
0x81800000005000a0L,
0x600000001000200L,
0x10400084L,
0x1700001400080L,
0x800400200020000L,
0x408000a00000000L,
0x40002004840080L,
0x2200008000080a0L,
0x400000000008L,
0x40082L,
0x800L,
0x1008082000L,
0x820000004L,
0x40000000100000L,
0x20000L,
0x800040000000000L,
0x1000000000000020L,
0x1000000000000000L,
0x0L,
0x4200000L,
0x0L,
0x100000L,
0x0L,
0x200000000000L,
0x80000000000L,
0x0L,
0x0L,
0x0L,
0x800000L,
0x10300001010L,
0x21000000L,
0x1002002000000000L,
0x400005000020L,
0x3a0000000004L,
0x200000018004080L,
0x100800400012000L,
0x800034041000L,
0x2800020022000L,
0x1000040000000000L,
0x80000000000L,
0x12010000000080a0L,
0x2100a26022000L,
0x90400100204L,
0x400000400000012L,
0x1000200000040L,
0x1000004003020000L,
0x2010a01000L,
0x120080000050000L,
0x3104000000000189L,
0x10002000000405L,
0x40008001222000L,
0x6000100a10080L,
0x808801000000002L,
0x40052000000408L,
0x10800a80000020L,
0x4000450082212440L,
0x1081004000001700L,
0x800000044080014L,
0x840111000030022L,
0x800000008102000L,
0x158c800000812L,
0x2d000309104400L,
0x41920811024022c0L,
0x89a0040041a25149L,
0x1010020a0274044L,
0x400004002000404L,
0x1400000000020002L,
0x1040010000020800L,
0x8200440042000082L,
0x841802013201L,
0x1048001210840402L,
0x6020140000060000L,
0x704604000a980008L,
0x210802448d103L,
0x4041200000804080L,
0x400024006a004400L,
0x844006413084040L,
0x6108110408244000L,
0x400000020114104L,
0x4004002240200114L,
0x4289434006020440L,
0x140010004818000L,
0x62080210040e401L,
0x510800034010201L,
0x130100401220L,
0x800084c0084084L,
0x8880000a90012L,
0x1000480008380040L,
0x400c08800401245L,
0x8004080001802010L,
0x88ab44800800600L,
0x82251052a040280dL,
0x1282482085a01c02L,
0xe40e004003000458L,
0x11833a54000510L,
0x885a90509808044cL,
0x7097e28001258448L,
0x40000002b0010L,
0x27024022002L,
0xa140000360000L,
0x180104602400246L,
0x820212400802082L,
0x40000000080e0400L,
0x4081048986440100L,
0x142520c963184100L,
0x112c668082132143L,
0x759c57ed5fa44da5L,
0x84000000000001eL,
0x801004000018004L,
0x2014020005010040L,
0x8000020L,
0x101800010088L,
0x242006210100000L,
0x4022048c00081020L,
0x4200010L,
0x2100004100aa1cL,
0x90160a00080000L,
0x28080000700002L,
0x26000008500802L,
0x420b134200910400L,
0xa00000a0020005L,
0x1000100050810089L,
0x8c00080101004016L,
0x280548044200201L,
0x29408a402c404004L,
0x2100d0200100020L,
0x418000200100200L,
0x500a2a0000000840L,
0xa280932080440000L,
0x800c00001010228cL,
0x199028d040008049L,
0x8200158a311a4435L,
0x2620b1e418624L,
0x982aa01102c00188L,
0x2e020480a83008L,
0x4000000000088014L,
0x8000220000400100L,
0x6103100004010700L,
0xa042840c0004112L,
0x41000c8104211000L,
0x81040c003115041L,
0x8800008020000800L,
0x6154a01808000220L,
0x8100802050000108L,
0x1800001200400202L,
0x65800a0020011004L,
0x8000a089101102a0L,
0x3410014004a0021L,
0x8923c01009c080L,
0x80109c200040500cL,
0x2420101101861L,
0x88000080a1220804L,
0xca00011400400142L,
0x2000009004240041L,
0x4a01e04105008000L,
0x44248808001040L,
0x2240a54232004000L,
0xfb881b0088040000L,
0x141505070005169L,
0x22114013920698a2L,
0x108e7a446139690L,
0x640d941f7a146339L,
0x1a31858844bccba2L,
0x23ac54c508bd98a5L,
0x31a028a061e6a8a3L,
0x4280c1eaa5a1007L,
0x42544542088L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x40L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x800000L,
0x0L,
0x0L,
0x40000L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x800000000000L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x2000000000L,
0x0L,
0x0L,
0x0L,
0x0L,
0x20000000L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x40000000000000L,
0x0L,
0x0L,
0x0L,
0x0L,
0x1000000000000000L,
0x0L,
0x0L,
0x0L,
0x20000000000L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x800000000L,
0x0L,
0x0L,
0x0L,
0x20000000800000L,
0x0L,
0x400000000000L,
0x1000200000000L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x1000000000000L,
0x0L,
0x0L,
0x0L,
0x8000000000000000L,
0x1000000000000L,
0x400000080008L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x100000L,
0x200L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x1000000000000002L,
0x0L,
0x5000000000000000L,
0x2L,
0x400000L,
0x100000000000000L,
0x1000000L,
0x0L,
0x8000000L,
0x0L,
0x0L,
0x0L,
0x0L,
0x1000L,
0x100L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x8L,
0x0L,
0x0L,
0x0L,
0x1000020000000000L,
0x40000000010L,
0x0L,
0x400000000000000L,
0x0L,
0x20L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x3000000000000000L,
0x80000L,
0x4L,
0x800200000000008L,
0x4000000100000L,
0x2000L,
0x810000008000L,
0x8000000000L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x200101000L,
0x101L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x400000000000000L,
0x0L,
0x0L,
0x0L,
0x8000000004L,
0x0L,
0x10000000000000L,
0x10000000L,
0x0L,
0x400000000L,
0x404180240000010L,
0x8000710001000a02L,
0x7bf07889L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x2000000000000L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x400000020000L,
0x0L,
0x4000000000000000L,
0x0L,
0x342d091000000L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x2000000000L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x10L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x200000000L,
0x0L,
0x0L,
0x0L,
0x0L
};
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,46 +0,0 @@
package puzzle.dict900;
public final class DictDataL6 {
private DictDataL6() {}
static final int LEN = 6;
static final int ROWS = 156;
static final int COLS = 111;
static final int WORDS_LEN = 7068;
static final int POS_LEN = 17316;
private static long[] words() {
return DictDataL6W0.get();
}
private static long[] posFlat() {
long[] out = new long[POS_LEN];
int k = 0;
k = copy(out, k, DictDataL6P0.get());
k = copy(out, k, DictDataL6P1.get());
k = copy(out, k, DictDataL6P2.get());
return out;
}
public static puzzle.SwedishGenerator.DictEntry entry() {
long[] wds = words();
long[] flat = posFlat();
long[][] pos = reshape(flat, ROWS, COLS);
return new puzzle.SwedishGenerator.DictEntry(wds, pos, wds.length, (wds.length + 63) >>> 6);
}
private static int copy(long[] dst, int at, long[] src) {
System.arraycopy(src, 0, dst, at, src.length);
return at + src.length;
}
private static long[][] reshape(long[] flat, int rows, int cols) {
long[][] out = new long[rows][cols];
int k = 0;
for (int r = 0; r < rows; r++) {
System.arraycopy(flat, k, out[r], 0, cols);
k += cols;
}
return out;
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,941 +0,0 @@
package puzzle.dict900;
public final class DictDataL6P2 {
private DictDataL6P2() {}
public static long[] get() {
return new long[] {
0x402001000002L,
0x8840002010200062L,
0x3002000080040020L,
0x20c0000001090000L,
0x1011003000080010L,
0x2e08000004800110L,
0x410012000a808L,
0x110400000020400L,
0x41001080000010L,
0x8434088110180000L,
0x6014042530800280L,
0x920000000008025L,
0x1002000000001400L,
0x2020204801001000L,
0xc00200124002010L,
0x80442800000008L,
0x8110080080028000L,
0x41000000000L,
0x2410830000200412L,
0xb000000010005040L,
0x4404800002900100L,
0x4000000L,
0x2014000000004L,
0x209004100005000L,
0x1090280000L,
0x810000008L,
0x9000120380000000L,
0x4280001000110L,
0x9100000060080L,
0x1060010401000801L,
0x80009010000000L,
0x2001300000442080L,
0x8010109800L,
0x280080008800000L,
0x8010000000140000L,
0x2000000000000008L,
0x880000000L,
0x9010000002002000L,
0x44000000L,
0x100000002L,
0x100000L,
0x8000L,
0x8000000020000000L,
0x0L,
0x1000000010000L,
0x2480210010000008L,
0x4080000L,
0x600108004000L,
0xc002202000430000L,
0x20400000002000L,
0x4000800000000000L,
0x1000100000000000L,
0x0L,
0x200400000004000L,
0x800000020000000L,
0x1000000000000040L,
0x800020L,
0xa000004L,
0x42000000400L,
0x2000200200001902L,
0x200208000004000L,
0x1080000840040L,
0x320000080L,
0x1232000802410080L,
0x400010000000000L,
0x200808000010c000L,
0x20000020022240L,
0x20c0800L,
0x9300000000200008L,
0x1002000004000000L,
0x600400080020002L,
0x104018800000420L,
0x802014L,
0x118000000000000L,
0x410L,
0x2008040020L,
0x20400800000428L,
0xc10000000022L,
0xc008080800a0004L,
0x60000b8000040L,
0x10008000000000L,
0x8980400000000000L,
0x200004000880040L,
0x1005200802000L,
0x40061400040100L,
0x24000040000L,
0x910000200L,
0x1020000000000L,
0x400008000L,
0x200000000a002000L,
0x4306208010008020L,
0x402000001000500L,
0x24000000000040L,
0x10022L,
0x2000002820000040L,
0x210001100004001L,
0x8006000000L,
0x104006352000020L,
0xa000191000001009L,
0x40008008a0L,
0x9282000e81000000L,
0xa40000000000200L,
0xd0000000080L,
0x400080100600L,
0x440180800544826L,
0x8000000009408L,
0x848020100100410L,
0x401601000085001L,
0x10010000000000L,
0x1001000a4008096L,
0x9041400003000820L,
0x800000824307001L,
0xc84d000002100L,
0x808000400000002L,
0x88028080b0048002L,
0x300800090000844L,
0x8120121010100000L,
0x34e0400200244200L,
0x4048020001000L,
0x2804800101200001L,
0x400820004L,
0xc0c2480801014fL,
0x4084020800000c80L,
0x20200a528200a000L,
0x2010001006001b5L,
0x902a04200804800bL,
0x100181000020280L,
0x404101210440000L,
0x880000850483280L,
0x10e080000400108L,
0x841000200100090L,
0x12000000000bL,
0x402380402000f04L,
0x1423110001a00L,
0x80025c00a0020000L,
0x1122224308008008L,
0x9e000000000302L,
0x308000001000520L,
0x91000220040002L,
0x9604626000484040L,
0x800d0004030d0L,
0x1001c044e004000cL,
0x402020000c100L,
0x480092a00080400L,
0x8008404401009d00L,
0x24000010008281L,
0x8004080d0020000L,
0x10c1e00224011948L,
0x2004c3240002d010L,
0x8000000020e030L,
0x30104d02601d500L,
0x2043008203000L,
0xa10040000d0800L,
0x801020010L,
0x8008L,
0x0L,
0x40000000000L,
0x108000000140202L,
0x8004001010410000L,
0x61800880100000L,
0x800000028000L,
0x800001008000000L,
0x8001000000020L,
0x810101400000020L,
0x83300000010L,
0x40000L,
0x882880000400L,
0x10180a000000L,
0x8000020008040aL,
0x184021020000L,
0x401000000000004L,
0x401000000010110L,
0x840400000000000L,
0x40000010080004L,
0x44000000080000L,
0x100001000001L,
0xda10030010400001L,
0x1a88000100004822L,
0x6c00001441005000L,
0x10401100050L,
0x450560140800282L,
0x80010e00924e820L,
0x24010002c110L,
0x911044900014100L,
0x43a080251c092L,
0x2040000081500000L,
0xa08600000604000L,
0x80002c000002200L,
0x80802001a0028000L,
0x9204504404802108L,
0x608020000a00830L,
0x102004248c8e0L,
0x0L,
0xc620800000000L,
0x80004020004L,
0x4002000000010L,
0x800000000400004L,
0x1000000001012000L,
0x1000000000102000L,
0x240b00080L,
0x10000040000200L,
0x0L,
0x80201800a0001001L,
0x30000000000L,
0x2000000001040048L,
0x4400200000400480L,
0x126040800002000L,
0x12208808004L,
0x88401200000L,
0x4800000080020L,
0x1088000240000L,
0x10100100600002L,
0x2002000000028L,
0x800011804L,
0x202001d024020020L,
0x800408004200000L,
0x9000080400000800L,
0x800L,
0x280L,
0x464002a811080062L,
0x8b800000020L,
0xa00008004010001L,
0x218c4080440408L,
0x1000030400008000L,
0xc2202078001010d0L,
0x1400501000100008L,
0x4004c0908040008L,
0x10006824a0000000L,
0x100814800000000L,
0x101110c082080L,
0x12000410021000L,
0x80000002002000L,
0x208008200326010L,
0x410a072050c2000L,
0x4088208550600384L,
0x8002400018208L,
0x6180190040184904L,
0x404300405dad3042L,
0x2080008440300301L,
0x23420040aea78000L,
0xc00010491e002200L,
0x400082f16e81a205L,
0xaf00c0004222820L,
0x4880000801966000L,
0xe700040200618421L,
0x400083000400065bL,
0xa8800c0000113832L,
0x582093c06368b0a4L,
0x4020000022208aL,
0x8000428400d87200L,
0x280008090c000008L,
0x4085400000848400L,
0x318000a01401c60L,
0x44020880e9a00801L,
0x26600004800258L,
0x10038010020a0010L,
0x2801040002200060L,
0xe002090418d110L,
0x4234100000584002L,
0x1000481a0000486L,
0x1a00420101010800L,
0x8ca0600481002000L,
0x4404080624810000L,
0x8040091020038L,
0x1024215250410008L,
0x2500L,
0x0L,
0x0L,
0x0L,
0x1000000000000000L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x20000000000000L,
0x0L,
0x0L,
0x0L,
0x8000000000L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x100000L,
0x800000L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x1000000L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x4000L,
0x0L,
0x0L,
0x0L,
0x8000000000000000L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x400000L,
0x0L,
0x0L,
0x0L,
0x0L,
0x2000000000000L,
0x0L,
0x0L,
0x0L,
0x0L,
0x40000000L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x1000000000L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x4000000000000000L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x100L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x800000000000L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x1000000L,
0x0L,
0x0L,
0x0L,
0x100000000L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x40000000000000L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x80000L,
0x0L,
0x200L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x20L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x800000000L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x2100000L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x4L,
0x0L,
0x2000L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x40000000000L,
0x200L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x80000000000000L,
0x100000000000L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x100000000L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x40000000000L,
0x2000000000000000L,
0x0L,
0x200088000000000L,
0x200000002000800L,
0x2815010L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x20000000L,
0x0L,
0x100001000000000L,
0x2000000010000L,
0x4010L,
0x0L,
0xa2c4000160000L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x2L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x200000L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x8000000000L,
0x0L,
0x0L,
0x10000000L,
0x0L,
0x100000L,
0x0L,
0x0L,
0x200020000000000L,
0x400020L,
0x0L,
0x4L,
0x0L,
0x20000000000020L,
0x0L,
0x0L,
0x40000000000102L,
0x1000000020100000L,
0x2000802004001000L,
0x1100000L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x80L,
0x0L,
0x0L,
0x0L,
0x0L
};
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,51 +0,0 @@
package puzzle.dict900;
public final class DictDataL7 {
private DictDataL7() {}
static final int LEN = 7;
static final int ROWS = 182;
static final int COLS = 174;
static final int WORDS_LEN = 11121;
static final int POS_LEN = 31668;
private static long[] words() {
long[] out = new long[WORDS_LEN];
int k = 0;
k = copy(out, k, DictDataL7W0.get());
k = copy(out, k, DictDataL7W1.get());
return out;
}
private static long[] posFlat() {
long[] out = new long[POS_LEN];
int k = 0;
k = copy(out, k, DictDataL7P0.get());
k = copy(out, k, DictDataL7P1.get());
k = copy(out, k, DictDataL7P2.get());
k = copy(out, k, DictDataL7P3.get());
return out;
}
public static puzzle.SwedishGenerator.DictEntry entry() {
long[] wds = words();
long[] flat = posFlat();
long[][] pos = reshape(flat, ROWS, COLS);
return new puzzle.SwedishGenerator.DictEntry(wds, pos, wds.length, (wds.length + 63) >>> 6);
}
private static int copy(long[] dst, int at, long[] src) {
System.arraycopy(src, 0, dst, at, src.length);
return at + src.length;
}
private static long[][] reshape(long[] flat, int rows, int cols) {
long[][] out = new long[rows][cols];
int k = 0;
for (int r = 0; r < rows; r++) {
System.arraycopy(flat, k, out[r], 0, cols);
k += cols;
}
return out;
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,53 +0,0 @@
package puzzle.dict900;
public final class DictDataL8 {
private DictDataL8() {}
static final int LEN = 8;
static final int ROWS = 208;
static final int COLS = 202;
static final int WORDS_LEN = 12886;
static final int POS_LEN = 42016;
private static long[] words() {
long[] out = new long[WORDS_LEN];
int k = 0;
k = copy(out, k, DictDataL8W0.get());
k = copy(out, k, DictDataL8W1.get());
return out;
}
private static long[] posFlat() {
long[] out = new long[POS_LEN];
int k = 0;
k = copy(out, k, DictDataL8P0.get());
k = copy(out, k, DictDataL8P1.get());
k = copy(out, k, DictDataL8P2.get());
k = copy(out, k, DictDataL8P3.get());
k = copy(out, k, DictDataL8P4.get());
k = copy(out, k, DictDataL8P5.get());
return out;
}
public static puzzle.SwedishGenerator.DictEntry entry() {
long[] wds = words();
long[] flat = posFlat();
long[][] pos = reshape(flat, ROWS, COLS);
return new puzzle.SwedishGenerator.DictEntry(wds, pos, wds.length, (wds.length + 63) >>> 6);
}
private static int copy(long[] dst, int at, long[] src) {
System.arraycopy(src, 0, dst, at, src.length);
return at + src.length;
}
private static long[][] reshape(long[] flat, int rows, int cols) {
long[][] out = new long[rows][cols];
int k = 0;
for (int r = 0; r < rows; r++) {
System.arraycopy(flat, k, out[r], 0, cols);
k += cols;
}
return out;
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -5,8 +5,9 @@ import lombok.AllArgsConstructor;
import lombok.experimental.Delegate;
import lombok.val;
import precomp.Const9x8.Cell;
import puzzle.Export.Gridded.Replacar.Rell;
import puzzle.Export.Puzzle.Replacar.Rell;
import puzzle.Masker.Clues;
import puzzle.Meta.ShardLem;
import puzzle.SwedishGenerator.Dict;
import puzzle.SwedishGenerator.FillResult;
import puzzle.SwedishGenerator.Grid;
@@ -19,7 +20,6 @@ import static puzzle.Masker.Clues.createEmpty;
import static puzzle.Masker.Slot;
import static puzzle.Masker.C;
import static puzzle.SwedishGenerator.Lemma;
import static puzzle.SwedishGenerator.SIZE;
import static puzzle.SwedishGenerator.X;
/**
@@ -61,21 +61,16 @@ public record Export() {
public static Clue from(int dir) { return CLUES[dir]; }
}
record Strings() {
static String padRight(String s, int n) { return s.length() >= n ? s : s + " ".repeat(n - s.length()); }
}
public record Vestigium(int index, int clue) { }
public record ClueAt(int index, int clue) { }
public record Clued(@Delegate Clues c) {
public record Signa(@Delegate Clues c) {
public static Clued of(Cell... cells) {
public static Signa of(Cell... cells) {
var c = createEmpty();
for (var cell : cells) c.setClue(cell);
return new Clued(c);
return new Signa(c);
}
public Clued deepCopyGrid() { return new Clued(new Clues(c.lo, c.hi, c.vlo, c.vhi, c.rlo, c.rhi, c.xlo, c.xhi)); }
public Signa deepCopyGrid() { return new Signa(new Clues(c.lo, c.hi, c.vlo, c.vhi, c.rlo, c.rhi, c.xlo, c.xhi)); }
String gridToString() {
var sb = new StringBuilder(INIT_GRID_OUTPUT);
forEachSlot((s, _, _) -> {
@@ -85,21 +80,21 @@ public record Export() {
});
return sb.toString();
}
public Stream<ClueAt> stream() {
val stream = Stream.<ClueAt>builder();
for (var l = c.lo & ~c.xlo & ~c.rlo & c.vlo; l != X; l &= l - 1) stream.accept(new ClueAt(Long.numberOfTrailingZeros(l), RIGHT1.dir));
for (var l = c.lo & ~c.xlo & ~c.rlo & ~c.vlo; l != X; l &= l - 1) stream.accept(new ClueAt(Long.numberOfTrailingZeros(l), DOWN0.dir));
for (var l = c.lo & ~c.xlo & c.rlo & ~c.vlo; l != X; l &= l - 1) stream.accept(new ClueAt(Long.numberOfTrailingZeros(l), CLUE_UP));
for (var l = c.lo & ~c.xlo & c.rlo & c.vlo; l != X; l &= l - 1) stream.accept(new ClueAt(Long.numberOfTrailingZeros(l), CLUE_LEFT));
for (var l = c.lo & c.xlo & ~c.rlo & ~c.vlo; l != X; l &= l - 1) stream.accept(new ClueAt(Long.numberOfTrailingZeros(l), CLUE_LEFT_TOP));
for (var l = c.lo & c.xlo & ~c.rlo & c.vlo; l != X; l &= l - 1) stream.accept(new ClueAt(Long.numberOfTrailingZeros(l), CLUE_RIGHT_TOP));
public Stream<Vestigium> stream() {
val stream = Stream.<Vestigium>builder();
for (var l = c.lo & ~c.xlo & ~c.rlo & c.vlo; l != X; l &= l - 1) stream.accept(new Vestigium(Long.numberOfTrailingZeros(l), RIGHT1.dir));
for (var l = c.lo & ~c.xlo & ~c.rlo & ~c.vlo; l != X; l &= l - 1) stream.accept(new Vestigium(Long.numberOfTrailingZeros(l), DOWN0.dir));
for (var l = c.lo & ~c.xlo & c.rlo & ~c.vlo; l != X; l &= l - 1) stream.accept(new Vestigium(Long.numberOfTrailingZeros(l), CLUE_UP));
for (var l = c.lo & ~c.xlo & c.rlo & c.vlo; l != X; l &= l - 1) stream.accept(new Vestigium(Long.numberOfTrailingZeros(l), CLUE_LEFT));
for (var l = c.lo & c.xlo & ~c.rlo & ~c.vlo; l != X; l &= l - 1) stream.accept(new Vestigium(Long.numberOfTrailingZeros(l), CLUE_LEFT_TOP));
for (var l = c.lo & c.xlo & ~c.rlo & c.vlo; l != X; l &= l - 1) stream.accept(new Vestigium(Long.numberOfTrailingZeros(l), CLUE_RIGHT_TOP));
for (var h = c.hi & ~c.xhi & ~c.rhi & c.vhi; h != X; h &= h - 1) stream.accept(new ClueAt(HI(Long.numberOfTrailingZeros(h)), CLUE_RIGHT));
for (var h = c.hi & ~c.xhi & ~c.rhi & ~c.vhi; h != X; h &= h - 1) stream.accept(new ClueAt(HI(Long.numberOfTrailingZeros(h)), CLUE_DOWN));
for (var h = c.hi & ~c.xhi & c.rhi & ~c.vhi; h != X; h &= h - 1) stream.accept(new ClueAt(HI(Long.numberOfTrailingZeros(h)), CLUE_UP));
for (var h = c.hi & ~c.xhi & c.rhi & c.vhi; h != X; h &= h - 1) stream.accept(new ClueAt(HI(Long.numberOfTrailingZeros(h)), CLUE_LEFT));
for (var h = c.hi & c.xhi & ~c.rhi & ~c.vhi; h != X; h &= h - 1) stream.accept(new ClueAt(HI(Long.numberOfTrailingZeros(h)), CLUE_LEFT_TOP));
for (var h = c.hi & c.xhi & ~c.rhi & c.vhi; h != X; h &= h - 1) stream.accept(new ClueAt(HI(Long.numberOfTrailingZeros(h)), CLUE_RIGHT_TOP));
for (var h = c.hi & ~c.xhi & ~c.rhi & c.vhi; h != X; h &= h - 1) stream.accept(new Vestigium(HI(Long.numberOfTrailingZeros(h)), CLUE_RIGHT));
for (var h = c.hi & ~c.xhi & ~c.rhi & ~c.vhi; h != X; h &= h - 1) stream.accept(new Vestigium(HI(Long.numberOfTrailingZeros(h)), CLUE_DOWN));
for (var h = c.hi & ~c.xhi & c.rhi & ~c.vhi; h != X; h &= h - 1) stream.accept(new Vestigium(HI(Long.numberOfTrailingZeros(h)), CLUE_UP));
for (var h = c.hi & ~c.xhi & c.rhi & c.vhi; h != X; h &= h - 1) stream.accept(new Vestigium(HI(Long.numberOfTrailingZeros(h)), CLUE_LEFT));
for (var h = c.hi & c.xhi & ~c.rhi & ~c.vhi; h != X; h &= h - 1) stream.accept(new Vestigium(HI(Long.numberOfTrailingZeros(h)), CLUE_LEFT_TOP));
for (var h = c.hi & c.xhi & ~c.rhi & c.vhi; h != X; h &= h - 1) stream.accept(new Vestigium(HI(Long.numberOfTrailingZeros(h)), CLUE_RIGHT_TOP));
return stream.build();
}
@@ -108,15 +103,15 @@ public record Export() {
}
}
record Gridded(@Delegate Grid grid, Clues cl)
implements Stream<LetterAt> {
record Puzzle(@Delegate Grid grid, Clues cl)
implements Stream<Lettrix> {
public Gridded(Clues clues) { this(clues.toGrid(), clues); }
public Gridded(Clued clues) { this(clues.c); }
public @Delegate Stream<LetterAt> stream() {
val stream = Stream.<LetterAt>builder();
for (var l = grid.lo & ~cl.lo; l != X; l &= l - 1) stream.accept(LetterAt.from(Long.numberOfTrailingZeros(l), grid.g));
for (var h = grid.hi & ~cl.hi & 0xFF; h != X; h &= h - 1) stream.accept(LetterAt.from(64 | Long.numberOfTrailingZeros(h), grid.g));
public Puzzle(Clues clues) { this(clues.toGrid(), clues); }
public Puzzle(Signa clues) { this(clues.c); }
public @Delegate Stream<Lettrix> stream() {
val stream = Stream.<Lettrix>builder();
for (var l = grid.lo & ~cl.lo; l != X; l &= l - 1) stream.accept(Lettrix.from(Long.numberOfTrailingZeros(l), grid.g));
for (var h = grid.hi & ~cl.hi & 0xFF; h != X; h &= h - 1) stream.accept(Lettrix.from(64 | Long.numberOfTrailingZeros(h), grid.g));
return stream.build();
}
String gridToString() {
@@ -141,7 +136,7 @@ public record Export() {
sb[r * (C + 1) + c] = (byte) clueChar.replace(new Rell(grid, cl, idx, (byte) (dir | 48)));
});
stream().forEach((l) -> sb[l.index(C + 1)] = (byte) l.human());
return new String(sb).replaceAll(" ", "" + emptyFallback).split("\n");
return new String(sb).replaceAll(" ", String.valueOf(emptyFallback)).split("\n");
}
public static IntStream cellWalk(byte base, long lo, long hi) {
if (Slotinfo.increasing(base)) {
@@ -219,8 +214,19 @@ public record Export() {
public record WordOut(String word, int[] cell, int startRow, int startCol, char direction, int arrowRow, int arrowCol, boolean isReversed, int complex, String[] clue) {
private static ShardLem lookup(long w, byte[] bytes) {
try {
val rec = Meta.lookupSilent(w);
System.out.println("\nQuery: w=" + w + " -> i=" + rec.mmap());
System.out.println(" word=" + Lemma.asWord(w, bytes) + "\n" + " simpel=" + rec.simpel() + "\n" + " clues=" + Arrays.toString(rec.clues()));
return rec;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
public WordOut(long l, int startRow, int startCol, char d, int arrowRow, int arrowCol, boolean isReversed, byte[] bytes) {
val meta = Meta.lookup(l);
val meta = lookup(l, bytes);
this(Lemma.asWord(l, bytes), new int[]{ arrowRow, arrowCol, startRow, startCol }, startRow, startCol, d, arrowRow, arrowCol, isReversed,
meta.simpel(), meta.clues());
}
@@ -228,7 +234,7 @@ public record Export() {
public record ExportedPuzzle(String[] grid, WordOut[] words, int difficulty, Rewards rewards) { }
public record PuzzleResult(Clued clues, Gridded grid, Slotinfo[] slots, FillResult filled) {
public record PuzzleResult(Signa clues, Puzzle grid, Slotinfo[] slots, FillResult filled) {
public ExportedPuzzle exportFormatFromFilled(Rewards rewards) {
// If nothing placed: return full grid mapped to letters/# only
@@ -236,7 +242,7 @@ public record Export() {
return new ExportedPuzzle(grid.exportGrid(_ -> '#', '#'), new WordOut[0], 1, rewards);
}
var placed = Arrays.stream(slots).map(slot -> new Placed(slot.assign().w, slot.key(), Gridded.cellWalk((byte) slot.key(), slot.lo(), slot.hi()).toArray())).toArray(
var placed = Arrays.stream(slots).map(slot -> new Placed(slot.assign().w, slot.key(), Puzzle.cellWalk((byte) slot.key(), slot.lo(), slot.hi()).toArray())).toArray(
Placed[]::new);
// 2) bounding box around all word cells + arrow cells, with 1-cell margin
@@ -258,7 +264,7 @@ public record Export() {
}
// 3) map of only used letter cells (everything else becomes '#')
var map = grid.stream().collect(Collectors.toMap(LetterAt::index, LetterAt::human));
var map = grid.stream().collect(Collectors.toMap(Lettrix::index, Lettrix::human));
// 4) render gridv2 over cropped bounds (out-of-bounds become '#')
var gridv2 = new String[Math.max(0, maxR - minR + 1)];
for (int r = minR, i = 0; r <= maxR; r++, i++) {
@@ -279,20 +285,17 @@ public record Export() {
p.arrowCol() - MIN_C,
p.isReversed(), bytes
)).toArray(WordOut[]::new);
var total = 0.0001d;
for (var word : wordsOut) {
total += word.complex();
}
var total = 0.0001d + Arrays.stream(wordsOut).mapToDouble(WordOut::complex).sum();
return new ExportedPuzzle(gridv2, wordsOut, (int) (total / wordsOut.length), rewards);
}
}
record LetterAt(int index, byte letter) {
record Lettrix(int index, byte letter) {
public int row() { return INDEX_ROW(index); }
public int col() { return INDEX_COL(index); }
public char human() { return LETTER(letter); }
static LetterAt from(int index, byte[] bytes) { return new LetterAt(index, bytes[index]); }
public int index(int cols) { return (row() * cols) + col(); }
public int row() { return INDEX_ROW(index); }
public int col() { return INDEX_COL(index); }
public char human() { return LETTER(letter); }
static Lettrix from(int index, byte[] bytes) { return new Lettrix(index, bytes[index]); }
public int index(int cols) { return (row() * cols) + col(); }
}
}

View File

@@ -1,115 +0,0 @@
package puzzle;
import module java.base;
import module java.sql;
public final class HintScores {
public static void main(String[] args) throws Exception {
Class.forName("org.sqlite.JDBC");
try (Connection conn = DriverManager.getConnection("jdbc:sqlite:tools/hint/hint.sqlite")) {
updateCrossScores(conn, HintScores::crossabilityScore, 1000);
}
}
static final Map<Character, Integer> LETTER_WEIGHT = Map.ofEntries(
Map.entry('E', 10), Map.entry('N', 9), Map.entry('A', 9), Map.entry('R', 8),
Map.entry('I', 8), Map.entry('O', 7), Map.entry('S', 7), Map.entry('T', 7),
Map.entry('D', 6), Map.entry('L', 6), Map.entry('K', 5), Map.entry('M', 5),
Map.entry('U', 5), Map.entry('P', 4), Map.entry('G', 4), Map.entry('H', 4),
Map.entry('V', 4), Map.entry('B', 3), Map.entry('W', 3),
Map.entry('C', 2), Map.entry('F', 2), Map.entry('Z', 2),
Map.entry('J', 1), Map.entry('Y', 1), Map.entry('Q', 0), Map.entry('X', 0)
);
static boolean isVowel(char ch) {
return ch == 'A' || ch == 'E' || ch == 'I' || ch == 'O' || ch == 'U';
}
static int crossabilityScore(String w) {
var score = 0;
var vowels = 0;
for (var i = 0; i < w.length(); i++) {
var ch = w.charAt(i);
score += LETTER_WEIGHT.getOrDefault(ch, 2);
if (isVowel(ch)) vowels++;
}
var ratio = vowels / (double) w.length();
if (ratio >= 0.35 && ratio <= 0.65) score += 8;
if (w.indexOf('Q') >= 0 || w.indexOf('X') >= 0) score -= 6;
if (w.indexOf('Y') >= 0 || w.indexOf('J') >= 0) score -= 2;
return score;
}
/**
* Updates hints.cross_score by computing a score from hints.word.
*
* @param conn open JDBC connection (PostgreSQL)
* @param scoreFn callback: scoreFn.applyAsInt(word)
* @param batchSize e.g. 1000
*/
public static void updateCrossScores(
Connection conn,
ToIntFunction<String> scoreFn,
int batchSize
) throws SQLException {
// Use a transaction for speed + consistency
final boolean prevAutoCommit = conn.getAutoCommit();
conn.setAutoCommit(false);
// Server-side cursor behavior in pgjdbc requires autoCommit=false + fetchSize>0
final String selectSql =
"SELECT id, puzzle_norm " +
"FROM hints " +
"WHERE puzzle_norm IS NOT NULL"; // optionally add: " AND cross_score IS NULL"
final String updateSql =
"UPDATE hints SET cross_score = ? WHERE id = ?";
try (PreparedStatement psSel = conn.prepareStatement(selectSql);
PreparedStatement psUpd = conn.prepareStatement(updateSql)) {
psSel.setFetchSize(batchSize);
int pending = 0;
try (ResultSet rs = psSel.executeQuery()) {
while (rs.next()) {
long id = rs.getLong("id");
String word = rs.getString("puzzle_norm");
int score;
try {
score = scoreFn.applyAsInt(word);
} catch (RuntimeException ex) {
ex.printStackTrace();
// If scoring fails, decide your policy: skip or set 0.
// Here: skip row.
continue;
}
psUpd.setInt(1, score);
psUpd.setLong(2, id);
psUpd.addBatch();
pending++;
if (pending >= batchSize) {
psUpd.executeBatch();
conn.commit();
pending = 0;
}
}
}
if (pending > 0) {
psUpd.executeBatch();
conn.commit();
}
} catch (SQLException e) {
conn.rollback();
throw e;
} finally {
conn.setAutoCommit(prevAutoCommit);
}
}
}

View File

@@ -1,16 +1,25 @@
package puzzle;
import module java.base;
import anno.DictGen;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.SneakyThrows;
import lombok.val;
import puzzle.Masker.Clues;
import puzzle.SwedishGenerator.Rng;
import static puzzle.Export.*;
import static puzzle.SwedishGenerator.*;
@DictGen(
packageName = "puzzle.dict800",
className = "DictData800",
scv = "/home/mike/dev/puzzle-generator/nl_score_hints_v4.csv",
simpleMax = 800,
minLen = 2,
maxLen = 8
)
public class Main {
final static String OUT_DIR = envOrDefault("OUT_DIR", "/data/puzzle");
@@ -50,6 +59,7 @@ public class Main {
void main(String[] args) {
_main(args);
}
@SneakyThrows
public void _main(String[] args) {
var opts = parseArgs(args);
@@ -245,7 +255,7 @@ public class Main {
PuzzleResult generatePuzzle(Opts opts) {
var tLoad0 = System.nanoTime();
var dict = puzzle.dict800.DictData.DICT800;//loadDict(opts.wordsPath);
Dict dict = puzzle.dict800.DictData800.DICT800;//loadDict(opts.wordsPath);
var tLoad1 = System.nanoTime();
section("Load");
@@ -365,7 +375,7 @@ public class Main {
var filled = fillMask(rng, slotInfo, grid);
if (!multiThreaded) {
System.out.print("\r" + Strings.padRight("", 120) + "\r");
System.out.print("\r" + " ".repeat(120 - "".length()) + "\r");
System.out.flush();
}
// print a final progress line
@@ -395,7 +405,7 @@ public class Main {
//System.out.println(Arrays.stream(new Clued(mask).gridToString().split("\n")).map(s -> "\"" + s + "\\n\" +").collect(Collectors.joining("\n")));
}
if (filled.ok()) {
return new PuzzleResult(new Clued(mask), new Gridded(grid, mask), slotInfo, filled);
return new PuzzleResult(new Signa(mask), new Puzzle(grid, mask), slotInfo, filled);
}
return null;

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;

View File

@@ -1,6 +1,7 @@
package puzzle;
import com.google.gson.Gson;
import lombok.experimental.UtilityClass;
import puzzle.SwedishGenerator.Lemma;
import java.io.IOException;
import java.nio.ByteBuffer;
@@ -11,8 +12,7 @@ import java.nio.charset.StandardCharsets;
import java.nio.file.Path;
import java.nio.file.StandardOpenOption;
import java.util.Arrays;
import java.util.Locale;
@UtilityClass
public class Meta {
static final Gson GSON = new Gson();
@@ -27,14 +27,14 @@ public class Meta {
static final Path shardData = dir.resolve("shard0.data");
static final Path shardMap = dir.resolve("shard0.map");
private static Path detectShardDir() {
private Path detectShardDir() {
// 1) optioneel override
String p = System.getProperty("puzzle.shards.dir");
if (p != null && !p.isBlank()) return Path.of(p).toAbsolutePath().normalize();
// 2) default: naast classes output (CLASS_OUTPUT/shards)
try {
var url = Meta.class.getProtectionDomain().getCodeSource().getLocation(); // classes dir (niet jar)
var url = Meta.class.getProtectionDomain().getCodeSource().getLocation(); // classes dir (niet jar)
Path classes = Path.of(url.toURI());
return classes.resolve("shards");
} catch (Exception e) {
@@ -43,7 +43,7 @@ public class Meta {
}
}
// --- Lookup: w -> i using mmap ---
static int findIndexInMapMmap(long target) throws IOException {
private int findIndexInMapMmap(long target) throws IOException {
try (var ch = FileChannel.open(Meta.shardMap, StandardOpenOption.READ)) {
var mbb = (MappedByteBuffer) ch.map(FileChannel.MapMode.READ_ONLY, 0, ch.size()).order(ORDER);
@@ -67,7 +67,7 @@ public class Meta {
}
// --- Read record i from shard.data (your format) ---
static ShardLem readRecord(long w, int i) throws IOException {
private ShardLem readRecord(long w, int i) throws IOException {
try (var ch = FileChannel.open(Meta.shardData, StandardOpenOption.READ)) {
var hdr = ByteBuffer.allocate(12).order(ORDER);
ch.read(hdr);
@@ -97,11 +97,11 @@ public class Meta {
var simpel = Integer.parseInt(parts[1]);
var clues = GSON.fromJson(parts[2], String[].class);
return new ShardLem(w, simpel, clues);
return new ShardLem(w, simpel, i, clues);
}
}
static int readIntAt(FileChannel ch, long pos) throws IOException {
private int readIntAt(FileChannel ch, long pos) throws IOException {
var b = ByteBuffer.allocate(4).order(ORDER);
ch.position(pos);
ch.read(b);
@@ -109,23 +109,18 @@ public class Meta {
return b.getInt();
}
// --- Demo main ---
public static ShardLem lookup(long w) {
public record ShardLem(long w, int simpel, int mmap, String[] clues) { }
public ShardLem lookupSilent(long w) {
try {
var i = findIndexInMapMmap(Lemma.pack43(w));
System.out.println("\nQuery: w=" + w + " -> i=" + i);
var i = findIndexInMapMmap(Lemma.packLetterAndLengthBits(w));
if (i >= 0) {
var rec = readRecord(w, i);
System.out.println(" simpel=" + rec.simpel());
System.out.println(" clues=" + Arrays.toString(rec.clues()));
return rec;
return readRecord(w, i);
} else {
System.out.println(" NOT FOUND");
throw new RuntimeException("NOT FOUND");
throw new RuntimeException("NOT FOUND{w=" + w + ", text=" + Lemma.asWord(w, new byte[8]) + "}");
}
} catch (Exception e) {
throw new RuntimeException(e);
}
}
public record ShardLem(long w, int simpel, String[] clues) { }
}

View File

@@ -1,13 +1,14 @@
package puzzle;
import gen.GenDict;
import gen.GenerateConst;
import gen.GenerateNeighbors;
import anno.ConstGen;
import anno.GenerateNeighbor;
import anno.GenerateNeighbors;
import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;
import lombok.val;
import precomp.Neighbors9x8;
import static java.lang.Long.*;
import static java.lang.Long.bitCount;
import static java.lang.Long.numberOfLeadingZeros;
import static java.lang.Long.numberOfTrailingZeros;
import static java.nio.charset.StandardCharsets.US_ASCII;
@@ -27,24 +28,21 @@ import static java.nio.charset.StandardCharsets.US_ASCII;
* javac SwedishGenerator.java
* java SwedishGenerator [--seed N] [--pop N] [--gens N] [--tries N] [--words word-list.txt]
*/
@SuppressWarnings("ALL")
@GenerateNeighbors(C = 9, R = 8, packageName = "precomp", className = "Neighbors9x8", MIN_LEN = 2)
@GenerateConst(C = 9, R = 8, packageName = "precomp", className = "Const9x8")
@GenDict(
packageName = "puzzle.dict950",
className = "DictData950",
scv = "/home/mike/dev/puzzle-generator/nl_score_hints_v4.csv",
simpleMax = 950,
minLen = 2,
maxLen = 8
)
@ConstGen(C = 9, R = 8, packageName = "precomp", className = "Const9x8")
@GenerateNeighbors({
@GenerateNeighbor(C = 9, R = 8, packageName = "precomp", className = "Neighbors9x8", MIN_LEN = 2),
@GenerateNeighbor(C = 4, R = 3, packageName = "precomp", className = "Neighbors4x3", MIN_LEN = 2)
})
/*@GenerateShapedCopies(
shapes = { "precomp.Neighbors9x8", "precomp.Neighbors4x3" }
)*/
public record SwedishGenerator() {
public static final long X = 0L;
public static final int SIZE = Neighbors9x8.SIZE;
public static final int MAX_TRIES_PER_SLOT = 500;// MAX_TRIES_PER_SLOT;
public static final long RANGE_0_SIZE = Neighbors9x8.RANGE_0_SIZE;
public static final long RANGE_0_624 = Neighbors9x8.RANGE_0_624;
public static final long X = 0L;
public static final int SIZE = Neighbors9x8.SIZE;
public static final int MAX_TRIES_PER_SLOT = 500;// MAX_TRIES_PER_SLOT;
public static final long RANGE_0_SIZE = Neighbors9x8.RANGE_0_SIZE;
public static final long RANGE_0_624 = Neighbors9x8.RANGE_0_624;
public static boolean isLo(int n) { return (n & 64) == 0; }
interface Bit1029 {
@@ -57,12 +55,12 @@ public record SwedishGenerator() {
}
//@formatter:off
public static record Dict(DictEntry[] index, int length) { }
public static record DictEntry(long[] words, long[][] posBitsets, int length, int numlong) { }
public record Dict(DictEntry[] index, int length) { }
public record DictEntry(long[] words, long[][] posBitsets, int length, int numlong) { }
@AllArgsConstructor @NoArgsConstructor static final class Assign { long w; }
public static final class FillStats { public double simplicity; }
@AllArgsConstructor public static final class Grid { public final byte[] g; public long lo, hi; }
public static record FillResult(boolean ok, long nodes, long backtracks, int lastMRV, long elapsed, FillStats stats) { }
public record FillResult(boolean ok, long nodes, long backtracks, int lastMRV, long elapsed, FillStats stats) { }
//@formatter:on
public static final class Rng {
@@ -91,10 +89,10 @@ public record SwedishGenerator() {
public int biasedIndexPow3(int N) { return (int) (((Math.min(nextU32(), Math.min(nextU32(), nextU32())) & 0xFFFFFFFFL) * (long) N) >>> 32); }
}
public static interface Lemma {
public interface Lemma {
static final long LETTER_MASK = (1L << 40) - 1; // low 40 bits
static final long INDEX_MASK = (1L << 43) - 1; // 24 bits
long LETTER_MASK = (1L << 40) - 1; // low 40 bits
long LETTER_AND_LENGTH_MASK = (1L << 43) - 1;
static long from(byte[] word) { return packShiftIn(word) | ((long) (word.length - 1) << 40); }
static long pack(long w, int shardIndex) { return w | (((long) shardIndex) << 43) | ((long) length0(w)) << 40; }
@@ -103,23 +101,21 @@ public record SwedishGenerator() {
for (int i = b.length - 1; i >= 0; i--) w = (w << 5) | ((long) b[i] & 31);
return w;
}
static public long from(String word) { return packShiftIn(word.getBytes(US_ASCII)) | ((long) (word.length() - 1) << 40); }
static long from(String word) { return packShiftIn(word.getBytes(US_ASCII)) | ((long) (word.length() - 1) << 40); }
static byte byteAt(long word, int idx) { return (byte) ((word >>> (idx * 5)) & 0b11111L); }
static int length0(long word) { return ((63 - numberOfLeadingZeros(word & LETTER_MASK)) / 5); }
public static String asWord(long word, byte[] bytes) {
static String asWord(long word, byte[] bytes) {
int bi = 0;
for (long w = word & LETTER_MASK; w != 0; w >>>= 5) bytes[bi++] = (byte) ((w & 31) | 64);
return new String(bytes, 0, bi, US_ASCII);
}
static int unpackIndex(long w) { return (int) (w >>> 40); }
static int unpackSize(long w) { return (int) (w >>> 40) & 7; }
static int unpackLetters(long w) { return (int) (w & LETTER_MASK); }
static long pack43(long w) {
return w & INDEX_MASK;
}
static int unpackIndex(long w) { return (int) (w >>> 40); }
static int unpackSize(long w) { return (int) (w >>> 40) & 7; }
static int unpackLetters(long w) { return (int) (w & LETTER_MASK); }
static long packLetterAndLengthBits(long w) { return w & LETTER_AND_LENGTH_MASK; }
}
public static record Slotinfo(int key, long lo, long hi, int score, Assign assign, DictEntry entry, int minL) {
public record Slotinfo(int key, long lo, long hi, int score, Assign assign, DictEntry entry, int minL) {
public static int wordCount(int k, Slotinfo[] arr) {
for (var n = 1; n < arr.length; n++) if (arr[n].assign.w != X) k++;
@@ -289,12 +285,11 @@ public record SwedishGenerator() {
val words = s.entry.words;
long low, top;
if (info != null && info.length > 0) {
var idxs = info;
var L = idxs.length;
var L = info.length;
var tries = Math.min(MAX_TRIES_PER_SLOT, L);
for (var t = 0; t < tries; t++) {
var w = words[idxs[rng.biasedIndexPow3(L - 1)]];
var w = words[info[rng.biasedIndexPow3(L - 1)]];
var lemIdx = Lemma.unpackIndex(w);
if (Bit1029.get(used, lemIdx)) continue;
low = glo;