introduce bitloops

This commit is contained in:
mike
2026-01-20 07:08:31 +01:00
parent 47ead135d3
commit a764f45041
83 changed files with 205106 additions and 175 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,19 @@
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[puzzle.SwedishGenerator.MAX_WORD_LENGTH_PLUS_ONE];
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, 16439);
}
}

View File

@@ -0,0 +1,41 @@
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

@@ -0,0 +1,113 @@
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

@@ -0,0 +1,81 @@
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

@@ -0,0 +1,41 @@
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

@@ -0,0 +1,633 @@
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

@@ -0,0 +1,499 @@
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

@@ -0,0 +1,41 @@
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

@@ -0,0 +1,941 @@
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

@@ -0,0 +1,41 @@
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

@@ -0,0 +1,41 @@
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

@@ -0,0 +1,46 @@
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 = 6278;
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

@@ -0,0 +1,45 @@
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 = 3886;
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

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,19 @@
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[puzzle.SwedishGenerator.MAX_WORD_LENGTH_PLUS_ONE];
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, 38674);
}
}

View File

@@ -0,0 +1,41 @@
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

@@ -0,0 +1,113 @@
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

@@ -0,0 +1,129 @@
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

@@ -0,0 +1,41 @@
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

@@ -0,0 +1,912 @@
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

@@ -0,0 +1,41 @@
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

@@ -0,0 +1,45 @@
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 = 4402;
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

@@ -0,0 +1,787 @@
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,
0x19000200200L,
0x2000000800000L,
0x440000L,
0x0L,
0x810000000L,
0x0L,
0x0L,
0x1000000000L,
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,
0x20000L,
0x40000L,
0x10L,
0x4080000000000000L,
0xa0000000000000L,
0x6001000040800000L,
0x8080L,
0x80000040L,
0x100000400L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
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,
0x80000L,
0x0L,
0x100000000000L,
0x40000000000L,
0x0L,
0x0L,
0x0L,
0x400000L,
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,
0x200604400401245L,
0x4002040000c01008L,
0x84455a2400400300L,
0x4112882950201406L,
0x941241042d00e01L,
0x720700200180022cL,
0x8c19d2a000288L,
0x442d48284c040226L,
0x384bf1400092c224L,
0x2000000158008L,
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,
0xfdc40d8048040000L,
0xa0a828380028b4L,
0x1108a009c9034c51L,
0x808473d22309cb48L,
0x3206ca0fbd0a319cL,
0x8d18c2c4225e65d1L,
0x91d62a62845ecc52L,
0x98d0145030f35451L,
0x214060f552d0803L,
0x212a22a1044L,
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,
0x800000000000000L,
0x0L,
0x0L,
0x0L,
0x10000000000L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
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,
0x4000000L,
0x0L,
0x0L,
0x0L,
0x0L,
0x800L,
0x80L,
0x0L,
0x0L,
0x0L,
0x0L,
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,
0x1800000000000000L,
0x40000L,
0x2L,
0x400100000000004L,
0x2000000080000L,
0x1000L,
0x408000004000L,
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,
0x200000010000L,
0x0L,
0x2000000000000000L,
0x0L,
0x1a16848800000L,
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,
0x100000000L,
0x0L,
0x0L,
0x0L,
0x0L
};
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,46 @@
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 = 7065;
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

@@ -0,0 +1,941 @@
package puzzle.dict900;
public final class DictDataL6P2 {
private DictDataL6P2() {}
public static long[] get() {
return new long[] {
0x201000800001L,
0x4420001008100031L,
0x1801000040020010L,
0x1060000000848000L,
0x808801800040008L,
0x1704000002400088L,
0x2080090005404L,
0x88200000010200L,
0x20800840000008L,
0x421a0440880c0000L,
0x5805010958400140L,
0x248000000002009L,
0x400800000000500L,
0x808081200400400L,
0x300080049000804L,
0x20110a00000002L,
0x204402002000a000L,
0x8000010400000000L,
0x90420c000080104L,
0x2c00000004001410L,
0x1101200000a40040L,
0x1000000L,
0x805000000001L,
0x82401040001400L,
0x4240a0000L,
0x4000002L,
0x1200024070000000L,
0x850000200022L,
0x200122000000c010L,
0x20c002080200100L,
0x10001202000000L,
0x400260000088410L,
0x1002021300L,
0x50010001100000L,
0x1002000000028000L,
0x400000000000001L,
0x110000000L,
0x1202000000400400L,
0x4000000008800000L,
0x20000000L,
0x20000L,
0x1000L,
0x1000000004000000L,
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,
0x200008000L,
0x1000000005001000L,
0x2183104008004010L,
0x201000000800280L,
0x12000000000020L,
0x8011L,
0x9000001410000020L,
0x108000880002000L,
0x4003000000L,
0x80820031a9000010L,
0x50000c8800000804L,
0x2000400450L,
0x4941000740800000L,
0x520000000000100L,
0x68000000040L,
0x200040080300L,
0x2200c04002a2413L,
0x4000000004a04L,
0x8424010080080208L,
0x200b00800042800L,
0x8008000000000L,
0x8008005200404bL,
0xc820a00001800410L,
0x400000412183800L,
0x6426800001080L,
0x404000200000001L,
0x4401404058024001L,
0x180400048000422L,
0x4090090808080000L,
0x1a70200100122100L,
0x8002024010000800L,
0x1402400080900000L,
0x8000000200410002L,
0x303092040080a7L,
0x1021008200000320L,
0x48080294a0802800L,
0xc08040004018006dL,
0x240a810802012002L,
0x400604000080a0L,
0x101040484110000L,
0x220000214120ca0L,
0x43820000100042L,
0xc210400080040024L,
0x48000000002L,
0x1008e01008003c1L,
0x508c44000680L,
0x2000970028008000L,
0x84488890c2002002L,
0x13c000000000c0L,
0x40610000002000a4L,
0x12200044008000L,
0x12c08c4c00090808L,
0x8001001a0008061aL,
0x20038089c008001L,
0x804040001820L,
0x90012540010080L,
0x30010808802013a0L,
0x4800002001050L,
0x10008101a004000L,
0x2183c0044802329L,
0x400986480005a02L,
0x10000000041c06L,
0x60209a04c03aa0L,
0x408601040600L,
0x1420080001a100L,
0x100204002L,
0x1001L,
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,
0x120b00080L,
0x8000020000100L,
0x8000000000000000L,
0x40100c0050000800L,
0x18000000000L,
0x1000000000820024L,
0x2200100000200240L,
0x93020400001000L,
0x9104404002L,
0x44200900000L,
0x2400000040010L,
0x844000120000L,
0x8080080300001L,
0x1001000000014L,
0x400008c02L,
0x101000e812010010L,
0x400204002100000L,
0x4800040200000400L,
0x400L,
0x140L,
0x2320015408840031L,
0x8000045c00000010L,
0x500004002008000L,
0x10c62040220204L,
0x800018200004000L,
0x6110103c00080868L,
0xa00280800080004L,
0x200260484020004L,
0x800341250000000L,
0x8040a400000000L,
0x808886041040L,
0x9000208010800L,
0x40000001001000L,
0x82002080193008L,
0x104281c81430800L,
0x10220821541800e1L,
0x2000900006082L,
0x9860064010061241L,
0x5010c010176b4c10L,
0x8200021100c00c0L,
0x8d080102ba9e000L,
0x7000041247800880L,
0x100020bc5ba06881L,
0x2bc030001088a08L,
0x5220000200659800L,
0xf9c0010080186108L,
0x900020c001000196L,
0x2a20030000044e0cL,
0x4b04127818da2c29L,
0x8040000044411L,
0x10000850801b0e40L,
0x500010121800001L,
0x810a80000109080L,
0x206300014028038cL,
0x88041101d340100L,
0x4cc000090004bL,
0x200700200414002L,
0x50020800044000cL,
0x401c004120831a22L,
0xc8468200000b0800L,
0x20009034000090L,
0x340084020202100L,
0x11940c0090200400L,
0x8808100c4902000L,
0x1008012204007L,
0x204842a4a082001L,
0x4a0L,
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,
0x800000L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x1000L,
0x0L,
0x0L,
0x0L,
0x2000000000000000L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x100000L,
0x0L,
0x0L,
0x0L,
0x0L,
0x400000000000L,
0x0L,
0x0L,
0x0L,
0x0L,
0x8000000L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x200000000L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
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,
0x20000000000000L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x40000L,
0x0L,
0x100L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x10L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x200000000L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x420000L,
0x0L,
0x0L,
0x0L,
0x0L,
0x8000000000000000L,
0x0L,
0x0L,
0x400L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x8000000000L,
0x40L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
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,
0x20000000L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x8000000000L,
0x400000000000000L,
0x0L,
0x40011000000000L,
0x40000000400100L,
0x502a02L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
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,
0x1L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x80000L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x2000000000L,
0x0L,
0x0L,
0x2000000L,
0x0L,
0x20000L,
0x0L,
0x0L,
0x40004000000000L,
0x80004L,
0x8000000000000000L,
0x0L,
0x0L,
0x4000000000004L,
0x0L,
0x4000000000000000L,
0x8000000000020L,
0x200000004020000L,
0x400100400800200L,
0x220000L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x0L,
0x10L,
0x0L,
0x0L,
0x0L,
0x0L
};
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,51 @@
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 = 11117;
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

@@ -0,0 +1,53 @@
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 = 12877;
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

@@ -2,16 +2,11 @@ package puzzle;
import module java.base; import module java.base;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import lombok.experimental.Delegate; import lombok.experimental.Delegate;
import lombok.val; import lombok.val;
import puzzle.Export.Gridded.Replacar.Cell; import puzzle.Export.Gridded.Replacar.Cell;
import puzzle.Export.LetterVisit.LetterAt; import puzzle.Export.LetterVisit.LetterAt;
import puzzle.Masker.Clues; import puzzle.Masker.Clues;
import puzzle.SwedishGenerator.Dict;
import puzzle.SwedishGenerator.DictEntry;
import puzzle.SwedishGenerator.FillResult; import puzzle.SwedishGenerator.FillResult;
import puzzle.SwedishGenerator.Grid; import puzzle.SwedishGenerator.Grid;
import puzzle.SwedishGenerator.Slotinfo; import puzzle.SwedishGenerator.Slotinfo;
@@ -35,12 +30,12 @@ import static puzzle.SwedishGenerator.X;
*/ */
public record Export() { public record Export() {
public static final ThreadLocal<byte[]> BYTES = ThreadLocal.withInitial(() -> new byte[SwedishGenerator.MAX_WORD_LENGTH]); public static final ThreadLocal<byte[]> BYTES = ThreadLocal.withInitial(() -> new byte[SwedishGenerator.MAX_WORD_LENGTH]);
static final byte CLUE_DOWN = 0; static final byte CLUE_DOWN = 0;
static final byte CLUE_RIGHT = 1; static final byte CLUE_RIGHT = 1;
static final byte CLUE_UP = 2; static final byte CLUE_UP = 2;
static final byte CLUE_LEFT = 3; static final byte CLUE_LEFT = 3;
static final byte CLUE_LEFT_TOP = 4; static final byte CLUE_LEFT_TOP = 4;
static final byte CLUE_RIGHT_TOP = 5; static final byte CLUE_RIGHT_TOP = 5;
static int HI(int in) { return in | 64; } static int HI(int in) { return in | 64; }
static char LETTER(int in) { return (char) (in | 64); } static char LETTER(int in) { return (char) (in | 64); }
@@ -240,8 +235,8 @@ 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) { public record WordOut(String word, int[] cell, int startRow, int startCol, char direction, int arrowRow, int arrowCol, boolean isReversed, int complex, String[] clue) {
public WordOut(long l, int startRow, int startCol, char d, int arrowRow, int arrowCol, boolean isReversed, byte[] bytes) { public WordOut(Path shard,long l, int startRow, int startCol, char d, int arrowRow, int arrowCol, boolean isReversed, byte[] bytes) {
val meta = Meta.readRecord(Meta.shardKey(l), Lemma.unpackShardIndex(l)); val meta = Meta.readRecord(shard, Lemma.unpackShardIndex(l));
this(Lemma.asWord(l, bytes), new int[]{ arrowRow, arrowCol, startRow, startCol }, startRow, startCol, d, arrowRow, arrowCol, isReversed, this(Lemma.asWord(l, bytes), new int[]{ arrowRow, arrowCol, startRow, startCol }, startRow, startCol, d, arrowRow, arrowCol, isReversed,
meta.simpel(), meta.clues()); meta.simpel(), meta.clues());
} }
@@ -249,15 +244,27 @@ public record Export() {
public record ExportedPuzzle(String[] grid, WordOut[] words, int difficulty, Rewards rewards) { } 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(Clued clues, Gridded grid, Slotinfo[] slots, FillResult filled, int thress) {
static public long calcSimpel(Slotinfo[] slots) { public Path shardKey(long word) {
return shardKey(this.thress, word);
}
public static Path shardKey(int thress, long word) {
if (thress <= 0)
return Path.of("src/main/generated-sources/puzzle").resolve(Lemma.unpackSize(word) + 1 + ".idx");
else
return Path.of("src/main/generated-sources/puzzle/dict" + thress).resolve(Lemma.unpackSize(word) + 1 + ".idx");
}
public long calcSimpel( Slotinfo[] slots) {
return calcSimpel(thress, slots);
}
static public long calcSimpel(int thress, Slotinfo[] slots) {
int k = 0; int k = 0;
long simpel = 0L; long simpel = 0L;
for (var n = 1; n < slots.length; n++) { for (var n = 1; n < slots.length; n++) {
if (slots[n].assign().w != X) { if (slots[n].assign().w != X) {
k++; k++;
simpel += Meta.readRecord(Meta.shardKey(slots[n].assign().w), Lemma.unpackShardIndex(slots[n].assign().w)).simpel(); simpel += Meta.readRecord(shardKey(thress,slots[n].assign().w), Lemma.unpackShardIndex(slots[n].assign().w)).simpel();
} }
} }
simpel = k == 0 ? 0 : simpel / k; simpel = k == 0 ? 0 : simpel / k;
@@ -304,6 +311,7 @@ public record Export() {
int MIN_R = minR, MIN_C = minC; int MIN_R = minR, MIN_C = minC;
val bytes = BYTES.get(); val bytes = BYTES.get();
var wordsOut = Arrays.stream(placed).map(p -> new WordOut( var wordsOut = Arrays.stream(placed).map(p -> new WordOut(
shardKey( p.lemma),
p.lemma, p.lemma,
p.startRow() - MIN_R, p.startRow() - MIN_R,
p.startCol() - MIN_C, p.startCol() - MIN_C,
@@ -316,92 +324,4 @@ public record Export() {
} }
} }
interface Dicts {
static Dict makeDict(long[] wordz) {
var index = new DictEntryDTO[SwedishGenerator.MAX_WORD_LENGTH_PLUS_ONE];
Arrays.setAll(index, DictEntryDTO::new);
for (var lemma : wordz) {
var L = Lemma.unpackSize(lemma) + 1;//Lemma.unpackSize(lemma) + 2;
val entry = index[L];
val idx = entry.words().size();
val pos = entry.pos();
entry.words().add(lemma);
int i = 0;
for (long w = lemma & Lemma.LETTER_MASK; w != 0; w >>>= 5, i++) {
pos[i][(int) ((w & 31) - 1)].add(idx);
}
}
for (int i = 2; i < index.length; i++) if (index[i].words().size() <= 0) throw new RuntimeException("No words for length " + i);
return new Dict(Arrays.stream(index).map(i -> {
var words = i.words().toArray();
int numWords = words.length;
int numLongs = (numWords + 63) >>> 6;
var bitsets = new long[i.pos().length * 26][numLongs];
for (int p = 0; p < i.pos().length; p++) {
for (int l = 0; l < 26; l++) {
var list = i.pos()[p][l];
var bs = bitsets[p * 26 + l];
for (int k = 0; k < list.size(); k++) {
int wordIdx = list.data()[k];
bs[wordIdx >>> 6] |= (1L << (wordIdx & 63));
}
}
}
return new DictEntry(words, bitsets, words.length, (words.length + 63) >>> 6);
}).toArray(DictEntry[]::new),
Arrays.stream(index).mapToInt(i -> i.words().size()).sum());
}
}
record DictEntryDTO(LongArrayList words, IntListDTO[][] pos) {
public DictEntryDTO(int L) {
this(new LongArrayList(1024), new IntListDTO[L][26]);
for (var i = 0; i < L; i++) for (var j = 0; j < 26; j++) pos[i][j] = new IntListDTO();
}
}
@Getter
@Accessors(fluent = true)
@NoArgsConstructor
static final class IntListDTO {
int[] data = new int[8];
int size = 0;
public IntListDTO(int size) {
data = new int[size];
}
void add(int v) {
if (size >= data.length) data = Arrays.copyOf(data, data.length * 2);
data[size++] = v;
}
int[] toArray() { return Arrays.copyOf(data, size); }
}
static final class LongArrayList {
long[] a;
int size;
LongArrayList(int initialCapacity) {
if (initialCapacity < 0) throw new IllegalArgumentException();
a = new long[initialCapacity];
}
int size() { return size; }
void add(long v) {
if (size == a.length) grow();
a[size++] = v;
}
void grow() {
int newCap = a.length == 0 ? 1 : a.length * 2;
long[] n = new long[newCap];
System.arraycopy(a, 0, n, 0, size);
a = n;
}
long[] toArray() { return Arrays.copyOf(a, this.size); }
}
} }

View File

@@ -7,6 +7,7 @@ import lombok.NoArgsConstructor;
import lombok.val; import lombok.val;
import puzzle.Masker.Clues; import puzzle.Masker.Clues;
import puzzle.SwedishGenerator.Rng; import puzzle.SwedishGenerator.Rng;
import puzzle.dict800.DictData;
import static puzzle.Export.*; import static puzzle.Export.*;
import static puzzle.SwedishGenerator.*; import static puzzle.SwedishGenerator.*;
@@ -79,7 +80,7 @@ public class Main {
} }
section("Result"); section("Result");
res.filled().stats().simplicity = PuzzleResult.calcSimpel(res.slots()); res.filled().stats().simplicity = res.calcSimpel(res.slots());
info(String.format(Locale.ROOT, "simplicity : %.2f", res.filled().stats().simplicity)); info(String.format(Locale.ROOT, "simplicity : %.2f", res.filled().stats().simplicity));
section("Mask"); section("Mask");
@@ -256,7 +257,7 @@ public class Main {
PuzzleResult generatePuzzle(Opts opts) { PuzzleResult generatePuzzle(Opts opts) {
var tLoad0 = System.nanoTime(); var tLoad0 = System.nanoTime();
var dict = DictData.DICT;//loadDict(opts.wordsPath); var dict = DictData.DICT800;//loadDict(opts.wordsPath);
var tLoad1 = System.nanoTime(); var tLoad1 = System.nanoTime();
section("Load"); section("Load");
@@ -394,7 +395,7 @@ public class Main {
TOTAL_NODES.addAndGet(filled.nodes()); TOTAL_NODES.addAndGet(filled.nodes());
TOTAL_BACKTRACKS.addAndGet(filled.backtracks()); TOTAL_BACKTRACKS.addAndGet(filled.backtracks());
if (filled.ok()) { if (filled.ok()) {
val simpel = PuzzleResult.calcSimpel(slotInfo); val simpel = PuzzleResult.calcSimpel(THRESS,slotInfo);
TOTAL_SUCCESS.incrementAndGet(); TOTAL_SUCCESS.incrementAndGet();
TOTAL_SIMPLICITY.addAndGet(simpel * 100); TOTAL_SIMPLICITY.addAndGet(simpel * 100);
} }
@@ -413,7 +414,7 @@ public class Main {
System.out.println(Arrays.stream(new Clued(mask).gridToString().split("\n")).map(s -> "\"" + s + "\\n\" +").collect(Collectors.joining("\n"))); System.out.println(Arrays.stream(new Clued(mask).gridToString().split("\n")).map(s -> "\"" + s + "\\n\" +").collect(Collectors.joining("\n")));
} }
if (filled.ok() && (opts.minSimplicity <= 0 || filled.stats().simplicity >= opts.minSimplicity)) { if (filled.ok() && (opts.minSimplicity <= 0 || filled.stats().simplicity >= opts.minSimplicity)) {
return new PuzzleResult(new Clued(mask), new Gridded(grid, mask), slotInfo, filled); return new PuzzleResult(new Clued(mask), new Gridded(grid, mask), slotInfo, filled, THRESS);
} }
if (opts.verbose && filled.ok()) { if (opts.verbose && filled.ok()) {

View File

@@ -4,6 +4,7 @@ import module java.base;
import com.google.gson.Gson; import com.google.gson.Gson;
import lombok.val; import lombok.val;
import puzzle.SwedishGenerator.Lemma; import puzzle.SwedishGenerator.Lemma;
import static puzzle.SwedishGenerator.THRESS;
public class Meta { public class Meta {
static final Gson GSON = new Gson(); static final Gson GSON = new Gson();
@@ -42,8 +43,9 @@ public class Meta {
return new ShardLem(Lemma.from("XXX"), -1, new String[0]); return new ShardLem(Lemma.from("XXX"), -1, new String[0]);
} }
} }
static final Path[] SHARDS = IntStream.range(0, 10).mapToObj(sId -> Path.of("src/main/generated-sources/puzzle").resolve(sId + ".idx")).toArray( static final Path[] SHARDS = IntStream.range(0, 10).mapToObj(sId -> Path.of("src/main/generated-sources/puzzle" + (THRESS == 0 ? "" : "/dict" + THRESS)).resolve(sId + ".idx"))
Path[]::new); .toArray(
Path[]::new);
static Path shardKey(long word) { static Path shardKey(long word) {
return SHARDS[Lemma.unpackSize(word) + 1]; return SHARDS[Lemma.unpackSize(word) + 1];
} }

View File

@@ -26,7 +26,7 @@ import static java.nio.charset.StandardCharsets.US_ASCII;
*/ */
@SuppressWarnings("ALL") @SuppressWarnings("ALL")
public record SwedishGenerator() { public record SwedishGenerator() {
public static final int THRESS = 800;
public static final long X = 0L; public static final long X = 0L;
public static final int LOG_EVERY_MS = 200; public static final int LOG_EVERY_MS = 200;
public static final int BAR_LEN = 22; public static final int BAR_LEN = 22;

View File

@@ -1,38 +0,0 @@
package puzzle;
import module java.base;
import puzzle.SwedishGenerator.Lemma;
import static java.nio.charset.StandardCharsets.US_ASCII;
public final class CsvIndexService {
static int SIMPEL_IDX = 3;
public static int lineToSimpel(String line) {
var parts = line.split(",", 5);
return Integer.parseInt(parts[SIMPEL_IDX].trim());
}
public static String[] lineToClue(String line) {
if (line.isBlank()) throw new RuntimeException("Empty line");
var parts = line.split(",", 5);
var rawClue = parts[4].trim();
if (rawClue.startsWith("\"") && rawClue.endsWith("\"")) {
rawClue = rawClue.substring(1, rawClue.length() - 1).replace("\"\"", "\"");
}
return Meta.GSON.fromJson(rawClue, String[].class);
}
public static void lineToLemma(String line, LongConsumer ok) {
if (line.isBlank()) {
throw new RuntimeException("Empty line");
}
var parts = line.split(",", 5);
var id = Integer.parseInt(parts[0].trim());
var word = parts[1].trim();
int score = Integer.parseInt(parts[2].trim());
if (score < 1) {
if (Main.VERBOSE) System.err.println("Word too complex: " + line);
return;
}
ok.accept(Lemma.from(word.getBytes(US_ASCII)));
}
}

View File

@@ -1,20 +1,27 @@
package puzzle; package puzzle;
import module java.base; import module java.base;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import lombok.val; import lombok.val;
import puzzle.Export.Dicts; import puzzle.DictJavaGeneratorMulti.DictEntryDTO.IntListDTO;
import puzzle.Export.IntListDTO; import puzzle.SwedishGenerator.Dict;
import puzzle.SwedishGenerator.DictEntry;
import puzzle.SwedishGenerator.Lemma; import puzzle.SwedishGenerator.Lemma;
import static java.nio.charset.StandardCharsets.US_ASCII;
import static puzzle.SwedishGenerator.THRESS;
public final class DictJavaGeneratorMulti { public final class DictJavaGeneratorMulti {
// Smaller = more files, but safer for javac/class limits. // Smaller = more files, but safer for javac/class limits.
private static final int WORDS_CHUNK = 8_192; private static final int WORDS_CHUNK = 8_192;
private static final int POS_CHUNK = 8_192; private static final int POS_CHUNK = 8_192;
public static void main(String[] args) throws Exception { public static void main(String[] args) throws Exception {
Path wordsFile = Path.of(args.length > 0 ? args[0] : "nl_score_hints_v3.csv"); Path wordsFile = Path.of(args.length > 0 ? args[0] : "nl_score_hints_v3.csv");
Path outDir = Path.of(args.length > 1 ? args[1] : "src/main/generated-sources/puzzle"); Path outDir = Path.of(args.length > 1 ? args[1] : "src/main/generated-sources/puzzle/dict" + THRESS);
String pkg = "puzzle"; String pkg = "puzzle.dict" + THRESS;
HashMap<Path, ShardBuilder> builders = new HashMap<Path, ShardBuilder>(16); HashMap<Path, ShardBuilder> builders = new HashMap<Path, ShardBuilder>(16);
SwedishGenerator.Dict dict = buildDict(wordsFile, builders); SwedishGenerator.Dict dict = buildDict(wordsFile, builders);
@@ -33,10 +40,16 @@ public final class DictJavaGeneratorMulti {
// Aggregator // Aggregator
writeAggregator(outDir, pkg, "DictData", dict.length()); writeAggregator(outDir, pkg, "DictData", dict.length());
System.out.println("Generated sources into: " + outDir.toAbsolutePath()); System.out.println("Generated sources into: " + outDir.toAbsolutePath());
builders.forEach(DictJavaGeneratorMulti::writeIndexedShard);
}
static final Path[] SHARDS = IntStream.range(0, 10).mapToObj(sId -> Path.of("src/main/generated-sources/puzzle/dict"+THRESS).resolve(sId + ".idx")).toArray(
Path[]::new);
static Path shardKey(long word) {
return SHARDS[Lemma.unpackSize(word) + 1];
} }
private static SwedishGenerator.Dict buildDict(Path wordsPath, HashMap<Path, ShardBuilder> builders) throws IOException { private static SwedishGenerator.Dict buildDict(Path wordsPath, HashMap<Path, ShardBuilder> builders) throws IOException {
var map = new Export.LongArrayList(100_000); var map = new LongArrayList(100_000);
try (var lines = Files.lines(wordsPath, StandardCharsets.UTF_8)) { try (var lines = Files.lines(wordsPath, StandardCharsets.UTF_8)) {
lines.forEach(line -> { lines.forEach(line -> {
CsvIndexService.lineToLemma(line, w -> { CsvIndexService.lineToLemma(line, w -> {
@@ -50,7 +63,7 @@ public final class DictJavaGeneratorMulti {
String recStr = word + "\t" + simpel + "\t" + json + "\n"; String recStr = word + "\t" + simpel + "\t" + json + "\n";
byte[] rec = recStr.getBytes(StandardCharsets.UTF_8); byte[] rec = recStr.getBytes(StandardCharsets.UTF_8);
var key = Meta.shardKey(w); var key = shardKey(w) ;
ShardBuilder sb = builders.computeIfAbsent(key, k -> new ShardBuilder()); ShardBuilder sb = builders.computeIfAbsent(key, k -> new ShardBuilder());
try { try {
map.add(Lemma.pack(w, sb.addRecord(rec))); map.add(Lemma.pack(w, sb.addRecord(rec)));
@@ -64,7 +77,43 @@ public final class DictJavaGeneratorMulti {
return Dicts.makeDict(map.toArray()); return Dicts.makeDict(map.toArray());
} }
static final int VERSION = 1; interface Dicts {
static Dict makeDict(long[] wordz) {
var index = new DictEntryDTO[SwedishGenerator.MAX_WORD_LENGTH_PLUS_ONE];
Arrays.setAll(index, DictEntryDTO::new);
for (var lemma : wordz) {
var L = Lemma.unpackSize(lemma) + 1;//Lemma.unpackSize(lemma) + 2;
val entry = index[L];
val idx = entry.words().size();
val pos = entry.pos();
entry.words().add(lemma);
int i = 0;
for (long w = lemma & Lemma.LETTER_MASK; w != 0; w >>>= 5, i++) {
pos[i][(int) ((w & 31) - 1)].add(idx);
}
}
for (int i = 2; i < index.length; i++) if (index[i].words().size() <= 0) throw new RuntimeException("No words for length " + i);
return new Dict(Arrays.stream(index).map(i -> {
var words = i.words().toArray();
int numWords = words.length;
int numLongs = (numWords + 63) >>> 6;
var bitsets = new long[i.pos().length * 26][numLongs];
for (int p = 0; p < i.pos().length; p++) {
for (int l = 0; l < 26; l++) {
var list = i.pos()[p][l];
var bs = bitsets[p * 26 + l];
for (int k = 0; k < list.size(); k++) {
int wordIdx = list.data()[k];
bs[wordIdx >>> 6] |= (1L << (wordIdx & 63));
}
}
}
return new DictEntry(words, bitsets, words.length, (words.length + 63) >>> 6);
}).toArray(DictEntry[]::new),
Arrays.stream(index).mapToInt(i -> i.words().size()).sum());
}
}
static final class ShardBuilder { static final class ShardBuilder {
@@ -79,7 +128,8 @@ public final class DictJavaGeneratorMulti {
} }
} }
static void writeIndexedShard(Path out, ShardBuilder sb) throws IOException { static final int VERSION = 1;
static void writeIndexedShard(Path out, ShardBuilder sb) {
int n = sb.offsets.size(); int n = sb.offsets.size();
int[] offs = sb.offsets.toArray(); int[] offs = sb.offsets.toArray();
byte[] data = sb.data.toByteArray(); byte[] data = sb.data.toByteArray();
@@ -101,6 +151,8 @@ public final class DictJavaGeneratorMulti {
// data // data
ch.write(ByteBuffer.wrap(data)); ch.write(ByteBuffer.wrap(data));
}catch (IOException e){
throw new RuntimeException("Failed to write shard to " + out, e);
} }
} }
@@ -110,11 +162,11 @@ public final class DictJavaGeneratorMulti {
w.write("package " + pkg + ";\n\n"); w.write("package " + pkg + ";\n\n");
w.write("public final class " + cls + " {\n"); w.write("public final class " + cls + " {\n");
w.write(" private " + cls + "() {}\n\n"); w.write(" private " + cls + "() {}\n\n");
w.write(" public static final SwedishGenerator.Dict DICT = build();\n\n"); w.write(" public static final puzzle.SwedishGenerator.Dict DICT" + THRESS + " = build();\n\n");
w.write(" private static SwedishGenerator.Dict build() {\n"); w.write(" private static puzzle.SwedishGenerator.Dict build() {\n");
w.write(" SwedishGenerator.DictEntry[] idx = new SwedishGenerator.DictEntry[SwedishGenerator.MAX_WORD_LENGTH_PLUS_ONE];\n"); w.write(" puzzle.SwedishGenerator.DictEntry[] idx = new puzzle.SwedishGenerator.DictEntry[puzzle.SwedishGenerator.MAX_WORD_LENGTH_PLUS_ONE];\n");
for (int L = 2; L <= 8; L++) w.write(" idx[" + L + "] = DictDataL" + L + ".entry();\n"); for (int L = 2; L <= 8; L++) w.write(" idx[" + L + "] = DictDataL" + L + ".entry();\n");
w.write(" return new SwedishGenerator.Dict(idx, " + totalLen + ");\n"); w.write(" return new puzzle.SwedishGenerator.Dict(idx, " + totalLen + ");\n");
w.write(" }\n"); w.write(" }\n");
w.write("}\n"); w.write("}\n");
} }
@@ -217,11 +269,11 @@ public final class DictJavaGeneratorMulti {
w.write(" }\n\n"); w.write(" }\n\n");
// entry // entry
w.write(" public static SwedishGenerator.DictEntry entry() {\n"); w.write(" public static puzzle.SwedishGenerator.DictEntry entry() {\n");
w.write(" long[] wds = words();\n"); w.write(" long[] wds = words();\n");
w.write(" long[] flat = posFlat();\n"); w.write(" long[] flat = posFlat();\n");
w.write(" long[][] pos = reshape(flat, ROWS, COLS);\n"); w.write(" long[][] pos = reshape(flat, ROWS, COLS);\n");
w.write(" return new SwedishGenerator.DictEntry(wds, pos, wds.length, (wds.length + 63) >>> 6);\n"); w.write(" return new puzzle.SwedishGenerator.DictEntry(wds, pos, wds.length, (wds.length + 63) >>> 6);\n");
w.write(" }\n\n"); w.write(" }\n\n");
// helpers // helpers
@@ -252,4 +304,87 @@ public final class DictJavaGeneratorMulti {
private static String toLongLiteral(long v) { private static String toLongLiteral(long v) {
return "0x" + Long.toUnsignedString(v, 16) + "L"; return "0x" + Long.toUnsignedString(v, 16) + "L";
} }
public static final class CsvIndexService {
static int SIMPEL_IDX = 3;
public static int lineToSimpel(String line) {
var parts = line.split(",", 5);
return Integer.parseInt(parts[SIMPEL_IDX].trim());
}
public static String[] lineToClue(String line) {
if (line.isBlank()) throw new RuntimeException("Empty line");
var parts = line.split(",", 5);
var rawClue = parts[4].trim();
if (rawClue.startsWith("\"") && rawClue.endsWith("\"")) {
rawClue = rawClue.substring(1, rawClue.length() - 1).replace("\"\"", "\"");
}
return Meta.GSON.fromJson(rawClue, String[].class);
}
public static void lineToLemma(String line, LongConsumer ok) {
if (line.isBlank()) {
throw new RuntimeException("Empty line");
}
var parts = line.split(",", 5);
var id = Integer.parseInt(parts[0].trim());
var word = parts[1].trim();
int score = Integer.parseInt(parts[2].trim());
int simpel = Integer.parseInt(parts[3].trim());
if (score < 1 || simpel>THRESS) {
if (Main.VERBOSE) System.err.println("Word too complex: " + line);
return;
}
ok.accept(Lemma.from(word.getBytes(US_ASCII)));
}
}
record DictEntryDTO(LongArrayList words, IntListDTO[][] pos) {
public DictEntryDTO(int L) {
this(new LongArrayList(1024), new IntListDTO[L][26]);
for (var i = 0; i < L; i++) for (var j = 0; j < 26; j++) pos[i][j] = new IntListDTO();
}
@Getter
@Accessors(fluent = true)
@NoArgsConstructor
static final class IntListDTO {
int[] data = new int[8];
int size = 0;
public IntListDTO(int size) {
data = new int[size];
}
void add(int v) {
if (size >= data.length) data = Arrays.copyOf(data, data.length * 2);
data[size++] = v;
}
int[] toArray() { return Arrays.copyOf(data, size); }
}
}
static final class LongArrayList {
long[] a;
int size;
LongArrayList(int initialCapacity) {
if (initialCapacity < 0) throw new IllegalArgumentException();
a = new long[initialCapacity];
}
int size() { return size; }
void add(long v) {
if (size == a.length) grow();
a[size++] = v;
}
void grow() {
int newCap = a.length == 0 ? 1 : a.length * 2;
long[] n = new long[newCap];
System.arraycopy(a, 0, n, 0, size);
a = n;
}
long[] toArray() { return Arrays.copyOf(a, this.size); }
}
} }

View File

@@ -24,6 +24,7 @@ import static puzzle.SwedishGenerator.FillStats;
import static puzzle.SwedishGenerator.R; import static puzzle.SwedishGenerator.R;
import static puzzle.Masker.Slot; import static puzzle.Masker.Slot;
import static puzzle.GridBuilder.placeWord; import static puzzle.GridBuilder.placeWord;
import static puzzle.SwedishGenerator.THRESS;
import static puzzle.SwedishGeneratorTest.OFF_0_1; import static puzzle.SwedishGeneratorTest.OFF_0_1;
import static puzzle.SwedishGeneratorTest.OFF_0_2; import static puzzle.SwedishGeneratorTest.OFF_0_2;
import static puzzle.SwedishGeneratorTest.OFF_0_3; import static puzzle.SwedishGeneratorTest.OFF_0_3;
@@ -51,7 +52,7 @@ public class ExportFormatTest {
var fillResult = new FillResult(true, 0, 0, 0, 0, new FillStats()); var fillResult = new FillResult(true, 0, 0, 0, 0, new FillStats());
var puzzleResult = new PuzzleResult(new Clued(clues), grid, new Slotinfo[]{ var puzzleResult = new PuzzleResult(new Clued(clues), grid, new Slotinfo[]{
new Slotinfo(key, lo, 0L, 0, new Assign(TEST), null, 0) new Slotinfo(key, lo, 0L, 0, new Assign(TEST), null, 0)
}, fillResult); }, fillResult, 0);
var rewards = new Rewards(10, 5, 1); var rewards = new Rewards(10, 5, 1);
var exported = puzzleResult.exportFormatFromFilled(2, rewards); var exported = puzzleResult.exportFormatFromFilled(2, rewards);
@@ -91,7 +92,7 @@ public class ExportFormatTest {
var grid = SwedishGeneratorTest.createEmpty(); var grid = SwedishGeneratorTest.createEmpty();
val clues = Clues.createEmpty(); val clues = Clues.createEmpty();
var fillResult = new FillResult(true, 0, 0, 0, 0, new FillStats()); var fillResult = new FillResult(true, 0, 0, 0, 0, new FillStats());
var puzzleResult = new PuzzleResult(new Clued(clues), new Gridded(grid, clues), new Slotinfo[0], fillResult); var puzzleResult = new PuzzleResult(new Clued(clues), new Gridded(grid, clues), new Slotinfo[0], fillResult, 0);
var exported = puzzleResult.exportFormatFromFilled(1, new Rewards(0, 0, 0)); var exported = puzzleResult.exportFormatFromFilled(1, new Rewards(0, 0, 0));
@@ -104,6 +105,10 @@ public class ExportFormatTest {
assertTrue(row.matches("#+")); assertTrue(row.matches("#+"));
} }
} }
Path shardKey(long word) {
return Path.of("src/main/generated-sources/puzzle").resolve(Lemma.unpackSize(word) + 1 + ".idx");
}
@Test @Test
void testShardToClue() { void testShardToClue() {
for (int length = 2; length <= 8; length++) { for (int length = 2; length <= 8; length++) {
@@ -114,7 +119,7 @@ public class ExportFormatTest {
val wordVal = words[i]; val wordVal = words[i];
val word = Lemma.asWord(wordVal, Export.BYTES.get()); val word = Lemma.asWord(wordVal, Export.BYTES.get());
val assigned = new Assign(wordVal); val assigned = new Assign(wordVal);
val shard = Meta.shardKey(assigned.w); val shard = shardKey(assigned.w);
val clueRec = Meta.readRecord(shard, i); val clueRec = Meta.readRecord(shard, i);
assertNotNull(clueRec); assertNotNull(clueRec);
@@ -146,7 +151,7 @@ public class ExportFormatTest {
} }
if (idx != -1) { if (idx != -1) {
val shard = Meta.shardKey(w); val shard = shardKey(w);
val clueRec = Meta.readRecord(shard, idx); val clueRec = Meta.readRecord(shard, idx);
assertNotNull(clueRec); assertNotNull(clueRec);
assertEquals(wStr, Lemma.asWord(clueRec.w(), Export.BYTES.get())); assertEquals(wStr, Lemma.asWord(clueRec.w(), Export.BYTES.get()));

View File

@@ -224,7 +224,7 @@ public class MainTest {
Assertions.assertEquals(-1L, grid.hi); Assertions.assertEquals(-1L, grid.hi);
var g = new Gridded(grid, mask.c()); var g = new Gridded(grid, mask.c());
g.gridToString(mask.c()); g.gridToString(mask.c());
var aa = new PuzzleResult(mask, g, slotInfo, filled).exportFormatFromFilled(1, new Rewards(1, 1, 1)); var aa = new PuzzleResult(mask, g, slotInfo, filled,0).exportFormatFromFilled(1, new Rewards(1, 1, 1));
System.out.println(String.join("\n", aa.grid())); System.out.println(String.join("\n", aa.grid()));
} }

View File

@@ -5,9 +5,8 @@ import lombok.val;
import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import puzzle.Export.Clued; import puzzle.Export.Clued;
import puzzle.Export.Dicts;
import puzzle.Export.Gridded; import puzzle.Export.Gridded;
import puzzle.Export.IntListDTO; import puzzle.DictJavaGeneratorMulti.DictEntryDTO.IntListDTO;
import puzzle.Export.LetterVisit.LetterAt; import puzzle.Export.LetterVisit.LetterAt;
import puzzle.Masker.Clues; import puzzle.Masker.Clues;
import puzzle.Masker.Slot; import puzzle.Masker.Slot;
@@ -245,7 +244,7 @@ public class SwedishGeneratorTest {
assertEquals(LETTER_A, Lemma.byteAt(INERENAE, 6)); assertEquals(LETTER_A, Lemma.byteAt(INERENAE, 6));
assertEquals(LETTER_E, Lemma.byteAt(INERENAE, 7)); assertEquals(LETTER_E, Lemma.byteAt(INERENAE, 7));
var dict = Dicts.makeDict(new long[]{ APPLE, EXE, IN, INER, INEREN, INERENA, INERENAE }); var dict = DictJavaGeneratorMulti.Dicts.makeDict(new long[]{ APPLE, EXE, IN, INER, INEREN, INERENA, INERENAE });
assertEquals(1, dict.index()[3].words().length); assertEquals(1, dict.index()[3].words().length);
assertEquals(1, dict.index()[5].words().length); assertEquals(1, dict.index()[5].words().length);
@@ -301,7 +300,7 @@ public class SwedishGeneratorTest {
@Test @Test
void testCandidateInfoForPattern() { void testCandidateInfoForPattern() {
var dict = Dicts.makeDict(WORDS2); var dict = DictJavaGeneratorMulti.Dicts.makeDict(WORDS2);
// Pattern "APP--" for length 5 // Pattern "APP--" for length 5
var info = candidateInfoForPattern(Context.get().bitset(), packPattern("APP"), dict.index()[5].posBitsets(), dict.index()[5].numlong()); var info = candidateInfoForPattern(Context.get().bitset(), packPattern("APP"), dict.index()[5].posBitsets(), dict.index()[5].numlong());
@@ -315,7 +314,7 @@ public class SwedishGeneratorTest {
// This should detect a slot starting at 0,1 with length 2 (0,1 and 0,2) // This should detect a slot starting at 0,1 with length 2 (0,1 and 0,2)
var clues = Masker.Clues.createEmpty(); var clues = Masker.Clues.createEmpty();
clues.setClueLo(IDX_0_0.lo, CLUE_RIGHT); clues.setClueLo(IDX_0_0.lo, CLUE_RIGHT);
var dict = Dicts.makeDict(WORDS2); var dict = DictJavaGeneratorMulti.Dicts.makeDict(WORDS2);
var slots = Masker.extractSlots(clues, dict.index()); var slots = Masker.extractSlots(clues, dict.index());
assertEquals(1, slots.length); assertEquals(1, slots.length);
var s = slots[0]; var s = slots[0];
@@ -437,7 +436,7 @@ public class SwedishGeneratorTest {
val counts = new byte[SIZE]; val counts = new byte[SIZE];
counts[1] = 2; counts[1] = 2;
counts[2] = 3; counts[2] = 3;
var dict = Dicts.makeDict(WORDS); var dict = DictJavaGeneratorMulti.Dicts.makeDict(WORDS);
var entry5 = dict.index()[5]; var entry5 = dict.index()[5];
// cross = (counts[1]-1) + (counts[2]-1) = 1 + 2 = 3 // cross = (counts[1]-1) + (counts[2]-1) = 1 + 2 = 3
// score = 3 * 10 + len(2) = 32 // score = 3 * 10 + len(2) = 32