Project

General

Profile

« Previous | Next » 

Revision 08451d7f

Added by Leszek Koltunski about 1 year ago

CU_323 solver: remove mUpper.

View differences:

src/main/java/org/distorted/objectlib/tablebases/TBCuboid323.java
40 40
          {6,7,4,2,5,3,1,0}
41 41
      };
42 42

  
43
  private static boolean mUpper;
44 43
  private static boolean mFixedEdgeIsDown;
45 44
  private int[][] mAngles;
46 45

  
47 46
///////////////////////////////////////////////////////////////////////////////////////////////////
48 47

  
49
  public static void setUpper(boolean upper, boolean isDown )
48
  public static void setDown(boolean isDown )
50 49
    {
51
    mUpper = upper;
52 50
    mFixedEdgeIsDown = isDown;
53 51
    }
54 52

  
......
56 54
// if upper==true, then the edge3 is the 'half-fixed' front edge. Remove it from the permutation.
57 55
// Otherwise edge1 is the one; remove it.
58 56

  
59
  public static int[] edgePermTo7(int[] perm, boolean upper)
57
  public static int[] edgePermTo7(int[] perm)
60 58
    {
61
    int val;
62 59
    int[] ret = new int[7];
63 60

  
64
    if( upper )
65
      {
66
      ret[0] = perm[0];
67
      ret[1] = perm[1];
68
      ret[2] = perm[2];
69
      ret[3] = perm[4];
70
      ret[4] = perm[5];
71
      ret[5] = perm[6];
72
      ret[6] = perm[7];
73

  
74
      val = perm[3];
75
      }
76
    else
77
      {
78
      ret[0] = perm[0];
79
      ret[1] = perm[2];
80
      ret[2] = perm[3];
81
      ret[3] = perm[4];
82
      ret[4] = perm[5];
83
      ret[5] = perm[6];
84
      ret[6] = perm[7];
85

  
86
      val = perm[1];
87
      }
61
    ret[0] = perm[0];
62
    ret[1] = perm[2];
63
    ret[2] = perm[3];
64
    ret[3] = perm[4];
65
    ret[4] = perm[5];
66
    ret[5] = perm[6];
67
    ret[6] = perm[7];
68

  
69
    int val = perm[1];
88 70

  
89 71
    for(int i=0; i<7; i++)
90 72
      if( ret[i]>val ) ret[i]--;
......
97 79
  private static int[] edgePermTo8(int[] perm, boolean inPlace)
98 80
    {
99 81
    int[] ret = new int[8];
82
    int val = inPlace ? 1:3;
100 83

  
101
    if( mUpper )
102
      {
103
      int val = inPlace ? 3:1;
104
      ret[0] = perm[0]; if( ret[0]>=val ) ret[0]++;
105
      ret[1] = perm[1]; if( ret[1]>=val ) ret[1]++;
106
      ret[2] = perm[2]; if( ret[2]>=val ) ret[2]++;
107
      ret[3] = val;
108
      ret[4] = perm[3]; if( ret[4]>=val ) ret[4]++;
109
      ret[5] = perm[4]; if( ret[5]>=val ) ret[5]++;
110
      ret[6] = perm[5]; if( ret[6]>=val ) ret[6]++;
111
      ret[7] = perm[6]; if( ret[7]>=val ) ret[7]++;
112
      }
113
    else
114
      {
115
      int val = inPlace ? 1:3;
116
      ret[0] = perm[0]; if( ret[0]>=val ) ret[0]++;
117
      ret[1] = val;
118
      ret[2] = perm[1]; if( ret[2]>=val ) ret[2]++;
119
      ret[3] = perm[2]; if( ret[3]>=val ) ret[3]++;
120
      ret[4] = perm[3]; if( ret[4]>=val ) ret[4]++;
121
      ret[5] = perm[4]; if( ret[5]>=val ) ret[5]++;
122
      ret[6] = perm[5]; if( ret[6]>=val ) ret[6]++;
123
      ret[7] = perm[6]; if( ret[7]>=val ) ret[7]++;
124
      }
84
    ret[0] = perm[0]; if( ret[0]>=val ) ret[0]++;
85
    ret[1] = val;
86
    ret[2] = perm[1]; if( ret[2]>=val ) ret[2]++;
87
    ret[3] = perm[2]; if( ret[3]>=val ) ret[3]++;
88
    ret[4] = perm[3]; if( ret[4]>=val ) ret[4]++;
89
    ret[5] = perm[4]; if( ret[5]>=val ) ret[5]++;
90
    ret[6] = perm[5]; if( ret[6]>=val ) ret[6]++;
91
    ret[7] = perm[6]; if( ret[7]>=val ) ret[7]++;
125 92

  
126 93
    return ret;
127 94
    }
......
137 104

  
138 105
  public TBCuboid323(OperatingSystemInterface os)
139 106
    {
140
    super(os,new int[] {R.raw.cu_323_pruning6,R.raw.cu_323_pruning7}, new int[] {R.raw.cu_323_pruning17,R.raw.cu_323_pruning18});
107
    super(os,new int[] {R.raw.cu_323_pruning6,R.raw.cu_323_pruning7}, null);//new int[] {R.raw.cu_323_pruning17,R.raw.cu_323_pruning18});
141 108
    }
142 109

  
143 110
///////////////////////////////////////////////////////////////////////////////////////////////////
......
214 181
///////////////////////////////////////////////////////////////////////////////////////////////////
215 182
// we can never really move the fixed front edge, because if we do so, we would also rotate the
216 183
// rotation axis themselves! (see getIndex() where the cubit quats are normalized)
217
// Fixed front edge is always iin the front, up or down (depending on value of mFixedEdgeIsDown)
184
// Fixed front edge is always in the front, up or down (depending on value of mFixedEdgeIsDown)
218 185
// If the edge is up and we are moving along Y axis, invert!
219 186

  
220 187
  @Override
......
255 222

  
256 223
  int[] getHighPruningLevels()
257 224
    {
258
    return new int[] {17,18};
225
    return null;//new int[] {17,18};
259 226
    }
260 227

  
261 228
///////////////////////////////////////////////////////////////////////////////////////////////////
......
286 253

  
287 254
  private boolean isFrontEdgeInItsPlace(int[] perm)
288 255
    {
289
    int index = mUpper?3:1;
290
    return perm[index]==index;
256
    return perm[1]==1;
291 257
    }
292 258

  
293 259
///////////////////////////////////////////////////////////////////////////////////////////////////
294 260

  
295 261
  private void correctQuats(int[] quats)
296 262
    {
297
    int mult=0, index = mUpper? 11:9;
263
    int mult=0;
298 264

  
299
    switch(quats[index])
265
    switch(quats[9])
300 266
      {
301 267
      case 0: case 5: return;
302 268
      case 4: case 7: mult=2; break;
......
353 319
      edge_perm8[i]  = findIndex( EDGE_MAP[i]  , quats[i+8]);
354 320
      }
355 321

  
356
    int[] edge_perm7 = edgePermTo7(edge_perm8,mUpper);
322
    int[] edge_perm7 = edgePermTo7(edge_perm8);
357 323

  
358 324
    int corner_perm_num = TablebaseHelpers.computePermutationNum(corner_perm);
359 325
    int edge_perm_num = TablebaseHelpers.computePermutationNum(edge_perm7);
src/main/java/org/distorted/objectlib/tablebases/TablebasesAbstract.java
598 598
    return false;
599 599
    }
600 600

  
601
///////////////////////////////////////////////////////////////////////////////////////////////////
602

  
603
  public void testPruning(int level)
604
    {
605
    for( int supp : PruningTable.SUPPORTED )
606
      {
607
      PruningTable table = new PruningTable(mTablebase, level, supp);
608
      int size = mTablebase.getSize();
609

  
610
      StringBuilder sb = new StringBuilder();
611
      int num = 0;
612

  
613
      for(int i=0; i<size; i++)
614
        {
615
        if (table.contains(i))
616
          {
617
          if ((num % 10) == 0) sb.append("\n");
618
          num++;
619
          sb.append(i);
620
          sb.append(' ');
621
          }
622
        }
623

  
624
      android.util.Log.e("D", "numbers: " + sb);
625
      }
626
    }
627

  
628 601
///////////////////////////////////////////////////////////////////////////////////////////////////
629 602

  
630 603
  public void test()
631 604
    {
632
    int[] q1= {0,0,0,0,1,1,1,1, 0,0,0,0,1,1,1,1, 0,0};
633
    int index = getIndex(q1);
634
    int[] q2= getQuats(index);
605
    int index1= 89894;
606
    int index2= 735014;
607

  
608
    int[] q1= getQuats(index1);
609
    int[] q2= getQuats(index2);
635 610

  
636 611
    TablebaseHelpers.displayTable(q1, "QUATS1");
637 612
    TablebaseHelpers.displayTable(q2, "QUATS2");
638
    android.util.Log.e("D", "index="+index);
613

  
614
    int index3 = getIndex(q1);
615
    int index4 = getIndex(q2);
616

  
617
    android.util.Log.e("D", "index3="+index3+" index4="+index4);
639 618
    }
640 619
}

Also available in: Unified diff