Project

General

Profile

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

magiccube / src / main / java / org / distorted / solvers / SolverTablebase.java @ f404152d

1 420eb96d Leszek Koltunski
///////////////////////////////////////////////////////////////////////////////////////////////////
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 da57afae Leszek Koltunski
import org.distorted.objectlib.helpers.OperatingSystemInterface;
15 420eb96d Leszek Koltunski
import org.distorted.objectlib.main.TwistyObject;
16
import org.distorted.screens.RubikScreenSolver;
17
18
///////////////////////////////////////////////////////////////////////////////////////////////////
19
20
public abstract class SolverTablebase
21
{
22 da57afae Leszek Koltunski
  private final OperatingSystemInterface mOS;
23 420eb96d Leszek Koltunski
  private final Resources mRes;
24
  private final TwistyObject mObject;
25
26
///////////////////////////////////////////////////////////////////////////////////////////////////
27
28 ca278d11 Leszek Koltunski
  public abstract int tablebaseIndex(TwistyObject object);
29
  public abstract String error(int index, Resources res);
30 da57afae Leszek Koltunski
  public abstract int[][] solution(int index, OperatingSystemInterface os);
31 420eb96d Leszek Koltunski
32
///////////////////////////////////////////////////////////////////////////////////////////////////
33
// PUBLIC API
34
///////////////////////////////////////////////////////////////////////////////////////////////////
35
36 da57afae Leszek Koltunski
  public SolverTablebase(OperatingSystemInterface os, Resources res, TwistyObject object)
37 420eb96d Leszek Koltunski
    {
38 da57afae Leszek Koltunski
    mOS    = os;
39 420eb96d Leszek Koltunski
    mRes   = res;
40
    mObject= object;
41
    }
42
43
///////////////////////////////////////////////////////////////////////////////////////////////////
44
45 277401c0 Leszek Koltunski
  public void solve(RubikScreenSolver screen)
46 420eb96d Leszek Koltunski
    {
47 ca278d11 Leszek Koltunski
    int index = tablebaseIndex(mObject);
48 420eb96d Leszek Koltunski
49 ca278d11 Leszek Koltunski
    if( index>=0 )
50 420eb96d Leszek Koltunski
      {
51 da57afae Leszek Koltunski
      int[][] moves = solution(index,mOS);
52 277401c0 Leszek Koltunski
      screen.setSolved(moves);
53 420eb96d Leszek Koltunski
      }
54
    else
55
      {
56 ca278d11 Leszek Koltunski
      String error = error(index,mRes);
57 277401c0 Leszek Koltunski
      screen.displayErrorDialog(error);
58 420eb96d Leszek Koltunski
      }
59
    }
60
}