Revision 478a4c45
Added by Leszek Koltunski over 2 years ago
| src/main/java/org/distorted/solvers/SolverSkewbDiamond.java | ||
|---|---|---|
| 11 | 11 |
|
| 12 | 12 |
import android.content.res.Resources; |
| 13 | 13 |
|
| 14 |
import org.distorted.main.R; |
|
| 14 | 15 |
import org.distorted.objectlib.main.ObjectType; |
| 15 | 16 |
import org.distorted.objectlib.main.TwistyObject; |
| 16 | 17 |
import org.distorted.objectlib.tablebases.ImplementedTablebasesList; |
| ... | ... | |
| 43 | 44 |
private static final int ERROR_CORNERS_CANNOT = -18; |
| 44 | 45 |
|
| 45 | 46 |
private TablebasesAbstract mSolver; |
| 47 |
private final int[] mFaceColors; |
|
| 48 |
|
|
| 49 |
private static final int[] FREE_CENTERS = {0,2,5,7};
|
|
| 46 | 50 |
|
| 47 | 51 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 48 | 52 |
|
| 49 | 53 |
public SolverSkewbDiamond(Resources res, TwistyObject object) |
| 50 | 54 |
{
|
| 51 | 55 |
super(res,object); |
| 56 |
mFaceColors = new int[8]; |
|
| 57 |
} |
|
| 58 |
|
|
| 59 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
| 60 |
|
|
| 61 |
private int retCorner(int[][] corners, int c1, int c2) |
|
| 62 |
{
|
|
| 63 |
for(int i=0; i<6; i++) |
|
| 64 |
{
|
|
| 65 |
int[] cor = corners[i]; |
|
| 66 |
int twist = retCornerTwist(cor,c1,c2); |
|
| 67 |
if( twist>=0 ) return i; |
|
| 68 |
} |
|
| 69 |
|
|
| 70 |
return -1; |
|
| 71 |
} |
|
| 72 |
|
|
| 73 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
| 74 |
|
|
| 75 |
private int[] getCornersPermutation(int[][] corners) |
|
| 76 |
{
|
|
| 77 |
int[] perm = new int[6]; |
|
| 78 |
|
|
| 79 |
perm[0] = retCorner(corners,mFaceColors[1],mFaceColors[4]); |
|
| 80 |
perm[1] = retCorner(corners,mFaceColors[1],mFaceColors[6]); |
|
| 81 |
perm[2] = retCorner(corners,mFaceColors[3],mFaceColors[6]); |
|
| 82 |
perm[3] = retCorner(corners,mFaceColors[3],mFaceColors[4]); |
|
| 83 |
perm[4] = retCorner(corners,mFaceColors[1],mFaceColors[3]); |
|
| 84 |
perm[5] = retCorner(corners,mFaceColors[4],mFaceColors[6]); |
|
| 85 |
|
|
| 86 |
return perm; |
|
| 52 | 87 |
} |
| 53 | 88 |
|
| 54 | 89 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 55 | 90 |
|
| 56 |
private int[] getCornersPermutation(int[] colors, int[][] corners)
|
|
| 91 |
private int[] getCornersTwist(int[] corners_perm, int[][] corners)
|
|
| 57 | 92 |
{
|
| 93 |
int[] twist = new int[6]; |
|
| 94 |
|
|
| 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]); |
|
| 58 | 101 |
|
| 102 |
return twist; |
|
| 59 | 103 |
} |
| 60 | 104 |
|
| 61 | 105 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 62 | 106 |
|
| 63 |
private int[] getCornersTwist(int[] colors, int[][] corners)
|
|
| 107 |
private int retCenter(int color, int[] centers)
|
|
| 64 | 108 |
{
|
| 109 |
for(int i=0; i<4; i++ ) |
|
| 110 |
if( centers[FREE_CENTERS[i]]==color ) return i; |
|
| 65 | 111 |
|
| 112 |
return -1; |
|
| 66 | 113 |
} |
| 67 | 114 |
|
| 68 | 115 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 69 | 116 |
|
| 70 |
private int[] getFreeCentersPermutation(int[] colors, int[] centers)
|
|
| 117 |
private int[] getFreeCentersPermutation(int[] centers) |
|
| 71 | 118 |
{
|
| 119 |
int[] perm = new int[4]; |
|
| 120 |
|
|
| 121 |
for(int i=0; i<4; i++ ) |
|
| 122 |
perm[i] = retCenter(mFaceColors[FREE_CENTERS[i]],centers); |
|
| 72 | 123 |
|
| 124 |
return perm; |
|
| 73 | 125 |
} |
| 74 | 126 |
|
| 75 | 127 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| ... | ... | |
| 89 | 141 |
return total; |
| 90 | 142 |
} |
| 91 | 143 |
|
| 144 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
| 145 |
|
|
| 146 |
private int retCornerTwist(int[] corner, int c1, int c2) |
|
| 147 |
{
|
|
| 148 |
if( corner[0]==c1 && corner[2]==c2 ) return 1; |
|
| 149 |
if( corner[1]==c1 && corner[3]==c2 ) return 2; |
|
| 150 |
if( corner[2]==c1 && corner[0]==c2 ) return 3; |
|
| 151 |
if( corner[3]==c1 && corner[1]==c2 ) return 0; |
|
| 152 |
|
|
| 153 |
return -1; |
|
| 154 |
} |
|
| 155 |
|
|
| 92 | 156 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 93 | 157 |
|
| 94 | 158 |
private int figureOutColor(int[][] corners, int c1, int c2) |
| ... | ... | |
| 96 | 160 |
for(int i=0; i<6; i++) |
| 97 | 161 |
{
|
| 98 | 162 |
int[] cor = corners[i]; |
| 99 |
|
|
| 100 |
if( cor[0]==c1 && cor[2]==c2 ) return cor[1]; |
|
| 101 |
if( cor[1]==c1 && cor[3]==c2 ) return cor[2]; |
|
| 102 |
if( cor[2]==c1 && cor[0]==c2 ) return cor[3]; |
|
| 103 |
if( cor[3]==c1 && cor[1]==c2 ) return cor[0]; |
|
| 163 |
int twist = retCornerTwist(cor,c1,c2); |
|
| 164 |
if( twist>=0 ) return cor[twist]; |
|
| 104 | 165 |
} |
| 105 | 166 |
|
| 106 | 167 |
return -1; |
| ... | ... | |
| 158 | 219 |
|
| 159 | 220 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 160 | 221 |
|
| 161 |
private int checkAllColorsDifferent(int[] colors)
|
|
| 222 |
private int checkAllColorsDifferent() |
|
| 162 | 223 |
{
|
| 163 | 224 |
for(int i=0; i<8; i++) |
| 164 | 225 |
{
|
| 165 | 226 |
boolean present = false; |
| 166 | 227 |
|
| 167 | 228 |
for(int j=0; j<8; j++) |
| 168 |
if( colors[j]==i )
|
|
| 229 |
if( mFaceColors[j]==i )
|
|
| 169 | 230 |
{
|
| 170 | 231 |
present=true; |
| 171 | 232 |
break; |
| ... | ... | |
| 266 | 327 |
{
|
| 267 | 328 |
int[][] corners = new int[6][4]; |
| 268 | 329 |
int[] centers = new int[8]; |
| 269 |
int[] face_colors = new int[8]; |
|
| 270 | 330 |
|
| 271 | 331 |
getCorners(object,corners); |
| 272 | 332 |
getCenters(object,centers); |
| ... | ... | |
| 274 | 334 |
int result1 = checkAllCentersPresent(centers); |
| 275 | 335 |
if( result1<0 ) return result1; |
| 276 | 336 |
|
| 277 |
int result2 = figureOutFaceColors(face_colors,centers,corners);
|
|
| 337 |
int result2 = figureOutFaceColors(mFaceColors,centers,corners);
|
|
| 278 | 338 |
if( result2<0 ) return result2; |
| 279 | 339 |
|
| 280 |
int result3 = checkAllColorsDifferent(face_colors);
|
|
| 340 |
int result3 = checkAllColorsDifferent(); |
|
| 281 | 341 |
if( result3<0 ) return result3; |
| 282 | 342 |
|
| 283 |
int[] corners_perm = getCornersPermutation(face_colors, corners);
|
|
| 343 |
int[] corners_perm = getCornersPermutation(corners); |
|
| 284 | 344 |
boolean even1 = TablebaseHelpers.permutationIsEven(corners_perm); |
| 285 | 345 |
if( !even1 ) return ERROR_TWO_CORNERS; |
| 286 | 346 |
|
| 287 |
int[] free_centers_perm = getFreeCentersPermutation(face_colors, centers);
|
|
| 347 |
int[] free_centers_perm = getFreeCentersPermutation(centers); |
|
| 288 | 348 |
boolean even2 = TablebaseHelpers.permutationIsEven(free_centers_perm); |
| 289 | 349 |
if( !even2 ) return ERROR_TWO_CENTERS; |
| 290 | 350 |
|
| 291 |
int[] corners_twist = getCornersTwist(face_colors, corners);
|
|
| 351 |
int[] corners_twist = getCornersTwist(corners_perm, corners);
|
|
| 292 | 352 |
int totalTwist = getTotalTwist(corners_twist); |
| 293 | 353 |
if( totalTwist<0 ) return ERROR_CORNER_TWIST; |
| 294 | 354 |
|
| ... | ... | |
| 298 | 358 |
return centers_perm_num + 12*(totalTwist + 128*corners_perm_num); |
| 299 | 359 |
} |
| 300 | 360 |
|
| 361 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
| 362 |
|
|
| 363 |
private int getColorIndex4(int face) |
|
| 364 |
{
|
|
| 365 |
switch(mFaceColors[face]) |
|
| 366 |
{
|
|
| 367 |
case 0: return R.string.color_violet4; |
|
| 368 |
case 1: return R.string.color_grey4; |
|
| 369 |
case 2: return R.string.color_blue4; |
|
| 370 |
case 3: return R.string.color_red4; |
|
| 371 |
case 4: return R.string.color_orange4; |
|
| 372 |
case 5: return R.string.color_green4; |
|
| 373 |
case 6: return R.string.color_white4; |
|
| 374 |
case 7: return R.string.color_yellow4; |
|
| 375 |
} |
|
| 376 |
|
|
| 377 |
return -1; |
|
| 378 |
} |
|
| 379 |
|
|
| 380 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
| 381 |
|
|
| 382 |
private int getColorIndex3(int face) |
|
| 383 |
{
|
|
| 384 |
switch(mFaceColors[face]) |
|
| 385 |
{
|
|
| 386 |
case 0: return R.string.color_violet3; |
|
| 387 |
case 1: return R.string.color_grey3; |
|
| 388 |
case 2: return R.string.color_blue3; |
|
| 389 |
case 3: return R.string.color_red3; |
|
| 390 |
case 4: return R.string.color_orange3; |
|
| 391 |
case 5: return R.string.color_green3; |
|
| 392 |
case 6: return R.string.color_white3; |
|
| 393 |
case 7: return R.string.color_yellow3; |
|
| 394 |
} |
|
| 395 |
|
|
| 396 |
return -1; |
|
| 397 |
} |
|
| 398 |
|
|
| 399 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
| 400 |
|
|
| 401 |
private int getColorIndex2(int face) |
|
| 402 |
{
|
|
| 403 |
switch(mFaceColors[face]) |
|
| 404 |
{
|
|
| 405 |
case 0: return R.string.color_violet2; |
|
| 406 |
case 1: return R.string.color_grey2; |
|
| 407 |
case 2: return R.string.color_blue2; |
|
| 408 |
case 3: return R.string.color_red2; |
|
| 409 |
case 4: return R.string.color_orange2; |
|
| 410 |
case 5: return R.string.color_green2; |
|
| 411 |
case 6: return R.string.color_white2; |
|
| 412 |
case 7: return R.string.color_yellow2; |
|
| 413 |
} |
|
| 414 |
|
|
| 415 |
return -1; |
|
| 416 |
} |
|
| 417 |
|
|
| 418 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
| 419 |
|
|
| 420 |
private String centerError(Resources res, int face) |
|
| 421 |
{
|
|
| 422 |
String color = res.getString(getColorIndex2(face)); |
|
| 423 |
return res.getString(R.string.solver_generic_missing_center,color); |
|
| 424 |
} |
|
| 425 |
|
|
| 426 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
| 427 |
|
|
| 428 |
private String cornerError(Resources res, int f1, int f2) |
|
| 429 |
{
|
|
| 430 |
String c1 = res.getString(getColorIndex3(f1)); |
|
| 431 |
String c2 = res.getString(getColorIndex4(f2)); |
|
| 432 |
return res.getString(R.string.solver_generic_missing_corner2,c1,c2); |
|
| 433 |
} |
|
| 434 |
|
|
| 301 | 435 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
| 302 | 436 |
|
| 303 | 437 |
public String error(int index, Resources res) |
| 304 | 438 |
{
|
| 305 | 439 |
switch(index) |
| 306 | 440 |
{
|
| 307 |
case ERROR_CORNER_FR_MISSING: |
|
| 308 |
case ERROR_CORNER_BR_MISSING: |
|
| 309 |
case ERROR_CORNER_BL_MISSING: |
|
| 310 |
case ERROR_CORNER_FL_MISSING: |
|
| 311 |
case ERROR_CORNER_TO_MISSING: |
|
| 312 |
case ERROR_CORNER_BO_MISSING: |
|
| 313 |
|
|
| 314 |
case ERROR_CENTER_0_MISSING : |
|
| 315 |
case ERROR_CENTER_1_MISSING : |
|
| 316 |
case ERROR_CENTER_2_MISSING : |
|
| 317 |
case ERROR_CENTER_3_MISSING : |
|
| 318 |
case ERROR_CENTER_4_MISSING : |
|
| 319 |
case ERROR_CENTER_5_MISSING : |
|
| 320 |
case ERROR_CENTER_6_MISSING : |
|
| 321 |
case ERROR_CENTER_7_MISSING : |
|
| 322 |
|
|
| 323 |
case ERROR_TWO_CORNERS : |
|
| 324 |
case ERROR_TWO_CENTERS : |
|
| 325 |
case ERROR_CORNER_TWIST : |
|
| 326 |
case ERROR_CORNERS_CANNOT : |
|
| 441 |
case ERROR_CORNER_FR_MISSING: return cornerError(res,1,4);
|
|
| 442 |
case ERROR_CORNER_BR_MISSING: return cornerError(res,1,6);
|
|
| 443 |
case ERROR_CORNER_BL_MISSING: return cornerError(res,3,6);
|
|
| 444 |
case ERROR_CORNER_FL_MISSING: return cornerError(res,3,4);
|
|
| 445 |
case ERROR_CORNER_TO_MISSING: return cornerError(res,1,3);
|
|
| 446 |
case ERROR_CORNER_BO_MISSING: return cornerError(res,4,6);
|
|
| 447 |
|
|
| 448 |
case ERROR_CENTER_0_MISSING : return centerError(res,0);
|
|
| 449 |
case ERROR_CENTER_1_MISSING : return centerError(res,1);
|
|
| 450 |
case ERROR_CENTER_2_MISSING : return centerError(res,2);
|
|
| 451 |
case ERROR_CENTER_3_MISSING : return centerError(res,3);
|
|
| 452 |
case ERROR_CENTER_4_MISSING : return centerError(res,4);
|
|
| 453 |
case ERROR_CENTER_5_MISSING : return centerError(res,5);
|
|
| 454 |
case ERROR_CENTER_6_MISSING : return centerError(res,6);
|
|
| 455 |
case ERROR_CENTER_7_MISSING : return centerError(res,7);
|
|
| 456 |
|
|
| 457 |
case ERROR_TWO_CORNERS : return res.getString(R.string.solver_generic_two_corners);
|
|
| 458 |
case ERROR_TWO_CENTERS : return res.getString(R.string.solver_generic_two_centers);
|
|
| 459 |
case ERROR_CORNER_TWIST : return res.getString(R.string.solver_generic_corner_twist);
|
|
| 460 |
case ERROR_CORNERS_CANNOT : return res.getString(R.string.solver_generic_corners_cannot);
|
|
| 327 | 461 |
} |
| 328 | 462 |
|
| 329 | 463 |
return null; |
| src/main/res/values-de/strings.xml | ||
|---|---|---|
| 84 | 84 |
<string name="solver_generic_edge_twist">Eine Kante muss verdreht werden!</string> |
| 85 | 85 |
<string name="solver_generic_two_centers">Zwei Zentren müssen ausgetauscht werden!</string> |
| 86 | 86 |
<string name="solver_generic_two_edges">Zwei Randstücke müssen ausgetauscht werden!</string> |
| 87 |
<string name="solver_generic_two_corners">Zwei Ecken müssen ausgetauscht werden!</string> |
|
| 87 | 88 |
<string name="solver_generic_missing_center">Die %1$s Mitte fehlt!</string> |
| 88 | 89 |
<string name="solver_generic_missing_corner">Die %1$s-%2$s-%3$s Ecke fehlt!</string> |
| 89 | 90 |
<string name="solver_generic_missing_vertex">Der %1$s-%2$s-%3$s Oktaeder fehlt!</string> |
| 90 | 91 |
<string name="solver_generic_missing_edge">Die %1$s-%2$s Kante fehlt!</string> |
| 92 |
<string name="solver_generic_missing_corner2">Die %1$s-%2$s Ecke fehlt!</string> |
|
| 91 | 93 |
<string name="solver_generic_corners_cannot">Ecken können nicht verdreht werden, sodass alle Seiten einfarbig sind!</string> |
| 92 | 94 |
<string name="solver_generic_vertices_cannot">Oktaederstücke können nicht so verdreht werden, sodass alle Seiten einfarbig sind!</string> |
| 93 | 95 |
<string name="solver_generic_c_v_dont_match">Oktaederstücke und Tetraederecken passen nicht zusammen!</string> |
| src/main/res/values-es/strings.xml | ||
|---|---|---|
| 84 | 84 |
<string name="solver_generic_edge_twist">¡Hay que torcer una borde!</string> |
| 85 | 85 |
<string name="solver_generic_two_centers">¡Hay que cambiar dos centros!</string> |
| 86 | 86 |
<string name="solver_generic_two_edges">¡Hay que cambiar dos piezas de borde!</string> |
| 87 |
<string name="solver_generic_two_corners">¡Hay que cambiar dos esquinas!</string> |
|
| 87 | 88 |
<string name="solver_generic_missing_center">¡Falta el centro %1$s!</string> |
| 88 | 89 |
<string name="solver_generic_missing_corner">¡Falta la esquina %1$s-%2$s-%3$s!</string> |
| 89 | 90 |
<string name="solver_generic_missing_vertex">¡Falta el octaedro %1$s-%2$s-%3$s!</string> |
| 90 | 91 |
<string name="solver_generic_missing_edge">¡Falta la pieza del borde %1$s-%2$s!</string> |
| 92 |
<string name="solver_generic_missing_corner2">¡Falta la esquina %1$s-%2$s!</string> |
|
| 91 | 93 |
<string name="solver_generic_corners_cannot">¡Las esquinas no se pueden torcer para que todos los lados sean monocromáticos!</string> |
| 92 | 94 |
<string name="solver_generic_vertices_cannot">¡Las piezas octaédricas no se pueden torcer para que todos los lados sean monocromáticos!</string> |
| 93 | 95 |
<string name="solver_generic_c_v_dont_match">¡Las piezas octaédricas y las esquinas tetraédricas no coinciden!</string> |
| src/main/res/values-fr/strings.xml | ||
|---|---|---|
| 84 | 84 |
<string name="solver_generic_edge_twist">Un bord doit être tourné !</string> |
| 85 | 85 |
<string name="solver_generic_two_centers">Deux centres doivent être échangés !</string> |
| 86 | 86 |
<string name="solver_generic_two_edges">Deux pièces de bord doivent être échangées !</string> |
| 87 |
<string name="solver_generic_two_corners">Deux coins doivent être échangés !</string> |
|
| 87 | 88 |
<string name="solver_generic_missing_center">Centre %1$s manquant !</string> |
| 88 | 89 |
<string name="solver_generic_missing_corner">Coin %1$s-%2$s-%3$s manquant !</string> |
| 89 | 90 |
<string name="solver_generic_missing_vertex">L\'octaèdre %1$s-%2$s-%3$s manque !</string> |
| 90 | 91 |
<string name="solver_generic_missing_edge">La pièce de bordure %1$s-%2$s manque!</string> |
| 92 |
<string name="solver_generic_missing_corner2">Coin %1$s-%2$s manquant !</string> |
|
| 91 | 93 |
<string name="solver_generic_corners_cannot">Les coins ne peuvent pas être tordus afin que tous les côtés soient monochromes !</string> |
| 92 | 94 |
<string name="solver_generic_vertices_cannot">Les pièces octaédriques ne peuvent pas être tordues afin que tous les côtés soient monochromes !</string> |
| 93 | 95 |
<string name="solver_generic_c_v_dont_match">Les pièces octaédriques et les coins tétraédriques ne correspondent pas !</string> |
| src/main/res/values-ja/strings.xml | ||
|---|---|---|
| 85 | 85 |
<string name="solver_generic_edge_twist">片方の端をひねる必要がある!</string> |
| 86 | 86 |
<string name="solver_generic_two_centers">2つのセンターを交換しなければならない!</string> |
| 87 | 87 |
<string name="solver_generic_two_edges">2 つのエッジ ピースを交換する必要があります。</string> |
| 88 |
<string name="solver_generic_two_corners">2 つのコーナーを交換する必要があります !</string> |
|
| 88 | 89 |
<string name="solver_generic_missing_center">%1$sのセンターが欠けてる!</string> |
| 89 | 90 |
<string name="solver_generic_missing_corner">%1$s%2$s%3$sのコーナーがない!</string> |
| 90 | 91 |
<string name="solver_generic_missing_vertex">%1$s-%2$s-%3$s八面体がありません!</string> |
| 91 | 92 |
<string name="solver_generic_missing_edge">%1$s%2$sボーダーピースはありません!</string> |
| 93 |
<string name="solver_generic_missing_corner2">%1$s%2$sのコーナーがない!</string> |
|
| 92 | 94 |
<string name="solver_generic_corners_cannot">すべての面がモノクロになるようにコーナーをねじることはできません。</string> |
| 93 | 95 |
<string name="solver_generic_vertices_cannot">すべての面が単色になるように、八面体のピースをねじることはできません。</string> |
| 94 | 96 |
<string name="solver_generic_c_v_dont_match">八面体のピースと四面体の角が一致しません!</string> |
| src/main/res/values-ko/strings.xml | ||
|---|---|---|
| 84 | 84 |
<string name="solver_generic_edge_twist">한쪽 가장자리를 비틀어야 합니다!</string> |
| 85 | 85 |
<string name="solver_generic_two_centers">두 개의 센터를 교환해야 합니다!</string> |
| 86 | 86 |
<string name="solver_generic_two_edges">두 모서리 조각을 교환해야 합니다!</string> |
| 87 |
<string name="solver_generic_two_corners">두 모서리를 교환해야 합니다!</string> |
|
| 87 | 88 |
<string name="solver_generic_missing_center">%1$s 중앙이 사라졌습니다!</string> |
| 88 | 89 |
<string name="solver_generic_missing_corner">%1$s-%2$s-%3$s 모서리 금지!</string> |
| 89 | 90 |
<string name="solver_generic_missing_vertex">%1$s-%2$s-%3$s 팔면체가 없습니다!</string> |
| 90 | 91 |
<string name="solver_generic_missing_edge">%1$s%2$s 테두리 조각이 없습니다!</string> |
| 92 |
<string name="solver_generic_missing_corner2">%1$s-%2$s 모서리 금지!</string> |
|
| 91 | 93 |
<string name="solver_generic_corners_cannot">모든면이 단색이되도록 모서리를 비틀 수 없습니다!</string> |
| 92 | 94 |
<string name="solver_generic_vertices_cannot">팔면체 조각은 뒤틀릴 수 없으므로 모든면이 단색입니다!</string> |
| 93 | 95 |
<string name="solver_generic_c_v_dont_match">팔면체 조각과 사면체 모서리가 일치하지 않습니다!</string> |
| src/main/res/values-pl/strings.xml | ||
|---|---|---|
| 84 | 84 |
<string name="solver_generic_edge_twist">Jedna z krawędzi musi byc obrócona!</string> |
| 85 | 85 |
<string name="solver_generic_two_centers">Dwa środki muszą być wymienione!</string> |
| 86 | 86 |
<string name="solver_generic_two_edges">Dwie krawędzie muszą być wymienione!</string> |
| 87 |
<string name="solver_generic_two_corners">Dwa centry muszą być wymienione!</string> |
|
| 87 | 88 |
<string name="solver_generic_missing_center">Brakuje %1$s środka!</string> |
| 88 | 89 |
<string name="solver_generic_missing_corner">Brakuje %1$s-%2$s-%3$s rogu!</string> |
| 89 | 90 |
<string name="solver_generic_missing_vertex">Brakuje %1$s-%2$s-%3$s ośmiokątu!</string> |
| 90 | 91 |
<string name="solver_generic_missing_edge">Brakuje %1$s-%2$s krawędzi!</string> |
| 92 |
<string name="solver_generic_missing_corner2">Brakuje %1$s-%2$s rogu!</string> |
|
| 91 | 93 |
<string name="solver_generic_corners_cannot">Narożników nie można skręcić tak, aby wszystkie boki były monochromatyczne!</string> |
| 92 | 94 |
<string name="solver_generic_vertices_cannot">Części ośmiościennych nie można skręcić tak, aby wszystkie boki były monochromatyczne!</string> |
| 93 | 95 |
<string name="solver_generic_c_v_dont_match">Części ośmiościenne i czworościenne rogi nie pasują do siebie!</string> |
| src/main/res/values-ru/strings.xml | ||
|---|---|---|
| 84 | 84 |
<string name="solver_generic_edge_twist">Одно ребро должно быть переставлен!</string> |
| 85 | 85 |
<string name="solver_generic_two_centers">Два центра должны быть обменены!</string> |
| 86 | 86 |
<string name="solver_generic_two_edges">Два ребра должны быть заменены!</string> |
| 87 |
<string name="solver_generic_two_corners">Два угла нужно поменять местами!</string> |
|
| 87 | 88 |
<string name="solver_generic_missing_center">Нет %1$s центра!</string> |
| 88 | 89 |
<string name="solver_generic_missing_corner">Нет %1$s-%2$s-%3$s угла!</string> |
| 89 | 90 |
<string name="solver_generic_missing_vertex">Нет %1$s-%2$s-%3$s октаэдра!</string> |
| 90 | 91 |
<string name="solver_generic_missing_edge">Нет %1$s-%2$s ребра!</string> |
| 92 |
<string name="solver_generic_missing_corner2">Нет %1$s-%2$s угла!</string> |
|
| 91 | 93 |
<string name="solver_generic_corners_cannot">Углы нельзя скручивать так, чтобы все стороны были однотонными!</string> |
| 92 | 94 |
<string name="solver_generic_vertices_cannot">Восьмигранные фигуры нельзя скрутить так, чтобы все стороны были однотонными!</string> |
| 93 | 95 |
<string name="solver_generic_c_v_dont_match">Восьмигранные фигуры и четырехгранные углы не совпадают!</string> |
| src/main/res/values-zh-rCN/strings.xml | ||
|---|---|---|
| 90 | 90 |
<string name="solver_generic_edge_twist">一条边需要扭动!</string> |
| 91 | 91 |
<string name="solver_generic_two_centers">必须要交换两个中心!</string> |
| 92 | 92 |
<string name="solver_generic_two_edges">必须交换两个边缘!</string> |
| 93 |
<string name="solver_generic_two_corners">两个角必须交换!</string> |
|
| 93 | 94 |
<string name="solver_generic_missing_center">%1$s中心不見了!</string> |
| 94 | 95 |
<string name="solver_generic_missing_corner">没有%1$s-%2$s-%3$s的角落!</string> |
| 95 | 96 |
<string name="solver_generic_missing_vertex">没有%1$s-%2$s-%3$s八面体!</string> |
| 96 | 97 |
<string name="solver_generic_missing_edge">没有1$s-%2$s边!</string> |
| 98 |
<string name="solver_generic_missing_corner2">没有%1$s-%2$s的角落!</string> |
|
| 97 | 99 |
<string name="solver_generic_corners_cannot">角不能扭曲,这样所有的面都是单色的!</string> |
| 98 | 100 |
<string name="solver_generic_vertices_cannot">八面体块不能扭曲,所以所有面都是单色的!</string> |
| 99 | 101 |
<string name="solver_generic_c_v_dont_match">八面体块和四面体角不匹配!</string> |
| src/main/res/values-zh-rTW/strings.xml | ||
|---|---|---|
| 84 | 84 |
<string name="solver_generic_edge_twist">一個邊緣要扭動!</string> |
| 85 | 85 |
<string name="solver_generic_two_centers">兩個中鋒要互換!</string> |
| 86 | 86 |
<string name="solver_generic_two_edges">必須交換兩個邊緣!</string> |
| 87 |
<string name="solver_generic_two_corners">兩個角必須交換!</string> |
|
| 87 | 88 |
<string name="solver_generic_missing_center">%1$s的中心不见了!</string> |
| 88 | 89 |
<string name="solver_generic_missing_corner">沒有%1$s-%2$s-%3$s的角落!</string> |
| 89 | 90 |
<string name="solver_generic_missing_vertex">沒有%1$s-%2$s-%3$s八面體!</string> |
| 90 | 91 |
<string name="solver_generic_missing_edge">沒有1$s-%2$s邊!</string> |
| 92 |
<string name="solver_generic_missing_corner2">沒有%1$s-%2$s的角落!</string> |
|
| 91 | 93 |
<string name="solver_generic_corners_cannot">角不能扭曲,這樣所有的面都是單色的!</string> |
| 92 | 94 |
<string name="solver_generic_vertices_cannot">八面體塊不能扭曲,所以所有面都是單色的!</string> |
| 93 | 95 |
<string name="solver_generic_c_v_dont_match">八面體塊和四面體角不匹配!</string> |
| src/main/res/values/strings.xml | ||
|---|---|---|
| 104 | 104 |
<string name="solver_generic_edge_twist">One edge has to be twisted!</string> |
| 105 | 105 |
<string name="solver_generic_two_centers">Two centers have to be exchanged!</string> |
| 106 | 106 |
<string name="solver_generic_two_edges">Two edges have to be exchanged!</string> |
| 107 |
<string name="solver_generic_two_corners">Two corners have to be exchanged!</string> |
|
| 107 | 108 |
<string name="solver_generic_missing_center">The %1$s center is missing!</string> |
| 108 | 109 |
<string name="solver_generic_missing_corner">The %1$s-%2$s-%3$s corner is missing!</string> |
| 109 | 110 |
<string name="solver_generic_missing_vertex">The %1$s-%2$s-%3$s octahedron piece is missing!</string> |
| 110 | 111 |
<string name="solver_generic_missing_edge">The %1$s-%2$s edge is missing!</string> |
| 112 |
<string name="solver_generic_missing_corner2">The %1$s-%2$s corner is missing!</string> |
|
| 111 | 113 |
<string name="solver_generic_corners_cannot">Corners cannot be twisted so that all faces are monochromatic!</string> |
| 112 | 114 |
<string name="solver_generic_vertices_cannot">Octahedral pieces cannot be twisted so that all faces are monochromatic!</string> |
| 113 | 115 |
<string name="solver_generic_c_v_dont_match">Octahedral pieces and tetrahedral corners do not match!</string> |
Also available in: Unified diff
Progress with Skewb Diamond solver.