Revision 11e67fa5
Added by Leszek Koltunski over 2 years ago
| src/main/java/org/distorted/solvers/SolverSkewbDiamond.java | ||
|---|---|---|
| 41 | 41 |
|
| 42 | 42 |
private static final int ERROR_TWO_CORNERS = -15; |
| 43 | 43 |
private static final int ERROR_TWO_CENTERS = -16; |
| 44 |
private static final int ERROR_CORNER_TWIST = -17; |
|
| 45 |
private static final int ERROR_CORNERS_CANNOT = -18; |
|
| 44 |
private static final int ERROR_CORNER_TWIST_90 = -17; |
|
| 45 |
private static final int ERROR_CORNER_TWIST_180 = -18; |
|
| 46 |
private static final int ERROR_CORNERS_CANNOT = -19; |
|
| 46 | 47 |
|
| 47 | 48 |
private TablebasesAbstract mSolver; |
| 48 | 49 |
private final int[] mFaceColors; |
| ... | ... | |
| 142 | 143 |
private int getTotalTwist(int[] twist) |
| 143 | 144 |
{
|
| 144 | 145 |
int total = 0; |
| 146 |
boolean even = true; |
|
| 145 | 147 |
|
| 146 | 148 |
for(int i=0; i<6; i++) |
| 147 | 149 |
{
|
| 148 | 150 |
int t= twist[i]; |
| 149 |
if( t==1 || t==3 ) return -1; |
|
| 150 |
if( i<5 && t==2 ) total+=(1<<i); |
|
| 151 |
|
|
| 152 |
if( t==1 || t==3 ) return ERROR_CORNER_TWIST_90; |
|
| 153 |
if( t==2 ) |
|
| 154 |
{
|
|
| 155 |
if( i<5 ) |
|
| 156 |
{
|
|
| 157 |
total+=(1<<i); |
|
| 158 |
even = !even; |
|
| 159 |
} |
|
| 160 |
else if( even ) return ERROR_CORNER_TWIST_180; |
|
| 161 |
} |
|
| 151 | 162 |
} |
| 152 | 163 |
|
| 153 | 164 |
return total; |
| ... | ... | |
| 372 | 383 |
+corners_twist[3]+" "+corners_twist[4]+" "+corners_twist[5]); |
| 373 | 384 |
*/ |
| 374 | 385 |
int totalTwist = getTotalTwist(corners_twist); |
| 375 |
if( totalTwist<0 ) return ERROR_CORNER_TWIST;
|
|
| 386 |
if( totalTwist<0 ) return totalTwist;
|
|
| 376 | 387 |
|
| 377 | 388 |
int corners_perm_num = TablebaseHelpers.computeEvenPermutationNum(corners_perm); |
| 378 | 389 |
int centers_perm_num = TablebaseHelpers.computeEvenPermutationNum(free_centers_perm); |
| ... | ... | |
| 478 | 489 |
|
| 479 | 490 |
case ERROR_TWO_CORNERS : return res.getString(R.string.solver_generic_two_corners); |
| 480 | 491 |
case ERROR_TWO_CENTERS : return res.getString(R.string.solver_generic_two_centers); |
| 481 |
case ERROR_CORNER_TWIST : return res.getString(R.string.solver_generic_corner_twist); |
|
| 492 |
case ERROR_CORNER_TWIST_90 : return res.getString(R.string.solver_generic_corner_twist) + " (90)"; |
|
| 493 |
case ERROR_CORNER_TWIST_180 : return res.getString(R.string.solver_generic_corner_twist) + " (180)"; |
|
| 482 | 494 |
case ERROR_CORNERS_CANNOT : return res.getString(R.string.solver_generic_corners_cannot); |
| 483 | 495 |
} |
| 484 | 496 |
|
Also available in: Unified diff
Fix SkewbDiamond solver - previously some impossible positions slipped through.