Revision 59d4ca91
Added by Leszek Koltunski about 1 year ago
src/main/java/org/distorted/objectlib/tablebases/TablebasesSkewbDiamond.java | ||
---|---|---|
30 | 30 |
{ {4,7,11}, {3,6, 9}, {5,8,10}, {0,1, 2} } |
31 | 31 |
}; |
32 | 32 |
|
33 |
private static final int[][][] CORNER =
|
|
33 |
public static final int[][][] CORNER_QUATS =
|
|
34 | 34 |
{ |
35 |
{ {0,9},{2,4},{10,11},{6,8},{1,5},{3,7} },
|
|
36 |
{ {1,3},{0,11},{5,7},{9,10},{2,8},{4,6} },
|
|
37 |
{ {10,11},{6,8},{0,9},{2,4},{3,7},{1,5} },
|
|
38 |
{ {5,7},{9,10},{1,3},{0,11},{4,6},{2,8} },
|
|
39 |
{ {2,6},{1,7},{4,8},{3,5},{0,10},{9,11} },
|
|
40 |
{ {4,8},{3,5},{2,6},{1,7},{9,11},{0,10} }
|
|
35 |
{ {0,9},{2,4},{10,11},{8,6},{1,5},{3,7} }, // order of each pair determines the twist.
|
|
36 |
{ {1,3},{0,11},{5,7},{10,9},{2,8},{6,4} },
|
|
37 |
{ {10,11},{6,8},{0,9},{4,2},{7,3},{5,1} },
|
|
38 |
{ {7,5},{10,9},{3,1},{0,11},{6,4},{2,8} },
|
|
39 |
{ {2,6},{1,7},{8,4},{5,3},{0,10},{9,11} },
|
|
40 |
{ {4,8},{5,3},{6,2},{1,7},{9,11},{0,10} }
|
|
41 | 41 |
}; |
42 | 42 |
|
43 | 43 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
161 | 161 |
|
162 | 162 |
private int computeCornerQuat(int originalLocation, int newLocation, int twist) |
163 | 163 |
{ |
164 |
return CORNER[originalLocation][newLocation][twist]; |
|
164 |
return CORNER_QUATS[originalLocation][newLocation][twist];
|
|
165 | 165 |
} |
166 | 166 |
|
167 | 167 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
173 | 173 |
for(int i=0; i<6; i++) |
174 | 174 |
{ |
175 | 175 |
int q = quats[i]; |
176 |
int[][] perm = CORNER[i]; |
|
176 |
int[][] perm = CORNER_QUATS[i];
|
|
177 | 177 |
|
178 | 178 |
for(int j=0; j<6; j++) |
179 | 179 |
{ |
... | ... | |
196 | 196 |
int totalTwist = (index%32); |
197 | 197 |
int corners_perm_num = (index/32); |
198 | 198 |
|
199 |
int origT = totalTwist; |
|
200 |
|
|
201 | 199 |
int[] centers_perm = new int[4]; |
202 | 200 |
TablebaseHelpers.getEvenPermutationFromNum(centers_perm,centers_perm_num); |
203 | 201 |
int[] corners_perm = new int[6]; |
... | ... | |
212 | 210 |
quats[i] = computeCornerQuat(i,corners_perm[i],twist); |
213 | 211 |
} |
214 | 212 |
|
215 |
//android.util.Log.e("D", "quats: centers_num="+centers_perm_num+" twist="+origT+" corners_num="+corners_perm_num); |
|
216 |
//android.util.Log.e("D", "quats: centers_perm: "+corners_perm[0]+" "+corners_perm[1]+" "+corners_perm[2]+" "+corners_perm[3]+" "+corners_perm[4]+" "+corners_perm[5]); |
|
217 |
|
|
218 | 213 |
quats[ 6] = computeCenterQuat(0,centers_perm[0]); |
219 | 214 |
quats[ 8] = computeCenterQuat(1,centers_perm[1]); |
220 | 215 |
quats[11] = computeCenterQuat(2,centers_perm[2]); |
... | ... | |
234 | 229 |
int totalTwist = computeCornerPerm(corners_perm,quats); |
235 | 230 |
int corners_perm_num = TablebaseHelpers.computeEvenPermutationNum(corners_perm); |
236 | 231 |
|
237 |
//int ret = centers_perm_num + 12*(totalTwist + 32*corners_perm_num); |
|
238 |
/* |
|
239 |
if( ret<0 || ret>=138240 || ret==64898 || ret==13440 ) |
|
240 |
{ |
|
241 |
android.util.Log.e("D", "centers_perm: "+centers_perm_num+" twist: "+totalTwist+" corners_perm: "+corners_perm_num); |
|
242 |
android.util.Log.e("D", "centers_perm: "+center_perm[0]+" "+center_perm[1]+" "+center_perm[2]+" "+center_perm[3]); |
|
243 |
android.util.Log.e("D", "centers_quat: "+quats[6]+" "+quats[8]+" "+quats[11]+" "+quats[13]); |
|
244 |
android.util.Log.e("D", "corners_perm: "+corners_perm[0]+" "+corners_perm[1]+" "+corners_perm[2]+" "+corners_perm[3]+" "+corners_perm[4]+" "+corners_perm[5]); |
|
245 |
android.util.Log.e("D", "corners_quat: "+quats[0]+" "+quats[1]+" "+quats[2]+" "+quats[3]+" "+quats[4]+" "+quats[5]); |
|
246 |
} |
|
247 |
*/ |
|
248 |
/* |
|
249 |
if( ret==64898 ) |
|
250 |
{ |
|
251 |
android.util.Log.e("D", "getIndex: "+quats[0]+" "+quats[1]+" "+quats[2]+" "+quats[3]+" "+quats[4]+" "+quats[5] |
|
252 |
+" "+quats[6]+" "+quats[7]+" "+quats[8]+" "+quats[9]+" "+quats[10]+" "+quats[11]+" "+quats[12]+" "+quats[13]); |
|
253 |
} |
|
254 |
*/ |
|
255 |
//android.util.Log.e("D", "index: centers_num="+centers_perm_num+" twist="+totalTwist+" corners_num="+corners_perm_num); |
|
256 |
//android.util.Log.e("D", "index: corners_perm: "+corners_perm[0]+" "+corners_perm[1]+" "+corners_perm[2]+" "+corners_perm[3]+" "+corners_perm[4]+" "+corners_perm[5]); |
|
257 |
|
|
258 |
|
|
259 | 232 |
return centers_perm_num + 12*(totalTwist + 32*corners_perm_num); |
260 | 233 |
} |
261 | 234 |
} |
Also available in: Unified diff
Diamond Skewb solver should be fully working now.