Project

General

Profile

« Previous | Next » 

Revision 8ed251d6

Added by Leszek Koltunski about 1 year ago

Progress with the Pyraminx Diamond solver.

View differences:

src/main/java/org/distorted/objectlib/tablebases/TBPyraminxDiamond.java
21 21
{
22 22
  private static final int[][] CORNER_QUATS =
23 23
      {
24
          {0,0,0,0},
25
          {0,0,0,0},
26
          {0,0,0,0},
27
          {0,0,0,0},
28
          {0,0,0,0},
29
          {0,0,0,0},
24
          {0,6,5,4},
25
          {0,4,5,6},
26
          {0,3,2,1},
27
          {0,9,8,7},
28
          {0,7,8,9},
29
          {0,1,2,3},
30 30
      };
31 31

  
32
  private static final int[][] CENTER_QUATS =
32
  private static final int[][][] CENTER_QUATS =
33 33
      {
34
          {0,0,0,0,0,0,0,0},
35
          {0,0,0,0,0,0,0,0},
36
          {0,0,0,0,0,0,0,0},
37
          {0,0,0,0,0,0,0,0},
38
          {0,0,0,0,0,0,0,0},
39
          {0,0,0,0,0,0,0,0},
40
          {0,0,0,0,0,0,0,0},
41
          {0,0,0,0,0,0,0,0},
34
          { {21,15, 0}, {10,13, 5}, {17, 9, 3}, {16,18,11}, {19, 1, 6}, { 2,12,23}, { 7,14, 4}, { 8,20,22} },
35
          { { 5,23,20}, { 0,22,12}, {19,16,14}, { 7,17, 1}, { 4,11, 9}, {10, 8,15}, { 6, 3,18}, {21, 2,13} },
36
          { { 1,17, 7}, {14,16,19}, { 0,12,22}, { 5,20,23}, {13, 2,21}, { 6,18, 3}, {15, 8,10}, { 4, 9,11} },
37
          { {18,11,16}, { 9, 3,17}, { 5,10,13}, { 0,21,15}, {20,22, 8}, { 4, 7,14}, {12,23, 2}, { 6,19, 1} },
38
          { { 4,19, 3}, { 6, 7,11}, {15, 2,20}, {13, 8,12}, { 0,10,23}, { 1,16, 9}, { 5,21,22}, {14,17,18} },
39
          { {10, 2,22}, {21, 8,23}, { 4, 1,18}, { 6,14, 9}, { 7,16, 3}, { 0,13,20}, {19,17,11}, { 5,15,12} },
40
          { { 6,14, 9}, { 4, 1,18}, {21, 8,23}, {10, 2,22}, { 5,15,12}, {19,17,11}, { 0,13,20}, { 7,16, 3} },
41
          { {12, 8,13}, {20, 2,15}, { 6,11, 7}, { 4, 3,19}, {18,17,14}, { 5,22,21}, { 9,16, 1}, { 0,23,10} },
42 42
      };
43 43

  
44 44
///////////////////////////////////////////////////////////////////////////////////////////////////
......
142 142

  
143 143
///////////////////////////////////////////////////////////////////////////////////////////////////
144 144

  
145
  private int findIndex(int[] table, int entry)
145
  private int findIndex1(int[] table, int entry)
146 146
    {
147 147
    int len = table.length;
148 148

  
......
152 152
    return -1;
153 153
    }
154 154

  
155
///////////////////////////////////////////////////////////////////////////////////////////////////
156

  
157
  private int findIndex2(int[][] table, int entry)
158
    {
159
    int len = table.length;
160

  
161
    for(int i=0; i<len; i++)
162
      {
163
      int[] t = table[i];
164
      if( t[0]==entry || t[1]==entry || t[2]==entry ) return i;
165
      }
166

  
167
    return -1;
168
    }
169

  
155 170
///////////////////////////////////////////////////////////////////////////////////////////////////
156 171

  
157 172
  public int[] getQuats(int index)
......
172 187
    twist[5] = 2*(1-total_twist) + (total%2);
173 188

  
174 189
    for(int i=0; i<6; i++) quats[i  ] = CORNER_QUATS[i][twist[i]];
175
    for(int i=0; i<8; i++) quats[i+6] = CENTER_QUATS[i][perm[i]];
190
    for(int i=0; i<8; i++) quats[i+6] = CENTER_QUATS[i][perm[i]][0];
176 191

  
177 192
    return quats;
178 193
    }
......
184 199
    int[] twist = new int[6];
185 200
    int[] perm  = new int[8];
186 201

  
187
    for(int i=0; i<6; i++) twist[i] = findIndex(CORNER_QUATS[i],quats[i]);
188
    for(int i=0; i<8; i++) perm[i]  = findIndex(CENTER_QUATS[i],quats[i]);
202
    for(int i=0; i<6; i++) twist[i] = findIndex1(CORNER_QUATS[i],quats[i]);
203
    for(int i=0; i<8; i++) perm[i]  = findIndex2(CENTER_QUATS[i],quats[i]);
189 204

  
190 205
    int centers_perm_num = TablebaseHelpers.computePermutationNum(perm);
191 206
    int total_twist = twist[0]+ 4*(twist[1]+ 4*(twist[2]+ 4*(twist[3]+ 4*(twist[4]+ 4*(twist[5]>1 ? 0:1)))));

Also available in: Unified diff