Project

General

Profile

« Previous | Next » 

Revision bc008758

Added by Leszek Koltunski about 2 years ago

Crazy Planets: progress

View differences:

src/main/java/org/distorted/objectlib/main/Cubit.java
34 34
  private final int mNumAxis;
35 35
  private final int mLen;
36 36
  private final int[] mRotationRow;
37
  private final int mOrigCubitIndex;
38
  private int mCubitIndex;
37 39
  private TwistyObject mParent;
38 40

  
39 41
  int mQuatIndex;
40 42

  
41 43
///////////////////////////////////////////////////////////////////////////////////////////////////
42 44

  
43
  Cubit(TwistyObject parent, float[] position, int numAxis)
45
  Cubit(TwistyObject parent, float[] position, int numAxis, int cubitIndex)
44 46
    {
45 47
    mQuatIndex= 0;
46 48
    mParent   = parent;
47 49
    mLen      = position.length;
48 50

  
51
    mCubitIndex      = cubitIndex;
52
    mOrigCubitIndex  = cubitIndex;
49 53
    mOrigPosition    = new float[mLen];
50 54
    mCurrentPosition = new float[mLen];
51 55
    mTmp             = new float[4];
......
121 125
    {
122 126
    for(int i=0; i<mNumAxis; i++)
123 127
      {
124
      mRotationRow[i] = mParent.computeRow(mCurrentPosition,i);
128
      mRotationRow[i] = mParent.computeRow(mCurrentPosition,i,mCubitIndex);
125 129
      }
126 130
    }
127 131

  
......
139 143
      mCurrentPosition[3*i+1] = mTmp[1];
140 144
      mCurrentPosition[3*i+2] = mTmp[2];
141 145

  
142
      mParent.clampPos(mCurrentPosition, 3*i);
146
      mCubitIndex = mParent.clampPos(mCurrentPosition, 3*i);
143 147
      }
144 148

  
145 149
    computeRotationRow();
......
202 206
  void solve()
203 207
    {
204 208
    mQuatIndex = 0;
209
    mCubitIndex= mOrigCubitIndex;
205 210
    System.arraycopy(mOrigPosition, 0, mCurrentPosition, 0, mCurrentPosition.length);
206 211
    computeRotationRow();
207 212
    }
src/main/java/org/distorted/objectlib/main/ObjectType.java
79 79
  SKEW_3 ( TwistySkewb.class         , 21, R.drawable.skew_3, true, new InitData(new int[] {3,3,3,3})),
80 80
  CONT_2 ( TwistyContainer.class     , 12, R.drawable.cont_2, true, new InitData(new int[] {2,2,2,2})),
81 81

  
82
  CRA1_3 ( TwistyCrazy.class         , 22, R.drawable.cra1_3, true, new InitData(new int[] {3,3,3})),
82
  CRA1_3 ( TwistyCrazy.class         , 22, R.drawable.cra1_3, true, new InitData(new int[] {3,3,3}, TwistyCrazy.CRAZY  )),
83
  CRA2_3 ( TwistyCrazy.class         , 22, R.drawable.cra1_3, true, new InitData(new int[] {3,3,3}, TwistyCrazy.MERCURY)),
84
  CRA3_3 ( TwistyCrazy.class         , 22, R.drawable.cra1_3, true, new InitData(new int[] {3,3,3}, TwistyCrazy.VENUS  )),
85
  CRA4_3 ( TwistyCrazy.class         , 22, R.drawable.cra1_3, true, new InitData(new int[] {3,3,3}, TwistyCrazy.EARTH  )),
86
  CRA5_3 ( TwistyCrazy.class         , 22, R.drawable.cra1_3, true, new InitData(new int[] {3,3,3}, TwistyCrazy.MARS   )),
87
  CRA6_3 ( TwistyCrazy.class         , 22, R.drawable.cra1_3, true, new InitData(new int[] {3,3,3}, TwistyCrazy.JUPITER)),
88
  CRA7_3 ( TwistyCrazy.class         , 22, R.drawable.cra1_3, true, new InitData(new int[] {3,3,3}, TwistyCrazy.SATURN )),
89
  CRA8_3 ( TwistyCrazy.class         , 22, R.drawable.cra1_3, true, new InitData(new int[] {3,3,3}, TwistyCrazy.URANUS )),
90
  CRA9_3 ( TwistyCrazy.class         , 22, R.drawable.cra1_3, true, new InitData(new int[] {3,3,3}, TwistyCrazy.NEPTUNE)),
83 91

  
84 92
  VOID_3 ( TwistyVoid.class          , 17, R.drawable.void_3, false, new InitData(new int[] {3,3,3})),        // wasDownloadableButNowIsBuiltIn()
85 93
  CRYS_3 ( TwistyCrystal.class       , 27, R.drawable.crys_3, false, new InitData(new int[] {3,3,3,3,3,3})),  // function!
src/main/java/org/distorted/objectlib/main/TwistyObject.java
151 151
  private int[][] mBasicAngles;
152 152
  private int mIconMode;
153 153
  private final InitData mInitData;
154
  private float[][] mRowOffset;
154 155

  
155 156
  //////////////////// SOLVED1 ////////////////////////
156 157

  
......
209 210
    mNumCubits = mOrigPos.length;
210 211
    mNumFaceColors = getNumFaceColors();
211 212
    mNumAxis = mAxis.length;
213
    mRowOffset = getRowOffset();
212 214

  
213 215
    int scramblingType = getScrambleType();
214 216
    ScrambleState[] states = getScrambleStates();
......
409 411

  
410 412
    for(int i=0; i<mNumCubits; i++)
411 413
      {
412
      mCubits[i] = new Cubit(this,mOrigPos[i], mNumAxis);
414
      mCubits[i] = new Cubit(this,mOrigPos[i], mNumAxis,i);
413 415
      setCubitQuat(i,mCubits[i].computeAssociation(),0);
414 416
      }
415 417
    }
......
711 713
    return null;
712 714
    }
713 715

  
716
///////////////////////////////////////////////////////////////////////////////////////////////////
717

  
718
  public float[][] getRowOffset()
719
    {
720
    return new float[mNumCubits][3];
721
    }
722

  
714 723
///////////////////////////////////////////////////////////////////////////////////////////////////
715 724

  
716 725
  public int[][] getSolvedQuats()
......
932 941

  
933 942
///////////////////////////////////////////////////////////////////////////////////////////////////
934 943

  
935
  int computeRow(float[] pos, int axisIndex)
944
  int computeRow(float[] pos, int axisIndex, int cubitIndex)
936 945
    {
937 946
    int ret=0;
938 947
    int len = pos.length / 3;
......
942 951
    float axisZ = axis.get2();
943 952
    float casted;
944 953

  
954
    float xoff = mRowOffset[cubitIndex][0];
955
    float yoff = mRowOffset[cubitIndex][1];
956
    float zoff = mRowOffset[cubitIndex][2];
957

  
945 958
    for(int i=0; i<len; i++)
946 959
      {
947
      casted = pos[3*i]*axisX + pos[3*i+1]*axisY + pos[3*i+2]*axisZ;
960
      casted = (pos[3*i]+xoff)*axisX + (pos[3*i+1]+yoff)*axisY + (pos[3*i+2]+zoff)*axisZ;
948 961
      ret |= computeSingleRow(axisIndex,casted);
949 962
      }
950 963

  
......
1076 1089
// Clamp all rotated positions to one of those original ones to avoid accumulating errors.
1077 1090
// Do so only if minimal Error is appropriately low (shape-shifting puzzles - Square-1)
1078 1091

  
1079
  void clampPos(float[] pos, int offset)
1092
  int clampPos(float[] pos, int offset)
1080 1093
    {
1081 1094
    float currError, minError = Float.MAX_VALUE;
1082 1095
    int minErrorIndex1 = -1;
......
1114 1127
      pos[offset  ] = mOrigPos[minErrorIndex1][3*minErrorIndex2  ];
1115 1128
      pos[offset+1] = mOrigPos[minErrorIndex1][3*minErrorIndex2+1];
1116 1129
      pos[offset+2] = mOrigPos[minErrorIndex1][3*minErrorIndex2+2];
1130
      return minErrorIndex1;
1117 1131
      }
1132

  
1133
    return 0;
1118 1134
    }
1119 1135

  
1120 1136
///////////////////////////////////////////////////////////////////////////////////////////////////
......
1467 1483

  
1468 1484
      for(int s=0; s<numStickers; s++)
1469 1485
        {
1470
        float scale = mStickerScales[s];
1486
        float scale = mStickerScales.length>s ? mStickerScales[s] : 1.0f;
1471 1487
        float radius = rad / scale;
1472 1488
        float stroke = str / scale;
1473 1489
        int len = mStickerCoords[s].length/2;
src/main/java/org/distorted/objectlib/objects/TwistyCrazy.java
39 39

  
40 40
public class TwistyCrazy extends ShapeHexahedron
41 41
{
42
  public static final int CRAZY   = 0x3f;
43
  public static final int MERCURY = 0x2f;
44
  public static final int VENUS   = 0x0f;
45
  public static final int EARTH   = 0x2b;
46
  public static final int MARS    = 0x0b;
47
  public static final int JUPITER = 0x10;
48
  public static final int SATURN  = 0x30;
49
  public static final int URANUS  = 0x14;
50
  public static final int NEPTUNE = 0x16;
51

  
42 52
  private static final float DIAMETER_RATIO = 0.75f;
53
  private static final float DIFF = 0.6f;
43 54
  private static final int NUMBER_CORNER_SEGMENTS = 4;
44 55
  private static final int NUMBER_EDGE_SEGMENTS = 4;
45 56

  
......
86 97
      };
87 98
    }
88 99

  
100
///////////////////////////////////////////////////////////////////////////////////////////////////
101

  
102
  @Override
103
  public float[][] getRowOffset()
104
    {
105
    int numCubits = mPositions.length;
106
    float[][] offset = new float[numCubits][3];
107

  
108
    int[] indices = new int[] {-3,3,-2,2,-1,1,
109
                               -3,1,3,-1,-3,1,3,-1,-1,2,1,-2,-1,2,1,-2,-2,3,2,-3,-2,3,2,-3,
110
                               -3,3,-3,3,-3,3,-3,3,-2,2,-2,2,-2,2,-2,2,-1,1,-1,1,-1,1,-1,1 };
111

  
112
    int param = getInitData().getParam();
113

  
114
    int R = (param>>5)&0x1;
115
    int L = (param>>4)&0x1;
116
    int U = (param>>3)&0x1;
117
    int D = (param>>2)&0x1;
118
    int F = (param>>1)&0x1;
119
    int B = (param   )&0x1;
120

  
121
    for(int i=20; i<74; i++)
122
      {
123
      switch(indices[i-20])
124
        {
125
        case -3: offset[i][2] = -DIFF*F; break;
126
        case -2: offset[i][1] = -DIFF*U; break;
127
        case -1: offset[i][0] = -DIFF*R; break;
128
        case  1: offset[i][0] =  DIFF*L; break;
129
        case  2: offset[i][1] =  DIFF*D; break;
130
        case  3: offset[i][2] =  DIFF*B; break;
131
        }
132
      }
133

  
134
    return offset;
135
    }
136

  
89 137
///////////////////////////////////////////////////////////////////////////////////////////////////
90 138
// Normal 3x3
91 139

  
......
208 256
             { 0.0f,-1.0f, 1.0f},
209 257
             { 0.0f,-1.0f,-1.0f},
210 258

  
211
             { 0.0f, 0.0f, 0.0f},
212
             { 0.0f, 0.0f, 0.0f},
213
             { 0.0f, 0.0f, 0.0f},
214
             { 0.0f, 0.0f, 0.0f},
215
             { 0.0f, 0.0f, 0.0f},
216
             { 0.0f, 0.0f, 0.0f},
217

  
218
             { 0.0f, 1.0f, 0.0f},
219
             { 0.0f, 1.0f, 0.0f},
220
             { 0.0f, 1.0f, 0.0f},
221
             { 0.0f, 1.0f, 0.0f},
222
             { 0.0f,-1.0f, 0.0f},
223
             { 0.0f,-1.0f, 0.0f},
224
             { 0.0f,-1.0f, 0.0f},
225
             { 0.0f,-1.0f, 0.0f},
226
             { 0.0f, 0.0f, 1.0f},
227
             { 0.0f, 0.0f, 1.0f},
228
             { 0.0f, 0.0f, 1.0f},
229
             { 0.0f, 0.0f, 1.0f},
230
             { 0.0f, 0.0f,-1.0f},
231
             { 0.0f, 0.0f,-1.0f},
232
             { 0.0f, 0.0f,-1.0f},
233
             { 0.0f, 0.0f,-1.0f},
234
             { 1.0f, 0.0f, 0.0f},
235
             { 1.0f, 0.0f, 0.0f},
236
             { 1.0f, 0.0f, 0.0f},
237
             { 1.0f, 0.0f, 0.0f},
238
             {-1.0f, 0.0f, 0.0f},
239
             {-1.0f, 0.0f, 0.0f},
240
             {-1.0f, 0.0f, 0.0f},
241
             {-1.0f, 0.0f, 0.0f},
242

  
243
             { 1.0f, 1.0f, 0.0f},
244
             { 1.0f, 1.0f, 0.0f},
245
             { 1.0f,-1.0f, 0.0f},
246
             { 1.0f,-1.0f, 0.0f},
247
             { 1.0f, 0.0f, 1.0f},
248
             { 1.0f, 0.0f, 1.0f},
249
             { 1.0f, 0.0f,-1.0f},
250
             { 1.0f, 0.0f,-1.0f},
251
             {-1.0f, 1.0f, 0.0f},
252
             {-1.0f, 1.0f, 0.0f},
253
             {-1.0f,-1.0f, 0.0f},
254
             {-1.0f,-1.0f, 0.0f},
255
             {-1.0f, 0.0f, 1.0f},
256
             {-1.0f, 0.0f, 1.0f},
257
             {-1.0f, 0.0f,-1.0f},
258
             {-1.0f, 0.0f,-1.0f},
259
             { 0.0f, 1.0f, 1.0f},
260
             { 0.0f, 1.0f, 1.0f},
261
             { 0.0f, 1.0f,-1.0f},
262
             { 0.0f, 1.0f,-1.0f},
263
             { 0.0f,-1.0f, 1.0f},
264
             { 0.0f,-1.0f, 1.0f},
265
             { 0.0f,-1.0f,-1.0f},
266
             { 0.0f,-1.0f,-1.0f},
259
             { 0.0f, 0.0f, DIFF},
260
             { 0.0f, 0.0f,-DIFF},
261
             { 0.0f, DIFF, 0.0f},
262
             { 0.0f,-DIFF, 0.0f},
263
             { DIFF, 0.0f, 0.0f},
264
             {-DIFF, 0.0f, 0.0f},
265

  
266
             { 0.0f, 1.0f, DIFF},
267
             {-DIFF, 1.0f, 0.0f},
268
             { 0.0f, 1.0f,-DIFF},
269
             { DIFF, 1.0f, 0.0f},
270
             { 0.0f,-1.0f, DIFF},
271
             {-DIFF,-1.0f, 0.0f},
272
             { 0.0f,-1.0f,-DIFF},
273
             { DIFF,-1.0f, 0.0f},
274
             { DIFF, 0.0f, 1.0f},
275
             { 0.0f,-DIFF, 1.0f},
276
             {-DIFF, 0.0f, 1.0f},
277
             { 0.0f, DIFF, 1.0f},
278
             { DIFF, 0.0f,-1.0f},
279
             { 0.0f,-DIFF,-1.0f},
280
             {-DIFF, 0.0f,-1.0f},
281
             { 0.0f, DIFF,-1.0f},
282
             { 1.0f, DIFF, 0.0f},
283
             { 1.0f, 0.0f,-DIFF},
284
             { 1.0f,-DIFF, 0.0f},
285
             { 1.0f, 0.0f, DIFF},
286
             {-1.0f, DIFF, 0.0f},
287
             {-1.0f, 0.0f,-DIFF},
288
             {-1.0f,-DIFF, 0.0f},
289
             {-1.0f, 0.0f, DIFF},
290

  
291
             { 1.0f, 1.0f, DIFF},
292
             { 1.0f, 1.0f,-DIFF},
293
             { 1.0f,-1.0f, DIFF},
294
             { 1.0f,-1.0f,-DIFF},
295
             {-1.0f, 1.0f, DIFF},
296
             {-1.0f, 1.0f,-DIFF},
297
             {-1.0f,-1.0f, DIFF},
298
             {-1.0f,-1.0f,-DIFF},
299
             { 1.0f, DIFF, 1.0f},
300
             { 1.0f,-DIFF, 1.0f},
301
             { 1.0f, DIFF,-1.0f},
302
             { 1.0f,-DIFF,-1.0f},
303
             {-1.0f, DIFF, 1.0f},
304
             {-1.0f,-DIFF, 1.0f},
305
             {-1.0f, DIFF,-1.0f},
306
             {-1.0f,-DIFF,-1.0f},
307
             { DIFF, 1.0f, 1.0f},
308
             {-DIFF, 1.0f, 1.0f},
309
             { DIFF, 1.0f,-1.0f},
310
             {-DIFF, 1.0f,-1.0f},
311
             { DIFF,-1.0f, 1.0f},
312
             {-DIFF,-1.0f, 1.0f},
313
             { DIFF,-1.0f,-1.0f},
314
             {-DIFF,-1.0f,-1.0f},
267 315
         };
268 316
      }
269 317

  
......
277 325
    if( mQuatIndex==null ) mQuatIndex = new int[] { 0,1,17,22,4,5,8,19,
278 326
                                                    6,17,7,12,4,16,9,10,0,5,3,2,
279 327
                                                    0,2,1,3,6,4,
280
                                                    0,4,5,6, 2,8,16,17, 3,14,20,21, 1,10,11,12, 7,13,18,22, 9,15,19,23,
281
                                                    0,18,2,7, 3,13,1,22, 5,9,8,19, 14,23,11,15, 4,21,6,10, 17,20,12,16 };
328
                                                    0,4,5,6, 8,16,2,17, 21,3,20,14, 12,11,10,1, 13,18,22,7, 15,19,23,9,
329
                                                    0,18,7,2, 9,5,8,19, 13,3,1,22, 14,23,15,11, 21,4,6,10, 17,20,12,16 };
282 330
    return mObjectQuats[mQuatIndex[cubit]];
283 331
    }
284 332

  
......
674 722
      {
675 723
      case 0: return getCornerShape();
676 724
      case 1: return getEdgeShape();
677
      case 2: return getCenterShape(1.0f);
678
      case 3: return getBigCircleShape(1.0f);
679
      case 4: return getSmallCircleShape(1.02f);
725
      case 2: return getCenterShape(1.0f-DIFF);
726
      case 3: return getBigCircleShape(1.0f-DIFF);
727
      case 4: return getSmallCircleShape(1.02f-DIFF);
680 728
      }
681 729

  
682 730
    return null;
......
793 841

  
794 842
  public float getStickerRadius()
795 843
    {
796
    return 0.05f;
844
    return 0.07f;
797 845
    }
798 846

  
799 847
///////////////////////////////////////////////////////////////////////////////////////////////////
......
807 855

  
808 856
  public float[][] getStickerAngles()
809 857
    {
810
    float D = (float)(Math.PI/8);
811
    return new float[][] { { 0,0,0,-D,0 },{ 0,0,0,-D },{0,0,0,0},{ 0,0,0,D },{ 0,0,D } };
858
    float D1 = (float)(Math.PI/8);
859
    float D2 = (float)(Math.PI/6);
860
    return new float[][] { { 0,0,0,-D1,0 },{ 0,0,0,-D2 },{0,0,0,0},{ 0,0,0,D2 },{ 0,0,D1 } };
812 861
    }
813 862

  
814 863
///////////////////////////////////////////////////////////////////////////////////////////////////
......
836 885

  
837 886
  public String getShortName()
838 887
    {
839
    return ObjectType.CRA1_3.name();
888
    int param = getInitData().getParam();
889

  
890
    switch(param)
891
      {
892
      case CRAZY  : return ObjectType.CRA1_3.name();
893
      case MERCURY: return ObjectType.CRA2_3.name();
894
      case VENUS  : return ObjectType.CRA3_3.name();
895
      case EARTH  : return ObjectType.CRA4_3.name();
896
      case MARS   : return ObjectType.CRA5_3.name();
897
      case JUPITER: return ObjectType.CRA6_3.name();
898
      case SATURN : return ObjectType.CRA7_3.name();
899
      case URANUS : return ObjectType.CRA8_3.name();
900
      case NEPTUNE: return ObjectType.CRA9_3.name();
901
      }
902

  
903
    return null;
840 904
    }
841 905

  
842 906
///////////////////////////////////////////////////////////////////////////////////////////////////
843 907

  
844 908
  public ObjectSignature getSignature()
845 909
    {
846
    return new ObjectSignature(ObjectType.CRA1_3);
910
    int param = getInitData().getParam();
911

  
912
    switch(param)
913
      {
914
      case CRAZY  : return new ObjectSignature(ObjectType.CRA1_3);
915
      case MERCURY: return new ObjectSignature(ObjectType.CRA2_3);
916
      case VENUS  : return new ObjectSignature(ObjectType.CRA3_3);
917
      case EARTH  : return new ObjectSignature(ObjectType.CRA4_3);
918
      case MARS   : return new ObjectSignature(ObjectType.CRA5_3);
919
      case JUPITER: return new ObjectSignature(ObjectType.CRA6_3);
920
      case SATURN : return new ObjectSignature(ObjectType.CRA7_3);
921
      case URANUS : return new ObjectSignature(ObjectType.CRA8_3);
922
      case NEPTUNE: return new ObjectSignature(ObjectType.CRA9_3);
923
      }
924

  
925
    return null;
847 926
    }
848 927

  
849 928
///////////////////////////////////////////////////////////////////////////////////////////////////
850 929

  
851 930
  public String getObjectName()
852 931
    {
853
    return "Crazy 3x3";
932
    int param = getInitData().getParam();
933

  
934
    switch(param)
935
      {
936
      case CRAZY  : return "Crazy 3x3";
937
      case MERCURY: return "Crazy Plus Mercury";
938
      case VENUS  : return "Crazy Plus Venus";
939
      case EARTH  : return "Crazy Plus Earth";
940
      case MARS   : return "Crazy Plus Mars";
941
      case JUPITER: return "Crazy Plus Jupiter";
942
      case SATURN : return "Crazy Plus Saturn";
943
      case URANUS : return "Crazy Plus Uranus";
944
      case NEPTUNE: return "Crazy Plus Neptune";
945
      }
946

  
947
    return null;
854 948
    }
855 949

  
856 950
///////////////////////////////////////////////////////////////////////////////////////////////////
857 951

  
858 952
  public String getInventor()
859 953
    {
860
    return "Aleh Hladzilin";
954

  
955
    return getInitData().getParam()==CRAZY ? "Aleh Hladzilin" : "Daqing Bao";
861 956
    }
862 957

  
863 958
///////////////////////////////////////////////////////////////////////////////////////////////////
864 959

  
865 960
  public int getYearOfInvention()
866 961
    {
867
    return 2008;
962
    return getInitData().getParam()==CRAZY ? 2008 : 2010;
868 963
    }
869 964

  
870 965
///////////////////////////////////////////////////////////////////////////////////////////////////
871 966

  
872 967
  public int getComplexity()
873 968
    {
969
    int param = getInitData().getParam();
970

  
971
    switch(param)
972
      {
973
      case CRAZY  : return 2;
974
      case MERCURY: return 4;
975
      case VENUS  : return 4;
976
      case EARTH  : return 4;
977
      case MARS   : return 4;
978
      case JUPITER: return 3;
979
      case SATURN : return 4;
980
      case URANUS : return 3;
981
      case NEPTUNE: return 4;
982
      }
983

  
874 984
    return 2;
875 985
    }
876 986

  
......
878 988

  
879 989
  public String[][] getTutorials()
880 990
    {
881
    return new String[][]{
882
                          {"gb","7xUE8ond_Mg","Crazy 3x3x3 Cube Tutorial","SuperAntoniovivaldi"},
883
                         };
991
    int param = getInitData().getParam();
992

  
993
    switch(param)
994
      {
995
      case CRAZY  : return new String[][]{
996
                                          {"gb","7xUE8ond_Mg","Crazy 3x3x3 Cube Tutorial","SuperAntoniovivaldi"},
997
                                          {"vn","N_AWJjHzqk0","Circle Crazy 3x3 Tutorial","VĂN CÔNG TÙNG"},
998
                                         };
999
      case MERCURY: return new String[][]{
1000
                                          {"gb","SeLGhxZP0E8","Crazy 3x3 Plus Mercury 1/3","SuperAntoniovivaldi"},
1001
                                          {"gb","nTBabfkdMe8","Crazy 3x3 Plus Mercury 2/3","SuperAntoniovivaldi"},
1002
                                          {"gb","Hd87z-VpTgM","Crazy 3x3 Plus Mercury 3a/3","SuperAntoniovivaldi"},
1003
                                          {"gb","MeMJ21vJLBc","Crazy 3x3 Plus Mercury 3b/3","SuperAntoniovivaldi"},
1004
                                          {"gb","s-kUXY5o5AQ","Crazy Mercury Plus Tutorial","twistypuzzling"},
1005
                                          {"es","LYMTrcGiAho","Crazy 3x3 Plus Mercurio","QBAndo"},
1006
                                          {"ru","2jtTsBwu3WY","Как собрать Crazy Mercury","RBcuber"},
1007
                                          {"fr","uxW652tv3_c","Solution crazy 3x3x3 Mercure 1/4","Laurent Boss"},
1008
                                          {"fr","QKuesX-0DaU","Solution crazy 3x3x3 Mercure 2a/4","Laurent Boss"},
1009
                                          {"fr","vDnAy1qYSCc","Solution crazy 3x3x3 Mercure 2b/4","Laurent Boss"},
1010
                                          {"fr","_eEILlsLurc","Solution crazy 3x3x3 Mercure 3/4","Laurent Boss"},
1011
                                          {"fr","4D3V9c3u7so","Solution crazy 3x3x3 Mercure 4/4","Laurent Boss"},
1012
                                          {"br","bMuDIEemCkI","Resolver Crazy Mercurio 1/5","Rafael Cinoto"},
1013
                                          {"br","FPP_nvOsnIQ","Resolver Crazy Mercurio 2/5","Rafael Cinoto"},
1014
                                          {"br","ouz20eYDlLM","Resolver Crazy Mercurio 3/5","Rafael Cinoto"},
1015
                                          {"br","IDHXszSX-UQ","Resolver Crazy Mercurio 4/5","Rafael Cinoto"},
1016
                                          {"br","Wbq701nq900","Resolver Crazy Mercurio 5/5","Rafael Cinoto"},
1017
                                          {"kr","NYBrUY9ngnc","크레이지 333 수성 1/3","듀나메스 큐브 해법연구소"},
1018
                                          {"kr","snT8xxMb0E0","크레이지 333 수성 2/3","듀나메스 큐브 해법연구소"},
1019
                                          {"kr","Pbfm3FZy_3k","크레이지 333 수성 3/3","듀나메스 큐브 해법연구소"},
1020
                                          {"vn","_1Pn2nqDF3A","Crazy Mercury 3x3 Tutorial","VĂN CÔNG TÙNG"},
1021
                                         };
1022
      case VENUS  : return new String[][]{
1023
                                          {"gb","I4f7UngHofc","Crazy 3x3 Plus Venus 1/3","SuperAntoniovivaldi"},
1024
                                          {"gb","p57W1iBXa0k","Crazy 3x3 Plus Venus 2/3","SuperAntoniovivaldi"},
1025
                                          {"gb","IUQcgfgYW3A","Crazy 3x3 Plus Venus 3/3","SuperAntoniovivaldi"},
1026
                                          {"es","L_o5b6i6iQc","Crazy 3x3 Plus Venus","QBAndo"},
1027
                                          {"ru","e6rFPDlpBoI","Как собрать Crazy Venus","Илья Топор-Гилка"},
1028
                                          {"fr","Ccu2XugYAhw","Solution crazy 3x3x3 Venus 1/6","Laurent Boss"},
1029
                                          {"fr","sz5JjDsBB4c","Solution crazy 3x3x3 Venus 2/6","Laurent Boss"},
1030
                                          {"fr","ap_m3-xY7LU","Solution crazy 3x3x3 Venus 3/6","Laurent Boss"},
1031
                                          {"fr","BkV1dyWIH1Q","Solution crazy 3x3x3 Venus 4/6","Laurent Boss"},
1032
                                          {"fr","spO_rh09h9s","Solution crazy 3x3x3 Venus 5/6","Laurent Boss"},
1033
                                          {"fr","kEmXDJgO0B4","Solution crazy 3x3x3 Venus 6/6","Laurent Boss"},
1034
                                          {"br","i781Mf0Fuag","Resolver Crazy Venus 1/3","Rafael Cinoto"},
1035
                                          {"br","3m0eyKbLaQ4","Resolver Crazy Venus 2/3","Rafael Cinoto"},
1036
                                          {"br","nKamBHo7oxo","Resolver Crazy Venus 3/3","Rafael Cinoto"},
1037
                                          {"kr","hsWfqlOa4_0","크레이지 (Crazy) 333 금성 1/5","듀나메스 큐브 해법연구소"},
1038
                                          {"kr","Z2sJczk29kg","크레이지 (Crazy) 333 금성 2/5","듀나메스 큐브 해법연구소"},
1039
                                          {"kr","8r1la2KEiBo","크레이지 (Crazy) 333 금성 3/5","듀나메스 큐브 해법연구소"},
1040
                                          {"kr","S9IcRa5AQHk","크레이지 (Crazy) 333 금성 4/5","듀나메스 큐브 해법연구소"},
1041
                                          {"kr","fs78ZSlShm0","크레이지 (Crazy) 333 금성 3/5","듀나메스 큐브 해법연구소"},
1042
                                          {"vn","_fG3VIKUwNo","Crazy Venus 3x3 Tutorial","VĂN CÔNG TÙNG"},
1043
                                         };
1044
      case EARTH  : return new String[][]{
1045
                                          {"gb","brNQ6Nl1-Mw","Crazy 3x3 Plus Earth 1/4","SuperAntoniovivaldi"},
1046
                                          {"gb","-3RSoC5OZGc","Crazy 3x3 Plus Earth 2/4","SuperAntoniovivaldi"},
1047
                                          {"gb","ahuXWFLTKRg","Crazy 3x3 Plus Earth 3/4","SuperAntoniovivaldi"},
1048
                                          {"gb","Lwt-7XKesUg","Crazy 3x3 Plus Earth 4/4","SuperAntoniovivaldi"},
1049
                                          {"es","GFHcLpYF620","Crazy 3x3 Plus Tierra","QBAndo"},
1050
                                          {"ru","YmEoI0XI5E4","Как собрать Crazy Earth","Илья Топор-Гилка"},
1051
                                          {"fr","QT4T4JV-L44","Solution crazy 3x3x3 Terre 1/6","Laurent Boss"},
1052
                                          {"fr","8On3fbrG5aA","Solution crazy 3x3x3 Terre 2/6","Laurent Boss"},
1053
                                          {"fr","IPEvUnVumJg","Solution crazy 3x3x3 Terre 3/6","Laurent Boss"},
1054
                                          {"fr","0awyEJmfuMM","Solution crazy 3x3x3 Terre 4/6","Laurent Boss"},
1055
                                          {"fr","xLKGyRXuaGs","Solution crazy 3x3x3 Terre 5/6","Laurent Boss"},
1056
                                          {"fr","CcunFHHhQ7g","Solution crazy 3x3x3 Terre 6/6","Laurent Boss"},
1057
                                          {"kr","4YBV9TnAzlg","크레이지(Crazy) 333 지구 1/5","듀나메스 큐브 해법연구소"},
1058
                                          {"kr","uWbAgUq-IqU","크레이지(Crazy) 333 지구 2/5","듀나메스 큐브 해법연구소"},
1059
                                          {"kr","glZqE9hQXK8","크레이지(Crazy) 333 지구 3/5","듀나메스 큐브 해법연구소"},
1060
                                          {"kr","WF2RGp8E97k","크레이지(Crazy) 333 지구 4/5","듀나메스 큐브 해법연구소"},
1061
                                          {"kr","RC-w26wLtQg","크레이지(Crazy) 333 지구 5/5","듀나메스 큐브 해법연구소"},
1062
                                          {"vn","MsFqHGuWspE","Crazy Earth 3x3 Tutorial","VĂN CÔNG TÙNG"},
1063
                                         };
1064
      case MARS   : return new String[][]{
1065
                                          {"gb","AJC0dZx2T-M","Crazy 3x3 Plus Mars 1/4","SuperAntoniovivaldi"},
1066
                                          {"gb","BcrYXklwEow","Crazy 3x3 Plus Mars 2/4","SuperAntoniovivaldi"},
1067
                                          {"gb","L_Y0qRG8F-0","Crazy 3x3 Plus Mars 3/4","SuperAntoniovivaldi"},
1068
                                          {"gb","PRyeKOV0Pbg","Crazy 3x3 Plus Mars 4/4","SuperAntoniovivaldi"},
1069
                                          {"es","P5NsxqMx9Bo","Crazy 3x3 Plus Marte","QBAndo"},
1070
                                          {"ru","syzb9hOojEs","Как собрать Crazy Mars","Илья Топор-Гилка"},
1071
                                          {"fr","tSqak16XJjw","Solution crazy 3x3x3 Mars 1/6","Laurent Boss"},
1072
                                          {"fr","Dm47WsF8OZg","Solution crazy 3x3x3 Mars 2/6","Laurent Boss"},
1073
                                          {"fr","gl-VL1NAslY","Solution crazy 3x3x3 Mars 3/6","Laurent Boss"},
1074
                                          {"fr","TlgsnVdkNh4","Solution crazy 3x3x3 Mars 4/6","Laurent Boss"},
1075
                                          {"fr","XxVeGY1IYIc","Solution crazy 3x3x3 Mars 5/6","Laurent Boss"},
1076
                                          {"fr","aK9YYEYMsyA","Solution crazy 3x3x3 Mars 6/6","Laurent Boss"},
1077
                                          {"kr","QKu2p9nNxFk","크레이지 333 화성 1/4","듀나메스 큐브 해법연구소"},
1078
                                          {"kr","f5YYqm6PPms","크레이지 333 화성 2a/4","듀나메스 큐브 해법연구소"},
1079
                                          {"kr","nmNxrpvucIg","크레이지 333 화성 2b/4","듀나메스 큐브 해법연구소"},
1080
                                          {"kr","rJLpMPCEc_s","크레이지 333 화성 3/4","듀나메스 큐브 해법연구소"},
1081
                                          {"kr","bBRAfOvUu8M","크레이지 333 화성 4/4","듀나메스 큐브 해법연구소"},
1082
                                          {"vn","lzw0Gfi-dM8","Crazy Mars 3x3 Tutorial","VĂN CÔNG TÙNG"},
1083
                                         };
1084
      case JUPITER: return new String[][]{
1085
                                          {"gb","HMnbVoOPk5E","Crazy 3x3 Plus Jupiter 1/2","SuperAntoniovivaldi"},
1086
                                          {"gb","Nw-LBWVu7yM","Crazy 3x3 Plus Jupiter 2/2","SuperAntoniovivaldi"},
1087
                                          {"es","p2HTOQZNfx4","Crazy 3x3 Plus Jupiter","QBAndo"},
1088
                                          {"ru","PGiYCgJYPAY","Как собрать Crazy Jupiter","RBcuber"},
1089
                                          {"fr","sKi_cXmywVs","Solution crazy 3x3x3 Jupiter 1/3","Laurent Boss"},
1090
                                          {"fr","HYnQCifSzFY","Solution crazy 3x3x3 Jupiter 2/3","Laurent Boss"},
1091
                                          {"fr","DNfV8gnaRXw","Solution crazy 3x3x3 Jupiter 3/3","Laurent Boss"},
1092
                                          {"pl","eJmQ50vcQcU","Crazy 3x3 Jupiter TUTORIAL PL","MrUK"},
1093
                                          {"br","pwYhThiSKLQ","Resolver Crazy Jupiter 1/2","Rafael Cinoto"},
1094
                                          {"br","VhuBtUU866U","Resolver Crazy Jupiter 2/2","Rafael Cinoto"},
1095
                                          {"kr","WQ3ad3DrBwY","크레이지 333 목성 1/2","듀나메스 큐브 해법연구소"},
1096
                                          {"kr","3LLL34HsqUs","크레이지 333 목성 2/2","듀나메스 큐브 해법연구소"},
1097
                                          {"vn","QH4ywmKNGVo","Jupiter Crazy Plus Tutorial","VĂN CÔNG TÙNG"},
1098
                                         };
1099
      case SATURN : return new String[][]{
1100
                                          {"gb","7fPXML8hZ-I","Crazy 3x3 Plus Saturn 1/3","SuperAntoniovivaldi"},
1101
                                          {"gb","ixVVVoxsg4A","Crazy 3x3 Plus Saturn 2/3","SuperAntoniovivaldi"},
1102
                                          {"gb","Dd8ZaGzbvjE","Crazy 3x3 Plus Saturn 3/3","SuperAntoniovivaldi"},
1103
                                          {"es","EyQXl0llt2M","Crazy 3x3 Plus Saturno","QBAndo"},
1104
                                          {"ru","T2uYDHyQZnE","Как собрать Crazy Saturn","Илья Топор-Гилка"},
1105
                                          {"fr","kuSYpTXoXUM","Solution crazy 3x3x3 Saturn 1/6","Laurent Boss"},
1106
                                          {"fr","u1OsRGuBcHA","Solution crazy 3x3x3 Saturn 2/6","Laurent Boss"},
1107
                                          {"fr","ra0MspIkctU","Solution crazy 3x3x3 Saturn 3/6","Laurent Boss"},
1108
                                          {"fr","dm3WBtGdxYA","Solution crazy 3x3x3 Saturn 4/6","Laurent Boss"},
1109
                                          {"fr","jVwPmbYot_U","Solution crazy 3x3x3 Saturn 5/6","Laurent Boss"},
1110
                                          {"fr","raYIoRIZPmc","Solution crazy 3x3x3 Saturn 6/6","Laurent Boss"},
1111
                                          {"br","0oKu1NXiQcY","Resolver Crazy Saturn 1/4","Rafael Cinoto"},
1112
                                          {"br","bRD73Lb1NTw","Resolver Crazy Saturn 2/4","Rafael Cinoto"},
1113
                                          {"br","v9nZrwCyNLs","Resolver Crazy Saturn 3/4","Rafael Cinoto"},
1114
                                          {"br","aipwvc2udbM","Resolver Crazy Saturn 4/4","Rafael Cinoto"},
1115
                                          {"kr","hfogu6lCLvs","크레이지 (Crazy) 333 토성 1/5","듀나메스 큐브 해법연구소"},
1116
                                          {"kr","rKjRzKxXHyA","크레이지 (Crazy) 333 토성 2/5","듀나메스 큐브 해법연구소"},
1117
                                          {"kr","7tKfu5RJCVc","크레이지 (Crazy) 333 토성 3/5","듀나메스 큐브 해법연구소"},
1118
                                          {"kr","L68nVvMhxVc","크레이지 (Crazy) 333 토성 4/5","듀나메스 큐브 해법연구소"},
1119
                                          {"kr","fvOcR9-TQpA","크레이지 (Crazy) 333 토성 5/5","듀나메스 큐브 해법연구소"},
1120
                                          {"vn","jiGMQ9Mn14w","Saturn Crazy Plus Tutorial","VĂN CÔNG TÙNG"},
1121
                                         };
1122
      case URANUS : return new String[][]{
1123
                                          {"gb","wOyVb2TMZlk","Crazy 3x3 Plus Uranus 1/3","SuperAntoniovivaldi"},
1124
                                          {"gb","UbTBBQ-gvk0","Crazy 3x3 Plus Uranus 2/3","SuperAntoniovivaldi"},
1125
                                          {"gb","_7k57cV81BM","Crazy 3x3 Plus Uranus 3/3","SuperAntoniovivaldi"},
1126
                                          {"es","vuPcyvE6EVE","Crazy 3x3 Plus Urano","QBAndo"},
1127
                                          {"ru","tm6sxFSeeBg","Как собрать Crazy Uranus","Илья Топор-Гилка"},
1128
                                          {"fr","i9lU26McP38","Solution crazy 3x3x3 Uranus 1/4","Laurent Boss"},
1129
                                          {"fr","Zr6fTayObJk","Solution crazy 3x3x3 Uranus 2/4","Laurent Boss"},
1130
                                          {"fr","nCmCxrY_QMU","Solution crazy 3x3x3 Uranus 3/4","Laurent Boss"},
1131
                                          {"fr","YNs8IohERKs","Solution crazy 3x3x3 Uranus 4/4","Laurent Boss"},
1132
                                          {"pl","pKPQJoGJtno","Crazy 3x3 Uranus TUTORIAL PL","MrUK"},
1133
                                          {"br","jjcqHXOD9eo","Resolver Crazy Urano 1/2","Rafael Cinoto"},
1134
                                          {"br","1B73Z2XE2ss","Resolver Crazy Urano 2/2","Rafael Cinoto"},
1135
                                          {"kr","_m3S5DiVRMw","크레이지 333 천왕성 1/2","듀나메스 큐브 해법연구소"},
1136
                                          {"kr","z9Wh6FXr0og","크레이지 333 천왕성 2/2","듀나메스 큐브 해법연구소"},
1137
                                          {"vn","bHiQ3YSEb2I","Uranus Crazy Plus Tutorial","VĂN CÔNG TÙNG"},
1138
                                         };
1139
      case NEPTUNE: return new String[][]{
1140
                                          {"gb","1gFmuFpU5-Y","Crazy 3x3 Plus Neptune 1a/4","SuperAntoniovivaldi"},
1141
                                          {"gb","UPRIH0MtmPM","Crazy 3x3 Plus Neptune 1b/4","SuperAntoniovivaldi"},
1142
                                          {"gb","Trqruz1NZ5E","Crazy 3x3 Plus Neptune 2/4","SuperAntoniovivaldi"},
1143
                                          {"gb","1gFmuFpU5-Y","Crazy 3x3 Plus Neptune 3/4","SuperAntoniovivaldi"},
1144
                                          {"gb","Rfa5y8NGqdY","Crazy 3x3 Plus Neptune 4/4","SuperAntoniovivaldi"},
1145
                                          {"es","LOR1cNs4NWM","Crazy 3x3 Plus Neptuno","QBAndo"},
1146
                                          {"ru","qvaRxJJrdi8","Как собрать Crazy Neptune","Илья Топор-Гилка"},
1147
                                          {"kr","6Avdw2zX5XI","크레이지 333 해왕성 1/2","듀나메스 큐브 해법연구소"},
1148
                                          {"kr","YbfWfDDBN9k","크레이지 333 해왕성 2/2","듀나메스 큐브 해법연구소"},
1149
                                          {"vn","hmf1YShJuZg","Neptune Crazy Plus Tutorial","VĂN CÔNG TÙNG"},
1150
                                         };
1151
      }
1152

  
1153
    return null;
884 1154
    }
885 1155
}

Also available in: Unified diff