commit eb316dea0e3d70abfd3fe179143a420b10f7f812
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Tue Apr 25 13:22:13 2023 +0200

    CU_323 solver: new schema.

diff --git a/src/main/java/org/distorted/solvers/SolverCuboid323.java b/src/main/java/org/distorted/solvers/SolverCuboid323.java
index 53a61d79..155b6eef 100644
--- a/src/main/java/org/distorted/solvers/SolverCuboid323.java
+++ b/src/main/java/org/distorted/solvers/SolverCuboid323.java
@@ -11,11 +11,8 @@ package org.distorted.solvers;
 
 import android.content.res.Resources;
 
-import org.distorted.library.type.Static3D;
-import org.distorted.library.type.Static4D;
 import org.distorted.main.R;
 import org.distorted.objectlib.helpers.OperatingSystemInterface;
-import org.distorted.objectlib.helpers.QuatGroupGenerator;
 import org.distorted.objectlib.main.ObjectSignatures;
 import org.distorted.objectlib.main.TwistyObject;
 import org.distorted.objectlib.tablebases.ImplementedTablebasesList;
@@ -36,56 +33,6 @@ public class SolverCuboid323 extends SolverTablebase
   TablebasesAbstract mSolver;
   private final int[] mFaceColors;
   private int mErrorColor1, mErrorColor2, mErrorColor3;
-  private Static4D[] mQuats;
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-  private void initializeQuats()
-    {
-    int[] tmp2 = {2,2,2};
-    int[] tmp4 = {4,4};
-    int[][] angles = new int[][] { tmp2,tmp4,tmp2 };
-    Static3D[] axis = new Static3D[] { new Static3D(1,0,0), new Static3D(0,1,0), new Static3D(0,0,1) };
-    mQuats = QuatGroupGenerator.computeGroup(axis,angles);
-    }
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-  private int mulQuat(int q1, int q2)
-    {
-    if( mQuats==null ) initializeQuats();
-    return TablebasesAbstract.mulQuat(q1,q2,mQuats);
-    }
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-  private void rotatePermutations(int[] corner, int[] edge8, int quat)
-    {
-    int[] quats = TBCuboid323.quatsFromPermutations(corner,edge8);
-    int num = quats.length;
-
-    for( int i=0; i<num; i++ ) quats[i] = mulQuat(quat,quats[i]);
-
-    TBCuboid323.cornerFromQuats(corner,quats);
-    TBCuboid323.edgeFromQuats(edge8,quats);
-    }
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-// when we input the position, edge1 can be anywhere. We need to rotate the permutations so that
-// edge1 is always in the front (i.e. so that edge[1] is 1 or 3)
-
-  private void normalizePermutations(int[] corner, int[] edge8)
-    {
-    switch(edge8[1])
-      {
-      case 0: case 2: rotatePermutations(corner,edge8,3);
-                      break;
-      case 4: case 5: rotatePermutations(corner,edge8,4);
-                      break;
-      case 6: case 7: rotatePermutations(corner,edge8,2);
-                      break;
-      }
-    }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
@@ -220,13 +167,11 @@ public class SolverCuboid323 extends SolverTablebase
 
   private int computeFaceColors(int[][] corners, int[][] edges, int[] centers)
     {
-    mFaceColors[2] = centers[0];
-    mFaceColors[3] = centers[1];
+    mFaceColors[4] = edges[1][0];
+    mFaceColors[3] = edges[1][1];
 
-    if( edges[1][1]==mFaceColors[2] || edges[1][1]==mFaceColors[3] )
-      {
-      mFaceColors[4] = edges[1][0];
-      }
+         if( centers[0]!=mFaceColors[3] ) mFaceColors[2] = centers[0];
+    else if( centers[1]!=mFaceColors[3] ) mFaceColors[2] = centers[1];
     else return ERROR_CORNERS_CANNOT;
 
     mFaceColors[0] = findCorner(corners,mFaceColors[4],mFaceColors[2]);
@@ -337,28 +282,20 @@ for(int i=0; i<6; i++) android.util.Log.e("D", "face color: "+mFaceColors[i]);
     int result2 = retEdgePermutation(edge_perm8,edges);
     if( result2<0 ) return result2;
 
-    TablebaseHelpers.displayTable(corner_perm, "CORNER PERM (before norm)");
-    TablebaseHelpers.displayTable(edge_perm8, "EDGE PERM8 (before norm)");
-
-    normalizePermutations(corner_perm,edge_perm8);
-
-    TablebaseHelpers.displayTable(corner_perm, "CORNER PERM (after norm)");
-    TablebaseHelpers.displayTable(edge_perm8, "EDGE PERM8 (after norm)");
-
     int[] edge_perm7 = TBCuboid323.edgePermTo7(edge_perm8);
 
-TablebaseHelpers.displayTable(edge_perm7, "EDGE PERM7");
+    TablebaseHelpers.displayTable(corner_perm, "CORNER PERM");
+    TablebaseHelpers.displayTable(edge_perm8, "EDGE PERM8");
+    TablebaseHelpers.displayTable(edge_perm7, "EDGE PERM7");
 
     int corner_perm_num = TablebaseHelpers.computePermutationNum(corner_perm);
     int edge_perm_num = TablebaseHelpers.computePermutationNum(edge_perm7);
-    boolean inPlace = TBCuboid323.isFrontEdgeInItsPlace(edge_perm8);
-
-android.util.Log.e("D", "corner_perm_num: "+corner_perm_num+" edge_perm_num: "+edge_perm_num+" inPlace: "+inPlace);
-android.util.Log.e("D", "index="+(corner_perm_num + 40320*( (inPlace?0:1) + 2*edge_perm_num)));
+    int centersInPlace = (centers[0]==mFaceColors[2]) ? 0 : 1;
 
-    TBCuboid323.initialize();
+android.util.Log.e("D", "corner_perm_num: "+corner_perm_num+" edge_perm_num: "+edge_perm_num+" inPlace: "+centersInPlace);
+android.util.Log.e("D", "index="+(corner_perm_num + 40320*( centersInPlace + 2*edge_perm_num)));
 
-    return corner_perm_num + 40320*( (inPlace?0:1) + 2*edge_perm_num);
+    return corner_perm_num + 40320*( centersInPlace + 2*edge_perm_num);
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
