commit 4ad82629fb571e2695a42a6b0b7d6410f04e6362
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Wed Feb 22 21:22:12 2023 +0100

    Ivy solver finished

diff --git a/src/main/java/org/distorted/solvers/SolverIvyCube.java b/src/main/java/org/distorted/solvers/SolverIvyCube.java
index 3ce35331..580c25fe 100644
--- a/src/main/java/org/distorted/solvers/SolverIvyCube.java
+++ b/src/main/java/org/distorted/solvers/SolverIvyCube.java
@@ -15,6 +15,7 @@ import org.distorted.main.R;
 import org.distorted.objectlib.main.ObjectType;
 import org.distorted.objectlib.main.TwistyObject;
 import org.distorted.objectlib.tablebases.ImplementedTablebasesList;
+import org.distorted.objectlib.tablebases.TablebaseHelpers;
 import org.distorted.objectlib.tablebases.TablebasesAbstract;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -145,31 +146,6 @@ public class SolverIvyCube extends SolverTablebase
     return 0;
     }
 
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-  private int swaps(int val, int[] buffer, int len)
-    {
-    int ret = 0;
-
-    for(int i=0; i<len; i++)
-      {
-           if( buffer[i] >val ) ret++;
-      else if( buffer[i]==val ) return ret;
-      }
-
-    return -1;
-    }
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-  private boolean permutationIsEven(int[] buffer)
-    {
-    int len = buffer.length;
-    int numOfSwaps = 0;
-    for(int i=0; i<len; i++) numOfSwaps += swaps(i,buffer,len);
-    return (numOfSwaps%2==0);
-    }
-
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   private int computeCenterColors(int[] buffer, int[] faceColors, int[] centers)
@@ -183,7 +159,7 @@ public class SolverIvyCube extends SolverTablebase
           buffer[center]=color;
           }
 
-    return permutationIsEven(buffer) ? 0 : ERROR_TWO_CENTERS_SWAP;
+    return TablebaseHelpers.permutationIsEven(buffer) ? 0 : ERROR_TWO_CENTERS_SWAP;
     }
 ////////////////////////////////////////////////////////////////////////////////////////
 
@@ -194,31 +170,6 @@ public class SolverIvyCube extends SolverTablebase
     return 2;
     }
 
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-  private int computeOrder(int[] permutation, int index)
-    {
-    int numOfSmaller = 0;
-    int val = permutation[index];
-
-    for(int i=0; i<index; i++)
-      if( permutation[i]<val ) numOfSmaller++;
-
-    return val-numOfSmaller;
-    }
-
-///////////////////////////////////////////////////////////////////////////////////////////////////
-
-  private int computeEvenPermutationNum(int[] permutation)
-    {
-    int n0 = computeOrder(permutation,0);
-    int n1 = computeOrder(permutation,1);
-    int n2 = computeOrder(permutation,2);
-    int n3 = computeOrder(permutation,3);
-
-    return n0 + 6*(n1+ 5*(n2+4*n3));
-    }
-
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   public SolverIvyCube(Resources res, TwistyObject object)
@@ -243,15 +194,6 @@ public class SolverIvyCube extends SolverTablebase
     for(int i=0; i<6; i++)
       centers[i] = object.getCubitFaceStickerIndex(i+4,0) - 6;
 
-for(int i=0; i<4; i++)
-  {
-  android.util.Log.e("D", "corner "+i+" : "+corners[i][0]+" "+corners[i][1]+" "+corners[i][2]);
-  }
-for(int i=0; i<6; i++)
-  {
-  android.util.Log.e("D", "center "+i+" : "+centers[i]);
-  }
-
     int result1 = checkAllCentersPresent(centers);
     if( result1<0 ) return result1;
 
@@ -266,15 +208,9 @@ for(int i=0; i<6; i++)
     twist[2] = computeCornerTwist(corners[2],face_colors[4]);
     twist[3] = computeCornerTwist(corners[3],face_colors[5]);
 
-    int perm_num = computeEvenPermutationNum(center_colors);
-
-  android.util.Log.e("D", "twist : "+twist[0]+" "+twist[1]+" "+twist[2]+" "+twist[3]);
-
-    int ret = perm_num + 360*(twist[0]+ 3*(twist[1]+ 3*(twist[2]+ 3*twist[3])));
-
-android.util.Log.e("D", "index: "+ret+" perm_num="+perm_num);
+    int perm_num = TablebaseHelpers.computeEvenPermutationNum(center_colors);
 
-    return ret;
+    return perm_num + 360*(twist[0]+ 3*(twist[1]+ 3*(twist[2]+ 3*twist[3])));
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
