commit 3cf8f87dc9663857606b6707659d1d61bf3c5051
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Wed Feb 15 14:06:01 2023 +0100

    Progress with the Pyraminx Duo solver

diff --git a/src/main/java/org/distorted/solvers/pduo/SolverPyraminxDuo.java b/src/main/java/org/distorted/solvers/pduo/SolverPyraminxDuo.java
index 8b15ddc4..a50f521c 100644
--- a/src/main/java/org/distorted/solvers/pduo/SolverPyraminxDuo.java
+++ b/src/main/java/org/distorted/solvers/pduo/SolverPyraminxDuo.java
@@ -32,6 +32,13 @@ public class SolverPyraminxDuo extends SolverTablebase
   private static final int ERROR_TWO_CENTERS_SWAP = -9;
   private static final int ERROR_CORNER_TWISTED   = -10;
 
+  private static final int ERROR_EDGE_GY = -11;
+  private static final int ERROR_EDGE_GB = -12;
+  private static final int ERROR_EDGE_GR = -13;
+  private static final int ERROR_EDGE_YB = -14;
+  private static final int ERROR_EDGE_YR = -15;
+  private static final int ERROR_EDGE_BR = -16;
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   private boolean cornerEqual(int[] corner, int c1, int c2, int c3)
@@ -95,9 +102,9 @@ public class SolverPyraminxDuo extends SolverTablebase
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  private int[] computeCornerTwists(int[][] corners)
+  private int computeCornerTwist(int index, int[][] corners)
     {
-    return new int[] {0,0,0,0};  // TODO
+    return 0; // TODO
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -107,31 +114,31 @@ public class SolverPyraminxDuo extends SolverTablebase
     if( centers[0]==color1 )
       {
       if( centers[1]==color2 ) return 1;
-      if( centers[2]==color2 ) return 0;
-      if( centers[3]==color2 ) return 2;
+      if( centers[2]==color2 ) return 2;
+      if( centers[3]==color2 ) return 0;
 
       return -1;
       }
     if( centers[1]==color1 )
       {
       if( centers[0]==color2 ) return 1;
-      if( centers[2]==color2 ) return 1;
-      if( centers[3]==color2 ) return 0;
+      if( centers[2]==color2 ) return 0;
+      if( centers[3]==color2 ) return 2;
 
       return -1;
       }
     if( centers[2]==color1 )
       {
-      if( centers[0]==color2 ) return 0;
-      if( centers[1]==color2 ) return 1;
+      if( centers[0]==color2 ) return 2;
+      if( centers[1]==color2 ) return 0;
       if( centers[3]==color2 ) return 1;
 
       return -1;
       }
     if( centers[3]==color1 )
       {
-      if( centers[0]==color2 ) return 2;
-      if( centers[1]==color2 ) return 0;
+      if( centers[0]==color2 ) return 0;
+      if( centers[1]==color2 ) return 2;
       if( centers[2]==color2 ) return 1;
 
       return -1;
@@ -153,10 +160,11 @@ public class SolverPyraminxDuo extends SolverTablebase
     {
     int[][] corners = new int[4][3];
     int[] centers = new int[4];
+    int[] corner_twist = new int[4];
 
     for(int i=0; i<4; i++)
       {
-      centers[i] = object.getCubitFaceStickerIndex(i+4,0);
+      centers[i] = object.getCubitFaceStickerIndex(i+4,0) - 4;
 
       for(int j=0; j<3; j++)
         corners[i][j] = object.getCubitFaceStickerIndex(i,j);
@@ -173,14 +181,20 @@ public class SolverPyraminxDuo extends SolverTablebase
 
     if( (twist_ry-twist_gr+1)%3 != 0 ) return ERROR_TWO_CENTERS_SWAP;
 
-    int[] corner_twists = computeCornerTwists(corners);
-    int total_twist = corner_twists[0]+corner_twists[1]+corner_twists[2]+corner_twists[3];
+    int total_twist=0;
+
+    for(int i=0; i<4; i++)
+      {
+      corner_twist[i] = computeCornerTwist(i,corners);
+      if( corner_twist[i]<0 ) return corner_twist[i];
+      total_twist += corner_twist[i];
+      }
 
     if( (total_twist-twist_gr)%3 !=0 ) return ERROR_CORNER_TWISTED;
 
     int green_face = getFaceOfGreenCenter(centers);
 
-    return green_face + 4*(corner_twists[3] + 3*(corner_twists[2] + 3*(corner_twists[1] + 3*corner_twists[0])));
+    return green_face + 4*(corner_twist[3] + 3*(corner_twist[2] + 3*(corner_twist[1] + 3*corner_twist[0])));
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -189,14 +203,22 @@ public class SolverPyraminxDuo extends SolverTablebase
     {
     switch(index)
       {
-      case ERROR_CORNER_YBR_MISSING: String c0 = res.getString(R.string.color_YBR);
-                                     return res.getString(R.string.solver_generic_missing_corner,c0);
-      case ERROR_CORNER_GBR_MISSING: String c1 = res.getString(R.string.color_GBR);
-                                     return res.getString(R.string.solver_generic_missing_corner,c1);
-      case ERROR_CORNER_GYR_MISSING: String c2 = res.getString(R.string.color_GYR);
-                                     return res.getString(R.string.solver_generic_missing_corner,c2);
-      case ERROR_CORNER_GYB_MISSING: String c3 = res.getString(R.string.color_GYB);
-                                     return res.getString(R.string.solver_generic_missing_corner,c3);
+      case ERROR_CORNER_YBR_MISSING: String c01 = res.getString(R.string.color_yellow3);
+                                     String c02 = res.getString(R.string.color_blue3);
+                                     String c03 = res.getString(R.string.color_red4);
+                                     return res.getString(R.string.solver_generic_missing_corner,c01,c02,c03);
+      case ERROR_CORNER_GBR_MISSING: String c11 = res.getString(R.string.color_green3);
+                                     String c12 = res.getString(R.string.color_blue3);
+                                     String c13 = res.getString(R.string.color_red4);
+                                     return res.getString(R.string.solver_generic_missing_corner,c11,c12,c13);
+      case ERROR_CORNER_GYR_MISSING: String c21 = res.getString(R.string.color_green3);
+                                     String c22 = res.getString(R.string.color_yellow3);
+                                     String c23 = res.getString(R.string.color_red4);
+                                     return res.getString(R.string.solver_generic_missing_corner,c21,c22,c23);
+      case ERROR_CORNER_GYB_MISSING: String c31 = res.getString(R.string.color_green3);
+                                     String c32 = res.getString(R.string.color_yellow3);
+                                     String c33 = res.getString(R.string.color_blue4);
+                                     return res.getString(R.string.solver_generic_missing_corner,c31,c32,c33);
       case ERROR_CENTER_G_MISSING  : String colorG = res.getString(R.string.color_green2);
                                      return res.getString(R.string.solver_generic_missing_center,colorG);
       case ERROR_CENTER_Y_MISSING  : String colorY = res.getString(R.string.color_yellow2);
diff --git a/src/main/res/values-de/strings.xml b/src/main/res/values-de/strings.xml
index d5536321..e0cc0ee9 100755
--- a/src/main/res/values-de/strings.xml
+++ b/src/main/res/values-de/strings.xml
@@ -82,8 +82,8 @@
     <string name="solver_generic_not_implemented">Löser für dieses Objekt und diese Größe noch nicht implementiert!</string>
     <string name="solver_generic_corner_twist">Eine Ecke muss verdreht werden!</string>
     <string name="solver_generic_two_centers">Zwei Zentren müssen ausgetauscht werden!</string>
-    <string name="solver_generic_missing_center">%1$s Mitte fehlt!</string>
-    <string name="solver_generic_missing_corner">%1$s Ecke fehlt!</string>
+    <string name="solver_generic_missing_center">Die %1$s Mitte fehlt!</string>
+    <string name="solver_generic_missing_corner">Die %1$s-%2$s-%3$s Ecke fehlt!</string>
 
     <string name="solver_cube3_error1">Es gibt nur %1$d %2$s Facelets.</string>
     <string name="solver_cube3_error2">Nicht alle 12 Kanten gibt es genau einmal!</string>
@@ -101,17 +101,26 @@
     <string name="color_red1">rote</string>
     <string name="color_orange1">orange</string>
 
-    <string name="color_yellow2">Gelbe</string>
-    <string name="color_white2">Weiße</string>
-    <string name="color_blue2">Blaue</string>
-    <string name="color_green2">Grüne</string>
-    <string name="color_red2">Rote</string>
-    <string name="color_orange2">Orange</string>
+    <string name="color_yellow2">gelbe</string>
+    <string name="color_white2">weiße</string>
+    <string name="color_blue2">blaue</string>
+    <string name="color_green2">grüne</string>
+    <string name="color_red2">rote</string>
+    <string name="color_orange2">orange</string>
 
-    <string name="color_YBR">Gelb-blau-rote</string>
-    <string name="color_GBR">Grün-blau-rote</string>
-    <string name="color_GYR">Grün-gelb-rote</string>
-    <string name="color_GYB">Grün-gelb-blaue</string>
+    <string name="color_yellow3">gelb</string>
+    <string name="color_white3">weiß</string>
+    <string name="color_blue3">blau</string>
+    <string name="color_green3">grün</string>
+    <string name="color_red3">rot</string>
+    <string name="color_orange3">orange</string>
+
+    <string name="color_yellow4">gelbe</string>
+    <string name="color_white4">weiße</string>
+    <string name="color_blue4">blaue</string>
+    <string name="color_green4">grüne</string>
+    <string name="color_red4">rote</string>
+    <string name="color_orange4">orange</string>
 
     <string name="solver_cube3_description">Ein nahezu perfekter, sofortiger, zweiphasiger 3x3x3-Löser.\nAutor: Herbert Kociemba.</string>
     <string name="solver_pduo2_description">Noch nicht implementiert.\nAutor: Leszek Koltunski.</string>
diff --git a/src/main/res/values-es/strings.xml b/src/main/res/values-es/strings.xml
index e1a32293..92c5c774 100755
--- a/src/main/res/values-es/strings.xml
+++ b/src/main/res/values-es/strings.xml
@@ -83,7 +83,7 @@
     <string name="solver_generic_corner_twist">¡Hay que torcer una esquina!</string>
     <string name="solver_generic_two_centers">¡Hay que cambiar dos centros!</string>
     <string name="solver_generic_missing_center">¡Falta el centro %1$s!</string>
-    <string name="solver_generic_missing_corner">¡Falta la esquina %1$s!</string>
+    <string name="solver_generic_missing_corner">¡Falta la esquina %1$s-%2$s-%3$s!</string>
 
     <string name="solver_cube3_error1">Solo hay %1$d facetas %2$s.</string>
     <string name="solver_cube3_error2">¡No todos los 12 bordes existen exactamente una vez!</string>
@@ -108,10 +108,19 @@
     <string name="color_red2">rojo</string>
     <string name="color_orange2">naranja</string>
 
-    <string name="color_YBR">amarilla-azul-roja</string>
-    <string name="color_GBR">verde-azul-roja</string>
-    <string name="color_GYR">verde-amarilla-roja</string>
-    <string name="color_GYB">verde-amarilla-azul</string>
+    <string name="color_yellow3">amarilla</string>
+    <string name="color_white3">blanca</string>
+    <string name="color_blue3">azul</string>
+    <string name="color_green3">verde</string>
+    <string name="color_red3">roja</string>
+    <string name="color_orange3">naranja</string>
+
+    <string name="color_yellow4">amarilla</string>
+    <string name="color_white4">blanca</string>
+    <string name="color_blue4">azul</string>
+    <string name="color_green4">verde</string>
+    <string name="color_red4">roja</string>
+    <string name="color_orange4">naranja</string>
 
     <string name="solver_cube3_description">Un 3x3x3 solucionador casi perfecto, instantáneo, de dos fases.\nAutor: Herbert Kociemba.</string>
     <string name="solver_pduo2_description">Aun no implementado.\nAutor: Leszek Koltunski.</string>
diff --git a/src/main/res/values-fr/strings.xml b/src/main/res/values-fr/strings.xml
index ecd2c8e2..e956264d 100755
--- a/src/main/res/values-fr/strings.xml
+++ b/src/main/res/values-fr/strings.xml
@@ -83,7 +83,7 @@
     <string name="solver_generic_corner_twist">Un coin doit être tourné !</string>
     <string name="solver_generic_two_centers">Deux centres doivent être échangés !</string>
     <string name="solver_generic_missing_center">Centre %1$s manquant !</string>
-    <string name="solver_generic_missing_corner">Coin %1$s manquant !</string>
+    <string name="solver_generic_missing_corner">Coin %1$s-%2$s-%3$s manquant !</string>
 
     <string name="solver_cube3_error1">Il n\'y a que %1$d facettes %2$s.</string>
     <string name="solver_cube3_error2">Les 12 arêtes n\'existent pas exactement une fois !</string>
@@ -108,10 +108,19 @@
     <string name="color_red2">rouge</string>
     <string name="color_orange2">orange</string>
 
-    <string name="color_YBR">jaune-bleu-rouge</string>
-    <string name="color_GBR">vert-bleu-rouge</string>
-    <string name="color_GYR">vert-jaune-rouge</string>
-    <string name="color_GYB">vert-jaune-bleu</string>
+    <string name="color_yellow3">jaune</string>
+    <string name="color_white3">blanc</string>
+    <string name="color_blue3">bleu</string>
+    <string name="color_green3">vert</string>
+    <string name="color_red3">rouge</string>
+    <string name="color_orange3">orange</string>
+
+    <string name="color_yellow4">jaune</string>
+    <string name="color_white4">blanc</string>
+    <string name="color_blue4">bleu</string>
+    <string name="color_green4">vert</string>
+    <string name="color_red4">rouge</string>
+    <string name="color_orange4">orange</string>
 
     <string name="solver_cube3_description">Un solveur 3x3x3 biphasé presque parfait, instantané.\nAuteur: Herbert Kociemba.</string>
     <string name="solver_pduo2_description">Pas encore mis en œuvre.\nAuteur: Leszek Koltunski.</string>
diff --git a/src/main/res/values-ja/strings.xml b/src/main/res/values-ja/strings.xml
index f8f3fa9a..149cb49c 100755
--- a/src/main/res/values-ja/strings.xml
+++ b/src/main/res/values-ja/strings.xml
@@ -84,7 +84,7 @@
     <string name="solver_generic_corner_twist">1 つのコーナーをねじる必要があります。</string>
     <string name="solver_generic_two_centers">2つのセンターを交換しなければならない!</string>
     <string name="solver_generic_missing_center">%1$sのセンターが欠けてる！</string>
-    <string name="solver_generic_missing_corner">%1$sのコーナーがない!</string>
+    <string name="solver_generic_missing_corner">%1$s%2$s%3$sのコーナーがない!</string>
 
     <string name="solver_cube3_error1">%2$s小顔は%1$dつだけ</string>
     <string name="solver_cube3_error2">12 のエッジすべてが 存在するわけではありません。</string>
@@ -109,10 +109,19 @@
     <string name="color_red2">レッド</string>
     <string name="color_orange2">オレンジ</string>
 
-    <string name="color_YBR">黄青赤</string>
-    <string name="color_GBR">緑青赤</string>
-    <string name="color_GYR">緑黄赤</string>
-    <string name="color_GYB">緑黄青</string>
+    <string name="color_yellow3">イエロー</string>
+    <string name="color_white3">ホワイト</string>
+    <string name="color_blue3">ブルー</string>
+    <string name="color_green3">グリーン</string>
+    <string name="color_red3">レッド</string>
+    <string name="color_orange3">オレンジ</string>
+
+    <string name="color_yellow4">イエロー</string>
+    <string name="color_white4">ホワイト</string>
+    <string name="color_blue4">ブルー</string>
+    <string name="color_green4">グリーン</string>
+    <string name="color_red4">レッド</string>
+    <string name="color_orange4">オレンジ</string>
 
     <string name="solver_cube3_description">ほぼ完璧で瞬間的な 2 フェーズ 3x3x3 ソルバー。\n著者: Herbert Kociemba.</string>
     <string name="solver_pduo2_description">まだ実装されていません。\n著者: Leszek Koltunski.</string>
diff --git a/src/main/res/values-ko/strings.xml b/src/main/res/values-ko/strings.xml
index 57d12e0d..fd26542a 100755
--- a/src/main/res/values-ko/strings.xml
+++ b/src/main/res/values-ko/strings.xml
@@ -83,7 +83,7 @@
     <string name="solver_generic_corner_twist">한쪽 모서리를 비틀어야 합니다!</string>
     <string name="solver_generic_two_centers">두 개의 센터를 교환해야 합니다!</string>
     <string name="solver_generic_missing_center">%1$s 중앙이 사라졌습니다!</string>
-    <string name="solver_generic_missing_corner">%1$s 모서리 금지!</string>
+    <string name="solver_generic_missing_corner">%1$s-%2$s-%3$s 모서리 금지!</string>
 
     <string name="solver_cube3_error1">%2$s작은 얼굴은  %1$d개뿐입니다.</string>
     <string name="solver_cube3_error2">12개의 가장자리 모두가 정확하게 한 번 존재하지 않습니다!</string>
@@ -108,10 +108,19 @@
     <string name="color_red2">레드</string>
     <string name="color_orange2">오렌지</string>
 
-    <string name="color_YBR">노란색-파란색-빨간색</string>
-    <string name="color_GBR">녹색-파란색-빨간색</string>
-    <string name="color_GYR">녹색-노란색-빨간색</string>
-    <string name="color_GYB">녹색-노란색-파란색</string>
+    <string name="color_yellow3">노란색</string>
+    <string name="color_white3">흰색</string>
+    <string name="color_blue3">블루</string>
+    <string name="color_green3">그린</string>
+    <string name="color_red3">빨간색</string>
+    <string name="color_orange3">주황색</string>
+
+    <string name="color_yellow4">노란색</string>
+    <string name="color_white4">흰색</string>
+    <string name="color_blue4">블루</string>
+    <string name="color_green4">그린</string>
+    <string name="color_red4">빨간색</string>
+    <string name="color_orange4">주황색</string>
 
     <string name="solver_cube3_description">거의 완벽하고 즉각적인 2상 3x3x3 솔버입니다.\n작가: Herbert Kociemba.</string>
     <string name="solver_pduo2_description">아직 구현되지 않음\n작가: Leszek Koltunski.</string>
diff --git a/src/main/res/values-pl/strings.xml b/src/main/res/values-pl/strings.xml
index bddaaea8..880dfc7a 100644
--- a/src/main/res/values-pl/strings.xml
+++ b/src/main/res/values-pl/strings.xml
@@ -83,7 +83,7 @@
     <string name="solver_generic_corner_twist">Jeden z rogów musi byc obrócony!</string>
     <string name="solver_generic_two_centers">Dwa środki muszą być wymienione!</string>
     <string name="solver_generic_missing_center">Brakuje %1$s środka!</string>
-    <string name="solver_generic_missing_corner">Brakuje %1$s rogu!</string>
+    <string name="solver_generic_missing_corner">Brakuje %1$s-%2$s-%3$s rogu!</string>
 
     <string name="solver_cube3_error1">Jest tylko %1$d %2$s ścian.</string>
     <string name="solver_cube3_error2">Któraś z 12 krawędzi nie istnieje!</string>
@@ -108,10 +108,19 @@
     <string name="color_red2">czerwonego</string>
     <string name="color_orange2">pomarańczowego</string>
 
-    <string name="color_YBR">żółto-niebiesko-czerwonego</string>
-    <string name="color_GBR">zielono-niebiesko-czerwonego</string>
-    <string name="color_GYR">zielono-żółto-czerwonego</string>
-    <string name="color_GYB">zielono-żółto-niebieskiego</string>
+    <string name="color_yellow3">żółto</string>
+    <string name="color_white3">biało</string>
+    <string name="color_blue3">niebiesko</string>
+    <string name="color_green3">zielono</string>
+    <string name="color_red3">czerwono</string>
+    <string name="color_orange3">pomarańczowo</string>
+
+    <string name="color_yellow4">żółtego</string>
+    <string name="color_white4">białego</string>
+    <string name="color_blue4">niebieskiego</string>
+    <string name="color_green4">zielonego</string>
+    <string name="color_red4">czerwonego</string>
+    <string name="color_orange4">pomarańczowego</string>
 
     <string name="solver_cube3_description">Natychmiastowy, prawie perfekcyjny rozwiązywacz kostki 3x3x3.\nAutor: Herbert Kociemba.</string>
     <string name="solver_pduo2_description">Jeszcze nie zaimplementowany.\nAutor: Leszek Koltunski.</string>
diff --git a/src/main/res/values-ru/strings.xml b/src/main/res/values-ru/strings.xml
index 743b864c..580b79d9 100755
--- a/src/main/res/values-ru/strings.xml
+++ b/src/main/res/values-ru/strings.xml
@@ -82,8 +82,8 @@
     <string name="solver_generic_not_implemented">Решебника для этого объекта и размера еще нет!</string>
     <string name="solver_generic_corner_twist">Один угол должен быть переставлен!</string>
     <string name="solver_generic_two_centers">Два центра должны быть обменены!</string>
-    <string name="solver_generic_missing_center">%1$s центр отсутствует!</string>
-    <string name="solver_generic_missing_corner">Нет %1$s угла!</string>
+    <string name="solver_generic_missing_center">Нет %1$s центра!</string>
+    <string name="solver_generic_missing_corner">Нет %1$s-%2$s-%3$s угла!</string>
 
     <string name="solver_cube3_error1">Всего %1$d %2$s граней!</string>
     <string name="solver_cube3_error2">Не все 12 ребер существуют в единичном экземпляре!</string>
@@ -101,17 +101,26 @@
     <string name="color_red1">красных</string>
     <string name="color_orange1">оранжевых</string>
 
-    <string name="color_yellow2">Желтый</string>
-    <string name="color_white2">Белый</string>
-    <string name="color_blue2">Синий</string>
-    <string name="color_green2">Зеленый</string>
-    <string name="color_red2">Kрасный</string>
-    <string name="color_orange2">Оранжевый</string>
+    <string name="color_yellow2">желтого</string>
+    <string name="color_white2">белого</string>
+    <string name="color_blue2">синого</string>
+    <string name="color_green2">зеленого</string>
+    <string name="color_red2">красного</string>
+    <string name="color_orange2">оранжевого</string>
 
-    <string name="color_YBR">желто-сине-красного</string>
-    <string name="color_GBR">зелено-сине-красного</string>
-    <string name="color_GYR">зелено-желто-красного</string>
-    <string name="color_GYB">зелено-желто-синего</string>
+    <string name="color_yellow3">желто</string>
+    <string name="color_white3">бело</string>
+    <string name="color_blue3">сине</string>
+    <string name="color_green3">зелено</string>
+    <string name="color_red3">красно</string>
+    <string name="color_orange3">оранжево</string>
+
+    <string name="color_yellow4">желтого</string>
+    <string name="color_white4">белого</string>
+    <string name="color_blue4">синого</string>
+    <string name="color_green4">зеленого</string>
+    <string name="color_red4">красного</string>
+    <string name="color_orange4">оранжевого</string>
 
     <string name="solver_cube3_description">Практически идеальный, мгновенный, двухфазный решатель 3x3x3.\nАвтор: Herbert Kociemba.</string>
     <string name="solver_pduo2_description">Еще не реализован.\nАвтор: Leszek Koltunski.</string>
diff --git a/src/main/res/values-zh-rCN/strings.xml b/src/main/res/values-zh-rCN/strings.xml
index ef6980da..ed9d8a9f 100644
--- a/src/main/res/values-zh-rCN/strings.xml
+++ b/src/main/res/values-zh-rCN/strings.xml
@@ -89,7 +89,7 @@
     <string name="solver_generic_corner_twist">一个角需要扭动！</string>
     <string name="solver_generic_two_centers">必须要交换两个中心！</string>
     <string name="solver_generic_missing_center">%1$s中心不見了！</string>
-    <string name="solver_generic_missing_corner">没有%1$s的角落!</string>
+    <string name="solver_generic_missing_corner">没有%1$s-%2$s-%3$s的角落!</string>
 
     <string name="solver_cube3_error1">只有%1$d个%2$s小面</string>
     <string name="solver_cube3_error2">并非所有12条边都只存在一次！</string>
@@ -107,17 +107,26 @@
     <string name="color_red1">红色的</string>
     <string name="color_orange1">橙色的</string>
 
-    <string name="color_yellow2">黄色</string>
-    <string name="color_white2">白色</string>
-    <string name="color_blue2">蓝色</string>
-    <string name="color_green2">绿色</string>
-    <string name="color_red2">红色</string>
-    <string name="color_orange2">橙色</string>
+    <string name="color_yellow2">黄色的</string>
+    <string name="color_white2">白色的</string>
+    <string name="color_blue2">蓝色的</string>
+    <string name="color_green2">绿色的</string>
+    <string name="color_red2">红色的</string>
+    <string name="color_orange2">橙色的</string>
 
-    <string name="color_YBR">黄-蓝-红</string>
-    <string name="color_GBR">绿-蓝-红</string>
-    <string name="color_GYR">绿-黄-红</string>
-    <string name="color_GYB">绿-黄-蓝</string>
+    <string name="color_yellow3">黄色的</string>
+    <string name="color_white3">白色的</string>
+    <string name="color_blue3">蓝色的</string>
+    <string name="color_green3">绿色的</string>
+    <string name="color_red3">红色的</string>
+    <string name="color_orange3">橙色的</string>
+
+    <string name="color_yellow4">黄色的</string>
+    <string name="color_white4">白色的</string>
+    <string name="color_blue4">蓝色的</string>
+    <string name="color_green4">绿色的</string>
+    <string name="color_red4">红色的</string>
+    <string name="color_orange4">橙色的</string>
 
     <string name="solver_cube3_description">一个几乎完美的、瞬时的、两相的3x3x3解算器。\n作者: Herbert Kociemba.</string>
     <string name="solver_pduo2_description">尚未实施。\n作者: Leszek Koltunski.</string>
diff --git a/src/main/res/values-zh-rTW/strings.xml b/src/main/res/values-zh-rTW/strings.xml
index 1b473c8a..12ca89ee 100644
--- a/src/main/res/values-zh-rTW/strings.xml
+++ b/src/main/res/values-zh-rTW/strings.xml
@@ -83,7 +83,7 @@
     <string name="solver_generic_corner_twist">一個角需要扭動！</string>
     <string name="solver_generic_two_centers">兩個中鋒要互換！</string>
     <string name="solver_generic_missing_center">%1$s的中心不见了！</string>
-    <string name="solver_generic_missing_corner">沒有%1$s的角落!</string>
+    <string name="solver_generic_missing_corner">沒有%1$s-%2$s-%3$s的角落!</string>
 
     <string name="solver_cube3_error1">只有%1$d個%2$s小臉</string>
     <string name="solver_cube3_error2">並非所有12條邊都只存在一次！</string>
@@ -101,17 +101,26 @@
     <string name="color_red1">紅色的</string>
     <string name="color_orange1">橙色的</string>
 
-    <string name="color_yellow2">黃色</string>
-    <string name="color_white2">白色</string>
-    <string name="color_blue2">藍色</string>
-    <string name="color_green2">綠色</string>
-    <string name="color_red2">紅色</string>
-    <string name="color_orange2">橙色</string>
+    <string name="color_yellow2">黃色的</string>
+    <string name="color_white2">白色的</string>
+    <string name="color_blue2">藍色的</string>
+    <string name="color_green2">綠色的</string>
+    <string name="color_red2">紅色的</string>
+    <string name="color_orange2">橙色的</string>
 
-    <string name="color_YBR">黄-蓝-红</string>
-    <string name="color_GBR">绿-蓝-红</string>
-    <string name="color_GYR">绿-黄-红</string>
-    <string name="color_GYB">绿-黄-蓝</string>
+    <string name="color_yellow3">黃色的</string>
+    <string name="color_white3">白色的</string>
+    <string name="color_blue3">藍色的</string>
+    <string name="color_green3">綠色的</string>
+    <string name="color_red3">紅色的</string>
+    <string name="color_orange3">橙色的</string>
+
+    <string name="color_yellow4">黃色的</string>
+    <string name="color_white4">白色的</string>
+    <string name="color_blue4">藍色的</string>
+    <string name="color_green4">綠色的</string>
+    <string name="color_red4">紅色的</string>
+    <string name="color_orange4">橙色的</string>
 
     <string name="solver_cube3_description">一個近乎完美的瞬時兩相 3x3x3 求解器。\n作者: Herbert Kociemba.</string>
     <string name="solver_pduo2_description">尚未實現。\n作者: Leszek Koltunski.</string>
diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml
index 6571df52..a7053770 100644
--- a/src/main/res/values/strings.xml
+++ b/src/main/res/values/strings.xml
@@ -102,8 +102,8 @@
     <string name="solver_generic_not_implemented">Solver for this object not implemented yet!</string>
     <string name="solver_generic_corner_twist">One corner has to be twisted!</string>
     <string name="solver_generic_two_centers">Two centers have to be exchanged!</string>
-    <string name="solver_generic_missing_center">%1$s center missing!</string>
-    <string name="solver_generic_missing_corner">%1$s corner missing!</string>
+    <string name="solver_generic_missing_center">The %1$s center missing!</string>
+    <string name="solver_generic_missing_corner">The %1$s-%2$s-%3$s corner missing!</string>
 
     <string name="solver_cube3_error1">There are only %1$d %2$s facelets.</string>
     <string name="solver_cube3_error2">Not all 12 edges exist exactly once!</string>
@@ -121,17 +121,26 @@
     <string name="color_red1">red</string>
     <string name="color_orange1">orange</string>
 
-    <string name="color_yellow2">Yellow</string>
-    <string name="color_white2">White</string>
-    <string name="color_blue2">Blue</string>
-    <string name="color_green2">Green</string>
-    <string name="color_red2">Red</string>
-    <string name="color_orange2">Orange</string>
-
-    <string name="color_YBR">Yellow-blue-red</string>
-    <string name="color_GBR">Green-blue-red</string>
-    <string name="color_GYR">Green-yellow-red</string>
-    <string name="color_GYB">Green-yellow-blue</string>
+    <string name="color_yellow2">yellow</string>
+    <string name="color_white2">white</string>
+    <string name="color_blue2">blue</string>
+    <string name="color_green2">green</string>
+    <string name="color_red2">red</string>
+    <string name="color_orange2">orange</string>
+
+    <string name="color_yellow3">yellow</string>
+    <string name="color_white3">white</string>
+    <string name="color_blue3">blue</string>
+    <string name="color_green3">green</string>
+    <string name="color_red3">red</string>
+    <string name="color_orange3">orange</string>
+
+    <string name="color_yellow4">yellow</string>
+    <string name="color_white4">white</string>
+    <string name="color_blue4">blue</string>
+    <string name="color_green4">green</string>
+    <string name="color_red4">red</string>
+    <string name="color_orange4">orange</string>
 
     <string name="solver_cube3_title" translatable="false">Kociemba 3x3 Solver</string>
     <string name="solver_pduo2_title" translatable="false">Pyraminx Duo Solver</string>
