Revision 3fd8fe94
Added by Leszek Koltunski 9 months ago
src/main/java/org/distorted/objectlib/algsolvers/Phase.java | ||
---|---|---|
19 | 19 |
private final int[][] mBasicAngles; |
20 | 20 |
protected int[][] mSubphases; |
21 | 21 |
protected int mNumSubphases; |
22 |
protected int mNumCubitsInThisPhase; |
|
23 | 22 |
protected int mNumCubits; |
24 | 23 |
protected MoveProvider mMoveProvider; |
25 | 24 |
private final TargetProvider mTargetProvider; |
25 |
private final String mName; |
|
26 | 26 |
TargetQuats mTargetQuats; |
27 | 27 |
|
28 | 28 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
29 | 29 |
|
30 |
Phase(SolvedObject object, MoveProvider mp, TargetProvider tp) |
|
30 |
Phase(SolvedObject object, MoveProvider mp, TargetProvider tp, String name)
|
|
31 | 31 |
{ |
32 | 32 |
float[][] pos = object.getCubitPositions(); |
33 | 33 |
mNumCubits = pos.length; |
... | ... | |
35 | 35 |
mTargetProvider = tp; |
36 | 36 |
mMoves = object.getMoveTable(); |
37 | 37 |
mBasicAngles = object.getBasicAngles(); |
38 |
mSubphases = tp.getSubphases(); |
|
39 |
mNumSubphases = mSubphases.length; |
|
40 |
mName = name; |
|
38 | 41 |
} |
39 | 42 |
|
40 | 43 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
42 | 45 |
abstract void prepareForSubphases(); |
43 | 46 |
abstract boolean solveAnySubphase(SolvedObject object, MitmTable table, int[][] solution, int solIndex); |
44 | 47 |
|
48 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
49 |
|
|
50 |
public String getName() |
|
51 |
{ |
|
52 |
return mName; |
|
53 |
} |
|
54 |
|
|
45 | 55 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
46 | 56 |
|
47 | 57 |
int getNumSubphases() |
src/main/java/org/distorted/objectlib/algsolvers/PhaseMitm.java | ||
---|---|---|
22 | 22 |
|
23 | 23 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
24 | 24 |
|
25 |
public PhaseMitm(SolvedObject object, MoveProvider mp, TargetProvider tp) |
|
25 |
public PhaseMitm(SolvedObject object, MoveProvider mp, TargetProvider tp, String name)
|
|
26 | 26 |
{ |
27 |
super(object,mp,tp); |
|
28 |
|
|
29 |
mSubphases = tp.getSubphases(); |
|
30 |
mNumSubphases = mSubphases.length; |
|
31 |
|
|
32 |
int numCubits = 0; |
|
33 |
for(int g=0; g<mNumSubphases; g++) numCubits += mSubphases[g].length; |
|
34 |
|
|
35 |
mNumCubitsInThisPhase = numCubits; |
|
27 |
super(object,mp,tp,name); |
|
36 | 28 |
} |
37 | 29 |
|
38 | 30 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
src/main/java/org/distorted/objectlib/algsolvers/implemented/Solver3x3Beginner.java | ||
---|---|---|
101 | 101 |
|
102 | 102 |
return new Phase[] |
103 | 103 |
{ |
104 |
new PhaseMitm( object, all, wcr), |
|
105 |
new PhaseMitm( object, all, wco), |
|
106 |
new PhaseMitm( object, asl, sla), |
|
107 |
new PhaseMitm( object, aeO, oll), |
|
108 |
new PhaseMitm( object, aeP, pll), |
|
109 |
new PhaseMitm( object, acP, pcl), |
|
110 |
new PhaseMitm( object, acO, ocl), |
|
104 |
new PhaseMitm( object, all, wcr, "White Cross"),
|
|
105 |
new PhaseMitm( object, all, wco, "White Corners"),
|
|
106 |
new PhaseMitm( object, asl, sla, "Second Layer"),
|
|
107 |
new PhaseMitm( object, aeO, oll, "OLL Edges"),
|
|
108 |
new PhaseMitm( object, aeP, pll, "PLL Edges"),
|
|
109 |
new PhaseMitm( object, acP, pcl, "PLL Corners"),
|
|
110 |
new PhaseMitm( object, acO, ocl, "OLL Corners"),
|
|
111 | 111 |
}; |
112 | 112 |
} |
113 | 113 |
} |
src/main/java/org/distorted/objectlib/algsolvers/implemented/SolverAbstract.java | ||
---|---|---|
19 | 19 |
{ |
20 | 20 |
private final SolvedObject mObject; |
21 | 21 |
private final SolverPhased mSolver; |
22 |
private final Phase[] mPhases; |
|
22 | 23 |
|
23 | 24 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
24 | 25 |
|
25 | 26 |
SolverAbstract() |
26 | 27 |
{ |
27 | 28 |
mObject = createObject(); |
28 |
Phase[] phases = createPhases(mObject);
|
|
29 |
mSolver = new SolverPhased(mObject,phases);
|
|
29 |
mPhases = createPhases(mObject);
|
|
30 |
mSolver = new SolverPhased(mObject,mPhases);
|
|
30 | 31 |
} |
31 | 32 |
|
32 | 33 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
... | ... | |
36 | 37 |
|
37 | 38 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
38 | 39 |
|
39 |
public SolvedObject getObject() |
|
40 |
{ |
|
41 |
return mObject; |
|
42 |
} |
|
43 |
|
|
44 |
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
45 |
|
|
46 |
public int[][] solution(int[] quats) |
|
47 |
{ |
|
48 |
return mSolver.solution(quats); |
|
49 |
} |
|
40 |
public int getNumPhases() { return mPhases.length; } |
|
41 |
public String getPhaseName(int index) { return mPhases[index].getName(); } |
|
42 |
public SolvedObject getObject() { return mObject; } |
|
43 |
public int[][] solution(int[] quats) { return mSolver.solution(quats); } |
|
50 | 44 |
} |
Also available in: Unified diff
Improve the Phased Solver App (show phases)