Revision 8ed251d6
Added by Leszek Koltunski about 1 year ago
src/main/java/org/distorted/objectlib/tablebases/TBPyraminxDiamond.java | ||
---|---|---|
21 | 21 |
{ |
22 | 22 |
private static final int[][] CORNER_QUATS = |
23 | 23 |
{ |
24 |
{0,0,0,0},
|
|
25 |
{0,0,0,0},
|
|
26 |
{0,0,0,0},
|
|
27 |
{0,0,0,0},
|
|
28 |
{0,0,0,0},
|
|
29 |
{0,0,0,0},
|
|
24 |
{0,6,5,4},
|
|
25 |
{0,4,5,6},
|
|
26 |
{0,3,2,1},
|
|
27 |
{0,9,8,7},
|
|
28 |
{0,7,8,9},
|
|
29 |
{0,1,2,3},
|
|
30 | 30 |
}; |
31 | 31 |
|
32 |
private static final int[][] CENTER_QUATS = |
|
32 |
private static final int[][][] CENTER_QUATS =
|
|
33 | 33 |
{ |
34 |
{0,0,0,0,0,0,0,0},
|
|
35 |
{0,0,0,0,0,0,0,0},
|
|
36 |
{0,0,0,0,0,0,0,0},
|
|
37 |
{0,0,0,0,0,0,0,0},
|
|
38 |
{0,0,0,0,0,0,0,0},
|
|
39 |
{0,0,0,0,0,0,0,0},
|
|
40 |
{0,0,0,0,0,0,0,0},
|
|
41 |
{0,0,0,0,0,0,0,0},
|
|
34 |
{ {21,15, 0}, {10,13, 5}, {17, 9, 3}, {16,18,11}, {19, 1, 6}, { 2,12,23}, { 7,14, 4}, { 8,20,22} },
|
|
35 |
{ { 5,23,20}, { 0,22,12}, {19,16,14}, { 7,17, 1}, { 4,11, 9}, {10, 8,15}, { 6, 3,18}, {21, 2,13} },
|
|
36 |
{ { 1,17, 7}, {14,16,19}, { 0,12,22}, { 5,20,23}, {13, 2,21}, { 6,18, 3}, {15, 8,10}, { 4, 9,11} },
|
|
37 |
{ {18,11,16}, { 9, 3,17}, { 5,10,13}, { 0,21,15}, {20,22, 8}, { 4, 7,14}, {12,23, 2}, { 6,19, 1} },
|
|
38 |
{ { 4,19, 3}, { 6, 7,11}, {15, 2,20}, {13, 8,12}, { 0,10,23}, { 1,16, 9}, { 5,21,22}, {14,17,18} },
|
|
39 |
{ {10, 2,22}, {21, 8,23}, { 4, 1,18}, { 6,14, 9}, { 7,16, 3}, { 0,13,20}, {19,17,11}, { 5,15,12} },
|
|
40 |
{ { 6,14, 9}, { 4, 1,18}, {21, 8,23}, {10, 2,22}, { 5,15,12}, {19,17,11}, { 0,13,20}, { 7,16, 3} },
|
|
41 |
{ {12, 8,13}, {20, 2,15}, { 6,11, 7}, { 4, 3,19}, {18,17,14}, { 5,22,21}, { 9,16, 1}, { 0,23,10} },
|
|
42 | 42 |
}; |
43 | 43 |
|
44 | 44 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
142 | 142 |
|
143 | 143 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
144 | 144 |
|
145 |
private int findIndex(int[] table, int entry) |
|
145 |
private int findIndex1(int[] table, int entry)
|
|
146 | 146 |
{ |
147 | 147 |
int len = table.length; |
148 | 148 |
|
... | ... | |
152 | 152 |
return -1; |
153 | 153 |
} |
154 | 154 |
|
155 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
156 |
|
|
157 |
private int findIndex2(int[][] table, int entry) |
|
158 |
{ |
|
159 |
int len = table.length; |
|
160 |
|
|
161 |
for(int i=0; i<len; i++) |
|
162 |
{ |
|
163 |
int[] t = table[i]; |
|
164 |
if( t[0]==entry || t[1]==entry || t[2]==entry ) return i; |
|
165 |
} |
|
166 |
|
|
167 |
return -1; |
|
168 |
} |
|
169 |
|
|
155 | 170 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
156 | 171 |
|
157 | 172 |
public int[] getQuats(int index) |
... | ... | |
172 | 187 |
twist[5] = 2*(1-total_twist) + (total%2); |
173 | 188 |
|
174 | 189 |
for(int i=0; i<6; i++) quats[i ] = CORNER_QUATS[i][twist[i]]; |
175 |
for(int i=0; i<8; i++) quats[i+6] = CENTER_QUATS[i][perm[i]]; |
|
190 |
for(int i=0; i<8; i++) quats[i+6] = CENTER_QUATS[i][perm[i]][0];
|
|
176 | 191 |
|
177 | 192 |
return quats; |
178 | 193 |
} |
... | ... | |
184 | 199 |
int[] twist = new int[6]; |
185 | 200 |
int[] perm = new int[8]; |
186 | 201 |
|
187 |
for(int i=0; i<6; i++) twist[i] = findIndex(CORNER_QUATS[i],quats[i]); |
|
188 |
for(int i=0; i<8; i++) perm[i] = findIndex(CENTER_QUATS[i],quats[i]); |
|
202 |
for(int i=0; i<6; i++) twist[i] = findIndex1(CORNER_QUATS[i],quats[i]);
|
|
203 |
for(int i=0; i<8; i++) perm[i] = findIndex2(CENTER_QUATS[i],quats[i]);
|
|
189 | 204 |
|
190 | 205 |
int centers_perm_num = TablebaseHelpers.computePermutationNum(perm); |
191 | 206 |
int total_twist = twist[0]+ 4*(twist[1]+ 4*(twist[2]+ 4*(twist[3]+ 4*(twist[4]+ 4*(twist[5]>1 ? 0:1))))); |
Also available in: Unified diff
Progress with the Pyraminx Diamond solver.