Project

General

Profile

Download (6.79 KB) Statistics
| Branch: | Tag: | Revision:

magiccube / src / main / java / org / distorted / solvers / SolverSkewbDiamond.java @ 379ba26d

1
///////////////////////////////////////////////////////////////////////////////////////////////////
2
// Copyright 2023 Leszek Koltunski                                                               //
3
//                                                                                               //
4
// This file is part of Magic Cube.                                                              //
5
//                                                                                               //
6
// Magic Cube is proprietary software licensed under an EULA which you should have received      //
7
// along with the code. If not, check https://distorted.org/magic/License-Magic-Cube.html        //
8
///////////////////////////////////////////////////////////////////////////////////////////////////
9

    
10
package org.distorted.solvers;
11

    
12
import android.content.res.Resources;
13

    
14
import org.distorted.objectlib.main.ObjectType;
15
import org.distorted.objectlib.main.TwistyObject;
16
import org.distorted.objectlib.tablebases.ImplementedTablebasesList;
17
import org.distorted.objectlib.tablebases.TablebasesAbstract;
18

    
19
///////////////////////////////////////////////////////////////////////////////////////////////////
20

    
21
public class SolverSkewbDiamond extends SolverTablebase
22
{
23
  private static final int ERROR_CORNER_FR_MISSING = -1;
24
  private static final int ERROR_CORNER_BR_MISSING = -2;
25
  private static final int ERROR_CORNER_BL_MISSING = -3;
26
  private static final int ERROR_CORNER_FL_MISSING = -4;
27
  private static final int ERROR_CORNER_TO_MISSING = -5;
28
  private static final int ERROR_CORNER_BO_MISSING = -6;
29

    
30
  private static final int ERROR_CENTER_0_MISSING = -7;
31
  private static final int ERROR_CENTER_1_MISSING = -8;
32
  private static final int ERROR_CENTER_2_MISSING = -9;
33
  private static final int ERROR_CENTER_3_MISSING = -10;
34
  private static final int ERROR_CENTER_4_MISSING = -11;
35
  private static final int ERROR_CENTER_5_MISSING = -12;
36
  private static final int ERROR_CENTER_6_MISSING = -13;
37
  private static final int ERROR_CENTER_7_MISSING = -14;
38

    
39
  private static final int ERROR_TWO_CORNERS      = -15;
40
  private static final int ERROR_TWO_CENTERS      = -16;
41
  private static final int ERROR_CORNER_TWIST     = -17;
42

    
43
  private TablebasesAbstract mSolver;
44

    
45
///////////////////////////////////////////////////////////////////////////////////////////////////
46

    
47
  public SolverSkewbDiamond(Resources res, TwistyObject object)
48
    {
49
    super(res,object);
50
    }
51

    
52
///////////////////////////////////////////////////////////////////////////////////////////////////
53

    
54
  private int checkAllCentersPresent(int[] centers)
55
    {
56
    return 0;
57
    }
58

    
59
///////////////////////////////////////////////////////////////////////////////////////////////////
60

    
61
  private void getCorners(TwistyObject object, int[][] corners)
62
    {
63
    corners[0][0] = object.getCubitFaceStickerIndex( 0,0); // FR
64
    corners[0][1] = object.getCubitFaceStickerIndex( 0,1);
65
    corners[0][2] = object.getCubitFaceStickerIndex( 0,5);
66
    corners[0][3] = object.getCubitFaceStickerIndex( 0,4);
67

    
68
    corners[1][0] = object.getCubitFaceStickerIndex( 1,1); // BR
69
    corners[1][1] = object.getCubitFaceStickerIndex( 1,2);
70
    corners[1][2] = object.getCubitFaceStickerIndex( 1,6);
71
    corners[1][3] = object.getCubitFaceStickerIndex( 1,5);
72

    
73
    corners[2][0] = object.getCubitFaceStickerIndex( 2,2); // BL
74
    corners[2][1] = object.getCubitFaceStickerIndex( 2,3);
75
    corners[2][2] = object.getCubitFaceStickerIndex( 2,7);
76
    corners[2][3] = object.getCubitFaceStickerIndex( 2,6);
77

    
78
    corners[3][0] = object.getCubitFaceStickerIndex( 3,3); // FL
79
    corners[3][1] = object.getCubitFaceStickerIndex( 3,0);
80
    corners[3][2] = object.getCubitFaceStickerIndex( 3,4);
81
    corners[3][3] = object.getCubitFaceStickerIndex( 3,7);
82

    
83
    corners[4][0] = object.getCubitFaceStickerIndex( 4,0); // U
84
    corners[4][1] = object.getCubitFaceStickerIndex( 4,3);
85
    corners[4][2] = object.getCubitFaceStickerIndex( 4,2);
86
    corners[4][3] = object.getCubitFaceStickerIndex( 4,1);
87

    
88
    corners[5][0] = object.getCubitFaceStickerIndex( 5,6); // D
89
    corners[5][1] = object.getCubitFaceStickerIndex( 5,7);
90
    corners[5][2] = object.getCubitFaceStickerIndex( 5,4);
91
    corners[5][3] = object.getCubitFaceStickerIndex( 5,5);
92
    }
93

    
94
///////////////////////////////////////////////////////////////////////////////////////////////////
95

    
96
  private void getCenters(TwistyObject object, int[] centers)
97
    {
98
    centers[0] = object.getCubitFaceStickerIndex( 6,0); // UR
99
    centers[1] = object.getCubitFaceStickerIndex( 8,0); // UL
100
    centers[2] = object.getCubitFaceStickerIndex(11,0); // DB
101
    centers[3] = object.getCubitFaceStickerIndex(13,0); // DF
102
    centers[4] = object.getCubitFaceStickerIndex( 9,0); // UF
103
    centers[5] = object.getCubitFaceStickerIndex( 7,0); // UB
104
    centers[6] = object.getCubitFaceStickerIndex(12,0); // DL
105
    centers[7] = object.getCubitFaceStickerIndex(10,1); // DR
106
    }
107

    
108
///////////////////////////////////////////////////////////////////////////////////////////////////
109

    
110
  public int tablebaseIndex(TwistyObject object)
111
    {
112
    int[][] corners = new int[6][4];
113
    int[] centers = new int[8];
114

    
115
    getCorners(object,corners);
116
    getCenters(object,centers);
117

    
118
    int result1 = checkAllCentersPresent(centers);
119
    if( result1<0 ) return result1;
120

    
121
    return 0;
122
    }
123

    
124
///////////////////////////////////////////////////////////////////////////////////////////////////
125

    
126
  public String error(int index, Resources res)
127
    {
128
    switch(index)
129
      {
130
  /*
131
 private static final int ERROR_CORNER_FR_MISSING = -1;
132
  private static final int ERROR_CORNER_BR_MISSING = -2;
133
  private static final int ERROR_CORNER_BL_MISSING = -3;
134
  private static final int ERROR_CORNER_FL_MISSING = -4;
135
  private static final int ERROR_CORNER_TO_MISSING = -5;
136
  private static final int ERROR_CORNER_BO_MISSING = -6;
137

    
138
  private static final int ERROR_CENTER_0_MISSING = -7;
139
  private static final int ERROR_CENTER_1_MISSING = -8;
140
  private static final int ERROR_CENTER_2_MISSING = -9;
141
  private static final int ERROR_CENTER_3_MISSING = -10;
142
  private static final int ERROR_CENTER_4_MISSING = -11;
143
  private static final int ERROR_CENTER_5_MISSING = -12;
144
  private static final int ERROR_CENTER_6_MISSING = -13;
145
  private static final int ERROR_CENTER_7_MISSING = -14;
146

    
147
  private static final int ERROR_TWO_CORNERS      = -15;
148
  private static final int ERROR_TWO_CENTERS      = -16;
149
  private static final int ERROR_CORNER_TWIST     = -17;
150

    
151
   */
152
      }
153

    
154
    return null;
155
    }
156

    
157
///////////////////////////////////////////////////////////////////////////////////////////////////
158

    
159
  public int[][] solution(int index, Resources res)
160
    {
161
    if( mSolver==null )
162
      {
163
      mSolver = ImplementedTablebasesList.createUnpacked(ObjectType.DIAM_2);
164
      if( mSolver!=null ) mSolver.createTablebase();
165
      }
166

    
167
    return mSolver!=null ? mSolver.solution(index) : null;
168
    }
169
}  
170

    
(8-8/9)