Revision 8499ba3d
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 |
|
|
34 | 33 |
private static final int[][][] CORNER = |
35 | 34 |
{ |
36 | 35 |
{ {0,9},{2,4},{10,11},{6,8},{1,5},{3,7} }, |
... | ... | |
52 | 51 |
|
53 | 52 |
public TablebasesSkewbDiamond(Resources res) |
54 | 53 |
{ |
55 |
super(res, R.raw.pyra_3_tablebase);
|
|
54 |
super(res, R.raw.diam_2_tablebase);
|
|
56 | 55 |
} |
57 | 56 |
|
58 | 57 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
89 | 88 |
{ 0.0f, SQ2/2, 0.0f}, |
90 | 89 |
{ 0.0f,-SQ2/2, 0.0f}, |
91 | 90 |
|
91 |
{ 0.0f, SQ2/4, 0.5f}, |
|
92 | 92 |
{ 0.5f, SQ2/4, 0.0f}, |
93 | 93 |
{ 0.0f, SQ2/4,-0.5f}, |
94 | 94 |
{-0.5f, SQ2/4, 0.0f}, |
95 |
{ 0.0f, SQ2/4, 0.5f},
|
|
95 |
{ 0.0f,-SQ2/4, 0.5f},
|
|
96 | 96 |
{ 0.5f,-SQ2/4, 0.0f}, |
97 | 97 |
{ 0.0f,-SQ2/4,-0.5f}, |
98 |
{-0.5f,-SQ2/4, 0.0f}, |
|
99 |
{ 0.0f,-SQ2/4, 0.5f} |
|
98 |
{-0.5f,-SQ2/4, 0.0f} |
|
100 | 99 |
}; |
101 | 100 |
} |
102 | 101 |
|
... | ... | |
180 | 179 |
{ |
181 | 180 |
int[] p = perm[j]; |
182 | 181 |
|
183 |
if( p[0]==q ) { output[i]=j; break; } |
|
184 |
if( p[1]==q ) { output[i]=j; if( i<5 ) totalTwist++; break; }
|
|
182 |
if( p[0]==q ) { output[i]=j; break; }
|
|
183 |
if( p[1]==q ) { output[i]=j; if( i<5 ) totalTwist+=(1<<i); break; }
|
|
185 | 184 |
} |
186 |
|
|
187 |
if( i<5 ) totalTwist*=2; |
|
188 | 185 |
} |
189 | 186 |
|
190 | 187 |
return totalTwist; |
... | ... | |
196 | 193 |
{ |
197 | 194 |
int centers_perm_num = (index%12); |
198 | 195 |
index /= 12; |
199 |
int totalTwist = (index%128); |
|
200 |
int corners_perm_num = (index/128); |
|
196 |
int totalTwist = (index%32); |
|
197 |
int corners_perm_num = (index/32); |
|
198 |
|
|
199 |
int origT = totalTwist; |
|
201 | 200 |
|
202 | 201 |
int[] centers_perm = new int[4]; |
203 | 202 |
TablebaseHelpers.getEvenPermutationFromNum(centers_perm,centers_perm_num); |
... | ... | |
213 | 212 |
quats[i] = computeCornerQuat(i,corners_perm[i],twist); |
214 | 213 |
} |
215 | 214 |
|
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 |
|
|
216 | 218 |
quats[ 6] = computeCenterQuat(0,centers_perm[0]); |
217 | 219 |
quats[ 8] = computeCenterQuat(1,centers_perm[1]); |
218 | 220 |
quats[11] = computeCenterQuat(2,centers_perm[2]); |
... | ... | |
232 | 234 |
int totalTwist = computeCornerPerm(corners_perm,quats); |
233 | 235 |
int corners_perm_num = TablebaseHelpers.computeEvenPermutationNum(corners_perm); |
234 | 236 |
|
235 |
int ret = centers_perm_num + 12*(totalTwist + 32*corners_perm_num); |
|
236 |
|
|
237 |
if( ret<0 || ret>=138240 ) |
|
237 |
//int ret = centers_perm_num + 12*(totalTwist + 32*corners_perm_num);
|
|
238 |
/* |
|
239 |
if( ret<0 || ret>=138240 || ret==64898 || ret==13440 )
|
|
238 | 240 |
{ |
239 | 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]); |
|
240 | 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 |
|
|
241 | 258 |
|
242 | 259 |
return centers_perm_num + 12*(totalTwist + 32*corners_perm_num); |
243 | 260 |
} |
Also available in: Unified diff
Progress with the Diamond Skewb solver.