commit 3a43ea70ddbdc753900ecd9b5efe069dc2d2c500
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Sun Feb 19 02:17:31 2023 +0100

    Fx the solver to be able to handle the case when someone repainted the faces in a different order

diff --git a/src/main/java/org/distorted/solvers/SolverPyraminxDuo.java b/src/main/java/org/distorted/solvers/SolverPyraminxDuo.java
index 2d777379..c93e0f5d 100644
--- a/src/main/java/org/distorted/solvers/SolverPyraminxDuo.java
+++ b/src/main/java/org/distorted/solvers/SolverPyraminxDuo.java
@@ -87,12 +87,12 @@ public class SolverPyraminxDuo extends SolverTablebase
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  private int getFaceOfGreenCenter(int[] centers)
+  private int getFaceOfCenter(int color, int[] centers)
     {
-    if( centers[0]==0 ) return 0;
-    if( centers[1]==0 ) return 1;
-    if( centers[2]==0 ) return 2;
-    if( centers[3]==0 ) return 3;
+    if( centers[0]==color ) return 0;
+    if( centers[1]==color ) return 1;
+    if( centers[2]==color ) return 2;
+    if( centers[3]==color ) return 3;
 
     return -1;
     }
@@ -220,13 +220,14 @@ public class SolverPyraminxDuo extends SolverTablebase
     int result2 = checkAllCentersPresent(centers);
     if( result2<0 ) return result2;
 
-    int twist_gr = computeCenterTwist(centers,0,3);
-    int twist_ry = computeCenterTwist(centers,3,1);
+    int[] missing = computeMissingCornerColor(corners);
+
+    int twist_gr = computeCenterTwist(centers,missing[1],missing[2]);
+    int twist_ry = computeCenterTwist(centers,missing[2],missing[0]);
 
     if( (twist_ry-twist_gr+1)%3 != 0 ) return ERROR_TWO_CENTERS_SWAP;
 
     int total_twist=0;
-    int[] missing = computeMissingCornerColor(corners);
 
     for(int i=0; i<4; i++)
       {
@@ -237,7 +238,7 @@ public class SolverPyraminxDuo extends SolverTablebase
 
     if( (total_twist-twist_gr)%3 !=0 ) return ERROR_CORNER_TWISTED;
 
-    int green_face = getFaceOfGreenCenter(centers);
+    int green_face = getFaceOfCenter(missing[1],centers);
 
     return green_face + 4*(corner_twist[3] + 3*(corner_twist[2] + 3*(corner_twist[1] + 3*corner_twist[0])));
     }
