commit 754f7231cac65a6fe74677417010c496d3320c9b
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Fri Mar 3 14:37:49 2023 +0100

    Diamond Skewb solver should be fully working now.

diff --git a/src/main/java/org/distorted/solvers/SolverSkewbDiamond.java b/src/main/java/org/distorted/solvers/SolverSkewbDiamond.java
index f4a8d59d..aad00415 100644
--- a/src/main/java/org/distorted/solvers/SolverSkewbDiamond.java
+++ b/src/main/java/org/distorted/solvers/SolverSkewbDiamond.java
@@ -86,18 +86,30 @@ public class SolverSkewbDiamond extends SolverTablebase
     return perm;
     }
 
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  private int computeCornerTwist(int[] corner, int color )
+    {
+    if( corner[3]==color ) return 0;
+    if( corner[2]==color ) return 1;
+    if( corner[1]==color ) return 2;
+    if( corner[0]==color ) return 3;
+
+    return -1;
+    }
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   private int[] getCornersTwist(int[] corners_perm, int[][] corners)
     {
     int[] twist = new int[6];
 
-    twist[0] = retCornerTwist(corners[corners_perm[0]], mFaceColors[1],mFaceColors[4]);
-    twist[1] = retCornerTwist(corners[corners_perm[1]], mFaceColors[1],mFaceColors[6]);
-    twist[2] = retCornerTwist(corners[corners_perm[2]], mFaceColors[3],mFaceColors[6]);
-    twist[3] = retCornerTwist(corners[corners_perm[3]], mFaceColors[3],mFaceColors[4]);
-    twist[4] = retCornerTwist(corners[corners_perm[4]], mFaceColors[1],mFaceColors[3]);
-    twist[5] = retCornerTwist(corners[corners_perm[5]], mFaceColors[4],mFaceColors[6]);
+    twist[0] = computeCornerTwist( corners[corners_perm[0]], mFaceColors[1] );
+    twist[1] = computeCornerTwist( corners[corners_perm[1]], mFaceColors[1] );
+    twist[2] = computeCornerTwist( corners[corners_perm[2]], mFaceColors[3] );
+    twist[3] = computeCornerTwist( corners[corners_perm[3]], mFaceColors[3] );
+    twist[4] = computeCornerTwist( corners[corners_perm[4]], mFaceColors[1] );
+    twist[5] = computeCornerTwist( corners[corners_perm[5]], mFaceColors[4] );
 
     return twist;
     }
@@ -134,12 +146,7 @@ public class SolverSkewbDiamond extends SolverTablebase
       {
       int t= twist[i];
       if( t==1 || t==3 ) return -1;
-
-      if( i<5 )
-        {
-        if( t==2 ) total++;
-        total *= 2;
-        }
+      if( i<5 && t==2 ) total+=(1<<i);
       }
 
     return total;
@@ -335,8 +342,6 @@ public class SolverSkewbDiamond extends SolverTablebase
     getCorners(object,corners);
     getCenters(object,centers);
 
-//for(int j=0; j<8; j++) android.util.Log.e("D", "center "+j+" : "+centers[j]);
-
     int result1 = checkAllCentersPresent(centers);
     if( result1<0 ) return result1;
 
@@ -485,26 +490,13 @@ android.util.Log.e("D", "corn twist: "+corners_twist[0]+" "+corners_twist[1]+" "
     {
     if( mSolver==null )
       {
-      mSolver = ImplementedTablebasesList.createPacked(res,ObjectType.DIAM_2);
+      //mSolver = ImplementedTablebasesList.createPacked(res,ObjectType.DIAM_2);
+
+      mSolver = ImplementedTablebasesList.createUnpacked(ObjectType.DIAM_2);
+      if( mSolver!=null ) mSolver.createTablebase();
       }
 
     return mSolver!=null ? mSolver.solution(index) : null;
-
-     /*
-
-    TablebasesSkewbDiamond tb = new TablebasesSkewbDiamond();
-    int[] q = {0,0,3,3,3,0,  3,0,2,0,0,0,0,3};
-    int i= tb.getIndex(q);
-    android.util.Log.e("D", "AAAA index="+i);
-    int[] a = tb.getQuats(i);
-    android.util.Log.e("D", "AAAA quats="+a[0]+" "+a[1]+" "+a[2]+" "+a[3]+" "+a[4]+" "+a[5]+" "+
-       a[6]+" "+a[7]+" "+a[8]+" "+a[9]+" "+a[10]+" "+a[11]+" "+a[12]+" "+a[13]);
-    int j= tb.getIndex(a);
-    android.util.Log.e("D", "AAAA index="+j);
-
-    return null;
-
-     */
     }
 }  
 
