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 |
cb30e768
|
leszek
|
import org.distorted.solverui.ScreenSolver;
|
17 |
420eb96d
|
Leszek Koltunski
|
|
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 |
cb30e768
|
leszek
|
public void solve(ScreenSolver 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 |
244cc23f
|
leszek
|
screen.displayImpossibleDialog(error);
|
58 |
420eb96d
|
Leszek Koltunski
|
}
|
59 |
|
|
}
|
60 |
|
|
}
|