Project

General

Profile

« Previous | Next » 

Revision 3fd8fe94

Added by Leszek Koltunski 9 months ago

Improve the Phased Solver App (show phases)

View differences:

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