Revision 754f7231
Added by Leszek Koltunski almost 2 years ago
src/main/java/org/distorted/solvers/SolverSkewbDiamond.java | ||
---|---|---|
86 | 86 |
return perm; |
87 | 87 |
} |
88 | 88 |
|
89 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
90 |
|
|
91 |
private int computeCornerTwist(int[] corner, int color ) |
|
92 |
{ |
|
93 |
if( corner[3]==color ) return 0; |
|
94 |
if( corner[2]==color ) return 1; |
|
95 |
if( corner[1]==color ) return 2; |
|
96 |
if( corner[0]==color ) return 3; |
|
97 |
|
|
98 |
return -1; |
|
99 |
} |
|
100 |
|
|
89 | 101 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
90 | 102 |
|
91 | 103 |
private int[] getCornersTwist(int[] corners_perm, int[][] corners) |
92 | 104 |
{ |
93 | 105 |
int[] twist = new int[6]; |
94 | 106 |
|
95 |
twist[0] = retCornerTwist(corners[corners_perm[0]], mFaceColors[1],mFaceColors[4]);
|
|
96 |
twist[1] = retCornerTwist(corners[corners_perm[1]], mFaceColors[1],mFaceColors[6]);
|
|
97 |
twist[2] = retCornerTwist(corners[corners_perm[2]], mFaceColors[3],mFaceColors[6]);
|
|
98 |
twist[3] = retCornerTwist(corners[corners_perm[3]], mFaceColors[3],mFaceColors[4]);
|
|
99 |
twist[4] = retCornerTwist(corners[corners_perm[4]], mFaceColors[1],mFaceColors[3]);
|
|
100 |
twist[5] = retCornerTwist(corners[corners_perm[5]], mFaceColors[4],mFaceColors[6]);
|
|
107 |
twist[0] = computeCornerTwist( corners[corners_perm[0]], mFaceColors[1] );
|
|
108 |
twist[1] = computeCornerTwist( corners[corners_perm[1]], mFaceColors[1] );
|
|
109 |
twist[2] = computeCornerTwist( corners[corners_perm[2]], mFaceColors[3] );
|
|
110 |
twist[3] = computeCornerTwist( corners[corners_perm[3]], mFaceColors[3] );
|
|
111 |
twist[4] = computeCornerTwist( corners[corners_perm[4]], mFaceColors[1] );
|
|
112 |
twist[5] = computeCornerTwist( corners[corners_perm[5]], mFaceColors[4] );
|
|
101 | 113 |
|
102 | 114 |
return twist; |
103 | 115 |
} |
... | ... | |
134 | 146 |
{ |
135 | 147 |
int t= twist[i]; |
136 | 148 |
if( t==1 || t==3 ) return -1; |
137 |
|
|
138 |
if( i<5 ) |
|
139 |
{ |
|
140 |
if( t==2 ) total++; |
|
141 |
total *= 2; |
|
142 |
} |
|
149 |
if( i<5 && t==2 ) total+=(1<<i); |
|
143 | 150 |
} |
144 | 151 |
|
145 | 152 |
return total; |
... | ... | |
335 | 342 |
getCorners(object,corners); |
336 | 343 |
getCenters(object,centers); |
337 | 344 |
|
338 |
//for(int j=0; j<8; j++) android.util.Log.e("D", "center "+j+" : "+centers[j]); |
|
339 |
|
|
340 | 345 |
int result1 = checkAllCentersPresent(centers); |
341 | 346 |
if( result1<0 ) return result1; |
342 | 347 |
|
... | ... | |
485 | 490 |
{ |
486 | 491 |
if( mSolver==null ) |
487 | 492 |
{ |
488 |
mSolver = ImplementedTablebasesList.createPacked(res,ObjectType.DIAM_2); |
|
493 |
//mSolver = ImplementedTablebasesList.createPacked(res,ObjectType.DIAM_2); |
|
494 |
|
|
495 |
mSolver = ImplementedTablebasesList.createUnpacked(ObjectType.DIAM_2); |
|
496 |
if( mSolver!=null ) mSolver.createTablebase(); |
|
489 | 497 |
} |
490 | 498 |
|
491 | 499 |
return mSolver!=null ? mSolver.solution(index) : null; |
492 |
|
|
493 |
/* |
|
494 |
|
|
495 |
TablebasesSkewbDiamond tb = new TablebasesSkewbDiamond(); |
|
496 |
int[] q = {0,0,3,3,3,0, 3,0,2,0,0,0,0,3}; |
|
497 |
int i= tb.getIndex(q); |
|
498 |
android.util.Log.e("D", "AAAA index="+i); |
|
499 |
int[] a = tb.getQuats(i); |
|
500 |
android.util.Log.e("D", "AAAA quats="+a[0]+" "+a[1]+" "+a[2]+" "+a[3]+" "+a[4]+" "+a[5]+" "+ |
|
501 |
a[6]+" "+a[7]+" "+a[8]+" "+a[9]+" "+a[10]+" "+a[11]+" "+a[12]+" "+a[13]); |
|
502 |
int j= tb.getIndex(a); |
|
503 |
android.util.Log.e("D", "AAAA index="+j); |
|
504 |
|
|
505 |
return null; |
|
506 |
|
|
507 |
*/ |
|
508 | 500 |
} |
509 | 501 |
} |
510 | 502 |
|
Also available in: Unified diff
Diamond Skewb solver should be fully working now.