Project

General

Profile

« Previous | Next » 

Revision 8499ba3d

Added by Leszek Koltunski about 1 year ago

Progress with the Diamond Skewb solver.

View differences:

src/main/java/org/distorted/objectlib/tablebases/TablebasesSkewbDiamond.java
30 30
          { {4,7,11}, {3,6, 9}, {5,8,10}, {0,1, 2} }
31 31
      };
32 32

  
33

  
34 33
  private static final int[][][] CORNER =
35 34
      {
36 35
          { {0,9},{2,4},{10,11},{6,8},{1,5},{3,7} },
......
52 51

  
53 52
  public TablebasesSkewbDiamond(Resources res)
54 53
    {
55
    super(res, R.raw.pyra_3_tablebase);
54
    super(res, R.raw.diam_2_tablebase);
56 55
    }
57 56

  
58 57
///////////////////////////////////////////////////////////////////////////////////////////////////
......
89 88
             { 0.0f, SQ2/2, 0.0f},
90 89
             { 0.0f,-SQ2/2, 0.0f},
91 90

  
91
             { 0.0f, SQ2/4, 0.5f},
92 92
             { 0.5f, SQ2/4, 0.0f},
93 93
             { 0.0f, SQ2/4,-0.5f},
94 94
             {-0.5f, SQ2/4, 0.0f},
95
             { 0.0f, SQ2/4, 0.5f},
95
             { 0.0f,-SQ2/4, 0.5f},
96 96
             { 0.5f,-SQ2/4, 0.0f},
97 97
             { 0.0f,-SQ2/4,-0.5f},
98
             {-0.5f,-SQ2/4, 0.0f},
99
             { 0.0f,-SQ2/4, 0.5f}
98
             {-0.5f,-SQ2/4, 0.0f}
100 99
         };
101 100
    }
102 101

  
......
180 179
        {
181 180
        int[] p = perm[j];
182 181

  
183
        if( p[0]==q ) { output[i]=j;                         break; }
184
        if( p[1]==q ) { output[i]=j; if( i<5 ) totalTwist++; break; }
182
        if( p[0]==q ) { output[i]=j;                               break; }
183
        if( p[1]==q ) { output[i]=j; if( i<5 ) totalTwist+=(1<<i); break; }
185 184
        }
186

  
187
      if( i<5 ) totalTwist*=2;
188 185
      }
189 186

  
190 187
    return totalTwist;
......
196 193
    {
197 194
    int centers_perm_num = (index%12);
198 195
    index /= 12;
199
    int totalTwist = (index%128);
200
    int corners_perm_num = (index/128);
196
    int totalTwist = (index%32);
197
    int corners_perm_num = (index/32);
198

  
199
int origT = totalTwist;
201 200

  
202 201
    int[] centers_perm = new int[4];
203 202
    TablebaseHelpers.getEvenPermutationFromNum(centers_perm,centers_perm_num);
......
213 212
      quats[i] = computeCornerQuat(i,corners_perm[i],twist);
214 213
      }
215 214

  
215
//android.util.Log.e("D", "quats: centers_num="+centers_perm_num+" twist="+origT+" corners_num="+corners_perm_num);
216
//android.util.Log.e("D", "quats: centers_perm: "+corners_perm[0]+" "+corners_perm[1]+" "+corners_perm[2]+" "+corners_perm[3]+" "+corners_perm[4]+" "+corners_perm[5]);
217

  
216 218
    quats[ 6] = computeCenterQuat(0,centers_perm[0]);
217 219
    quats[ 8] = computeCenterQuat(1,centers_perm[1]);
218 220
    quats[11] = computeCenterQuat(2,centers_perm[2]);
......
232 234
    int totalTwist = computeCornerPerm(corners_perm,quats);
233 235
    int corners_perm_num = TablebaseHelpers.computeEvenPermutationNum(corners_perm);
234 236

  
235
int ret = centers_perm_num + 12*(totalTwist + 32*corners_perm_num);
236

  
237
if( ret<0 || ret>=138240 )
237
//int ret = centers_perm_num + 12*(totalTwist + 32*corners_perm_num);
238
/*
239
if( ret<0 || ret>=138240 || ret==64898 || ret==13440 )
238 240
  {
239 241
  android.util.Log.e("D", "centers_perm: "+centers_perm_num+" twist: "+totalTwist+" corners_perm: "+corners_perm_num);
242
  android.util.Log.e("D", "centers_perm: "+center_perm[0]+" "+center_perm[1]+" "+center_perm[2]+" "+center_perm[3]);
243
  android.util.Log.e("D", "centers_quat: "+quats[6]+" "+quats[8]+" "+quats[11]+" "+quats[13]);
244
  android.util.Log.e("D", "corners_perm: "+corners_perm[0]+" "+corners_perm[1]+" "+corners_perm[2]+" "+corners_perm[3]+" "+corners_perm[4]+" "+corners_perm[5]);
245
  android.util.Log.e("D", "corners_quat: "+quats[0]+" "+quats[1]+" "+quats[2]+" "+quats[3]+" "+quats[4]+" "+quats[5]);
240 246
  }
247
*/
248
/*
249
if( ret==64898 )
250
  {
251
  android.util.Log.e("D", "getIndex: "+quats[0]+" "+quats[1]+" "+quats[2]+" "+quats[3]+" "+quats[4]+" "+quats[5]
252
  +" "+quats[6]+" "+quats[7]+" "+quats[8]+" "+quats[9]+" "+quats[10]+" "+quats[11]+" "+quats[12]+" "+quats[13]);
253
  }
254
*/
255
//android.util.Log.e("D", "index: centers_num="+centers_perm_num+" twist="+totalTwist+" corners_num="+corners_perm_num);
256
//android.util.Log.e("D", "index: corners_perm: "+corners_perm[0]+" "+corners_perm[1]+" "+corners_perm[2]+" "+corners_perm[3]+" "+corners_perm[4]+" "+corners_perm[5]);
257

  
241 258

  
242 259
    return centers_perm_num + 12*(totalTwist + 32*corners_perm_num);
243 260
    }

Also available in: Unified diff