commit a505bce0fc3466892cce901cb81d59822aadd77a
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Fri Mar 24 13:28:23 2023 +0100

    Dino6 solver: skeleton.

diff --git a/src/main/java/org/distorted/solvers/SolverDino6.java b/src/main/java/org/distorted/solvers/SolverDino6.java
new file mode 100644
index 00000000..b73a6339
--- /dev/null
+++ b/src/main/java/org/distorted/solvers/SolverDino6.java
@@ -0,0 +1,138 @@
+///////////////////////////////////////////////////////////////////////////////////////////////////
+// Copyright 2023 Leszek Koltunski                                                               //
+//                                                                                               //
+// This file is part of Magic Cube.                                                              //
+//                                                                                               //
+// Magic Cube is proprietary software licensed under an EULA which you should have received      //
+// along with the code. If not, check https://distorted.org/magic/License-Magic-Cube.html        //
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+package org.distorted.solvers;
+
+import android.content.res.Resources;
+
+import org.distorted.main.R;
+import org.distorted.objectlib.main.ObjectSignatures;
+import org.distorted.objectlib.main.TwistyObject;
+import org.distorted.objectlib.tablebases.ImplementedTablebasesList;
+import org.distorted.objectlib.tablebases.TablebasesAbstract;
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+public class SolverDino6 extends SolverTablebase
+{
+  private static final int ERROR_EDGE_MISSING  = -1;
+  private static final int ERROR_EDGE_CANNOT   = -2;
+  private static final int ERROR_EDGE_TWISTED  = -3;
+
+  private TablebasesAbstract mSolver;
+  private int[] mFaceColors;
+  private int mErrorColor1, mErrorColor2;
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  public SolverDino6(Resources res, TwistyObject object)
+    {
+    super(res,object);
+    }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  public int tablebaseIndex(TwistyObject object)
+    {
+    int[][] edges = new int[12][2];
+    return 0;
+    }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  private int getColorIndex3(int color)
+    {
+    switch(color)
+      {
+      case 0: return R.string.color_yellow3;
+      case 1: return R.string.color_white3;
+      case 2: return R.string.color_blue3;
+      case 3: return R.string.color_green3;
+      case 4: return R.string.color_red3;
+      case 5: return R.string.color_orange3;
+      }
+
+    return -1;
+    }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  private int getColorIndex6(int color)
+    {
+    switch(color)
+      {
+      case 0: return R.string.color_yellow6;
+      case 1: return R.string.color_white6;
+      case 2: return R.string.color_blue6;
+      case 3: return R.string.color_green6;
+      case 4: return R.string.color_red6;
+      case 5: return R.string.color_orange6;
+      }
+
+    return -1;
+    }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  private String edgeMissingError(Resources res, int color0, int color1)
+    {
+    int j0 = getColorIndex3(color0);
+    int j1 = getColorIndex6(color1);
+
+    String c0 = res.getString(j0);
+    String c1 = res.getString(j1);
+
+    return res.getString(R.string.solver_generic_missing_edge,c0,c1);
+    }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  private String edgeTwistedError(Resources res, int color0, int color1)
+    {
+    int j0 = getColorIndex3(color0);
+    int j1 = getColorIndex6(color1);
+
+    String c0 = res.getString(j0);
+    String c1 = res.getString(j1);
+
+    return res.getString(R.string.solver_generic_twisted_edge,c0,c1);
+    }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  public String error(int index, Resources res)
+    {
+    switch(index)
+      {
+      case ERROR_EDGE_MISSING  : return edgeMissingError(res,mErrorColor1,mErrorColor2);
+      case ERROR_EDGE_TWISTED  : return edgeTwistedError(res,mErrorColor1,mErrorColor2);
+      case ERROR_EDGE_CANNOT   : return res.getString(R.string.solver_generic_edges_cannot);
+      }
+
+    return null;
+    }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  public int[][] solution(int index, Resources res)
+    {
+    if( mSolver==null )
+      {
+      mSolver = ImplementedTablebasesList.createUnpacked(ObjectSignatures.DINO_3);
+
+      if( mSolver!=null )
+        {
+        mSolver.createTablebase(-1);
+        }
+      }
+
+    return mSolver!=null ? mSolver.solution(index,null) : null;
+    }
+}  
+
diff --git a/src/main/java/org/distorted/solvers/SolverMain.java b/src/main/java/org/distorted/solvers/SolverMain.java
index da6743ee..9888177b 100644
--- a/src/main/java/org/distorted/solvers/SolverMain.java
+++ b/src/main/java/org/distorted/solvers/SolverMain.java
@@ -116,6 +116,11 @@ public class SolverMain implements Runnable
       SolverTablebase solver = new SolverSkewb(mRes,mObject);
       solver.solve(screen);
       }
+    else if( mSignature==ObjectSignatures.DINO_3 )
+      {
+      SolverTablebase solver = new SolverDino6(mRes,mObject);
+      solver.solve(screen);
+      }
     else
       {
       screen.displayErrorDialog(mRes.getString(R.string.solver_generic_not_implemented));
diff --git a/src/main/res/values-de/strings.xml b/src/main/res/values-de/strings.xml
index f7ce6cb0..29ee385a 100755
--- a/src/main/res/values-de/strings.xml
+++ b/src/main/res/values-de/strings.xml
@@ -92,9 +92,11 @@
     <string name="solver_generic_missing_corner">Die %1$s-%2$s-%3$s Ecke fehlt!</string>
     <string name="solver_generic_missing_vertex">Der %1$s-%2$s-%3$s Oktaeder fehlt!</string>
     <string name="solver_generic_missing_edge">Die %1$s-%2$s Kante fehlt!</string>
+    <string name="solver_generic_twisted_edge">Die Kante %1$s-%2$s muss verdreht werden!</string>
     <string name="solver_generic_missing_corner2">Die %1$s-%2$s Ecke fehlt!</string>
     <string name="solver_generic_corners_cannot">Ecken können nicht verdreht werden, sodass alle Seiten einfarbig sind!</string>
     <string name="solver_generic_vertices_cannot">Oktaederstücke können nicht so verdreht werden, sodass alle Seiten einfarbig sind!</string>
+    <string name="solver_generic_edges_cannot">Kanten können nicht verdreht werden, sodass alle Seiten einfarbig sind!</string>
     <string name="solver_generic_c_v_dont_match">Oktaederstücke und Tetraederecken passen nicht zusammen!</string>
 
     <string name="solver_cube3_error1">Es gibt nur %1$d %2$s Facelets.</string>
diff --git a/src/main/res/values-es/strings.xml b/src/main/res/values-es/strings.xml
index 8c3d37e8..09958d63 100755
--- a/src/main/res/values-es/strings.xml
+++ b/src/main/res/values-es/strings.xml
@@ -92,9 +92,11 @@
     <string name="solver_generic_missing_corner">¡Falta la esquina %1$s-%2$s-%3$s!</string>
     <string name="solver_generic_missing_vertex">¡Falta el octaedro %1$s-%2$s-%3$s!</string>
     <string name="solver_generic_missing_edge">¡Falta la pieza del borde %1$s-%2$s!</string>
+    <string name="solver_generic_twisted_edge">¡El borde %1$s-%2$s necesita ser retorcido!</string>
     <string name="solver_generic_missing_corner2">¡Falta la esquina %1$s-%2$s!</string>
     <string name="solver_generic_corners_cannot">¡Las esquinas no se pueden torcer para que todos los lados sean monocromáticos!</string>
     <string name="solver_generic_vertices_cannot">¡Las piezas octaédricas no se pueden torcer para que todos los lados sean monocromáticos!</string>
+    <string name="solver_generic_edges_cannot">¡Los bordes no se pueden torcer para que todos los lados sean monocromáticos!</string>
     <string name="solver_generic_c_v_dont_match">¡Las piezas octaédricas y las esquinas tetraédricas no coinciden!</string>
 
     <string name="solver_cube3_error1">Solo hay %1$d facetas %2$s.</string>
diff --git a/src/main/res/values-fr/strings.xml b/src/main/res/values-fr/strings.xml
index c3b3bf29..88a9feed 100755
--- a/src/main/res/values-fr/strings.xml
+++ b/src/main/res/values-fr/strings.xml
@@ -92,9 +92,11 @@
     <string name="solver_generic_missing_corner">Coin %1$s-%2$s-%3$s manquant !</string>
     <string name="solver_generic_missing_vertex">L\'octaèdre %1$s-%2$s-%3$s manque !</string>
     <string name="solver_generic_missing_edge">La pièce de bordure %1$s-%2$s manque!</string>
+    <string name="solver_generic_twisted_edge">Le bord %1$s-%2$s doit être tordu !</string>
     <string name="solver_generic_missing_corner2">Coin %1$s-%2$s manquant !</string>
     <string name="solver_generic_corners_cannot">Les coins ne peuvent pas être tordus afin que tous les côtés soient monochromes !</string>
     <string name="solver_generic_vertices_cannot">Les pièces octaédriques ne peuvent pas être tordues afin que tous les côtés soient monochromes !</string>
+    <string name="solver_generic_edges_cannot">Les bords ne peuvent pas être tordus pour que tous les côtés soient monochromes !</string>
     <string name="solver_generic_c_v_dont_match">Les pièces octaédriques et les coins tétraédriques ne correspondent pas !</string>
 
     <string name="solver_cube3_error1">Il n\'y a que %1$d facettes %2$s.</string>
diff --git a/src/main/res/values-ja/strings.xml b/src/main/res/values-ja/strings.xml
index 69c80783..911747fc 100755
--- a/src/main/res/values-ja/strings.xml
+++ b/src/main/res/values-ja/strings.xml
@@ -92,9 +92,11 @@
     <string name="solver_generic_missing_corner">%1$s%2$s%3$sのコーナーがない！</string>
     <string name="solver_generic_missing_vertex">%1$s-%2$s-%3$s八面体がありません！</string>
     <string name="solver_generic_missing_edge">%1$s%2$sボーダーピースはありません！</string>
+    <string name="solver_generic_twisted_edge">%1$s-%2$s エッジをねじる必要があります!</string>
     <string name="solver_generic_missing_corner2">%1$s%2$sのコーナーがない！</string>
     <string name="solver_generic_corners_cannot">すべての面がモノクロになるようにコーナーをねじることはできません。</string>
     <string name="solver_generic_vertices_cannot">すべての面が単色になるように、八面体のピースをねじることはできません。</string>
+    <string name="solver_generic_edges_cannot">すべての面が単色になるようにエッジをねじることはできません。</string>
     <string name="solver_generic_c_v_dont_match">八面体のピースと四面体の角が一致しません!</string>
 
     <string name="solver_cube3_error1">%2$s小顔は%1$dつだけ</string>
diff --git a/src/main/res/values-ko/strings.xml b/src/main/res/values-ko/strings.xml
index 892af1e0..b7ec4314 100755
--- a/src/main/res/values-ko/strings.xml
+++ b/src/main/res/values-ko/strings.xml
@@ -91,10 +91,12 @@
     <string name="solver_generic_missing_center">%1$s 중앙이 사라졌습니다!</string>
     <string name="solver_generic_missing_corner">%1$s-%2$s-%3$s 모서리 금지!</string>
     <string name="solver_generic_missing_vertex">%1$s-%2$s-%3$s 팔면체가 없습니다!</string>
-    <string name="solver_generic_missing_edge">%1$s%2$s 테두리 조각이 없습니다!</string>
+    <string name="solver_generic_missing_edge">%1$s-%2$s 테두리 조각이 없습니다!</string>
+    <string name="solver_generic_twisted_edge">%1$s-%2$s 가장자리를 꼬아야 합니다!</string>
     <string name="solver_generic_missing_corner2">%1$s-%2$s 모서리 금지!</string>
     <string name="solver_generic_corners_cannot">모든면이 단색이되도록 모서리를 비틀 수 없습니다!</string>
     <string name="solver_generic_vertices_cannot">팔면체 조각은 뒤틀릴 수 없으므로 모든면이 단색입니다!</string>
+    <string name="solver_generic_edges_cannot">모든 면이 단색이 되도록 가장자리를 비틀 수 없습니다!</string>
     <string name="solver_generic_c_v_dont_match">팔면체 조각과 사면체 모서리가 일치하지 않습니다!</string>
 
     <string name="solver_cube3_error1">%2$s작은 얼굴은  %1$d개뿐입니다.</string>
diff --git a/src/main/res/values-pl/strings.xml b/src/main/res/values-pl/strings.xml
index 6ac40b2b..a981ef52 100644
--- a/src/main/res/values-pl/strings.xml
+++ b/src/main/res/values-pl/strings.xml
@@ -92,9 +92,11 @@
     <string name="solver_generic_missing_corner">Brakuje %1$s-%2$s-%3$s rogu!</string>
     <string name="solver_generic_missing_vertex">Brakuje %1$s-%2$s-%3$s ośmiokątu!</string>
     <string name="solver_generic_missing_edge">Brakuje %1$s-%2$s krawędzi!</string>
+    <string name="solver_generic_twisted_edge">Krawędz %1$s-%2$s musi byc obrócona!</string>
     <string name="solver_generic_missing_corner2">Brakuje %1$s-%2$s rogu!</string>
-    <string name="solver_generic_corners_cannot">Narożników nie można skręcić tak, aby wszystkie boki były monochromatyczne!</string>
-    <string name="solver_generic_vertices_cannot">Części ośmiościennych nie można skręcić tak, aby wszystkie boki były monochromatyczne!</string>
+    <string name="solver_generic_corners_cannot">Narożników nie da się skręcić tak, aby wszystkie boki były monochromatyczne!</string>
+    <string name="solver_generic_vertices_cannot">Części ośmiościennych nie da się skręcić tak, aby wszystkie boki były monochromatyczne!</string>
+    <string name="solver_generic_edges_cannot">Krawędzi nie da się skręcić tak, aby wszystkie boki były monochromatyczne!</string>
     <string name="solver_generic_c_v_dont_match">Części ośmiościenne i czworościenne rogi nie pasują do siebie!</string>
 
     <string name="solver_cube3_error1">Jest tylko %1$d %2$s ścian.</string>
diff --git a/src/main/res/values-ru/strings.xml b/src/main/res/values-ru/strings.xml
index bb4d7398..50f92201 100755
--- a/src/main/res/values-ru/strings.xml
+++ b/src/main/res/values-ru/strings.xml
@@ -92,9 +92,11 @@
     <string name="solver_generic_missing_corner">Нет %1$s-%2$s-%3$s угла!</string>
     <string name="solver_generic_missing_vertex">Нет %1$s-%2$s-%3$s октаэдра!</string>
     <string name="solver_generic_missing_edge">Нет %1$s-%2$s ребра!</string>
+    <string name="solver_generic_twisted_edge">Ребрo %1$s-%2$s нужно скрутить!</string>
     <string name="solver_generic_missing_corner2">Нет %1$s-%2$s угла!</string>
     <string name="solver_generic_corners_cannot">Углы нельзя скручивать так, чтобы все стороны были однотонными!</string>
     <string name="solver_generic_vertices_cannot">Восьмигранные фигуры нельзя скрутить так, чтобы все стороны были однотонными!</string>
+    <string name="solver_generic_edges_cannot">Ребр нельзя скрутить так, чтобы все стороны были однотонными!</string>
     <string name="solver_generic_c_v_dont_match">Восьмигранные фигуры и четырехгранные углы не совпадают!</string>
 
     <string name="solver_cube3_error1">Всего %1$d %2$s граней!</string>
diff --git a/src/main/res/values-zh-rCN/strings.xml b/src/main/res/values-zh-rCN/strings.xml
index a693a34b..1ae662fd 100644
--- a/src/main/res/values-zh-rCN/strings.xml
+++ b/src/main/res/values-zh-rCN/strings.xml
@@ -98,9 +98,11 @@
     <string name="solver_generic_missing_corner">没有%1$s-%2$s-%3$s的角落！</string>
     <string name="solver_generic_missing_vertex">没有%1$s-%2$s-%3$s八面体！</string>
     <string name="solver_generic_missing_edge">没有1$s-%2$s边！</string>
+    <string name="solver_generic_twisted_edge">边缘 %1$s-%2$s 需要扭曲！</string>
     <string name="solver_generic_missing_corner2">没有%1$s-%2$s的角落！</string>
     <string name="solver_generic_corners_cannot">角不能扭曲，这样所有的面都是单色的！</string>
     <string name="solver_generic_vertices_cannot">八面体块不能扭曲，所以所有面都是单色的！</string>
+    <string name="solver_generic_edges_cannot">边缘不能扭曲，所以所有的面都是单色的！</string>
     <string name="solver_generic_c_v_dont_match">八面体块和四面体角不匹配！</string>
 
     <string name="solver_cube3_error1">只有%1$d个%2$s小面</string>
diff --git a/src/main/res/values-zh-rTW/strings.xml b/src/main/res/values-zh-rTW/strings.xml
index 941e36ec..745aec85 100644
--- a/src/main/res/values-zh-rTW/strings.xml
+++ b/src/main/res/values-zh-rTW/strings.xml
@@ -92,9 +92,11 @@
     <string name="solver_generic_missing_corner">沒有%1$s-%2$s-%3$s的角落!</string>
     <string name="solver_generic_missing_vertex">沒有%1$s-%2$s-%3$s八面體！</string>
     <string name="solver_generic_missing_edge">沒有1$s-%2$s邊！</string>
+    <string name="solver_generic_twisted_edge">邊緣 %1$s-%2$s 需要扭曲！</string>
     <string name="solver_generic_missing_corner2">沒有%1$s-%2$s的角落!</string>
     <string name="solver_generic_corners_cannot">角不能扭曲，這樣所有的面都是單色的！</string>
     <string name="solver_generic_vertices_cannot">八面體塊不能扭曲，所以所有面都是單色的！</string>
+    <string name="solver_generic_edges_cannot">邊緣不能扭曲，所以所有的面都是單色的！</string>
     <string name="solver_generic_c_v_dont_match">八面體塊和四面體角不匹配！</string>
 
     <string name="solver_cube3_error1">只有%1$d個%2$s小臉</string>
diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml
index 9c7657d4..b92f2ad8 100644
--- a/src/main/res/values/strings.xml
+++ b/src/main/res/values/strings.xml
@@ -112,9 +112,11 @@
     <string name="solver_generic_missing_corner">The %1$s-%2$s-%3$s corner is missing!</string>
     <string name="solver_generic_missing_vertex">The %1$s-%2$s-%3$s octahedron piece is missing!</string>
     <string name="solver_generic_missing_edge">The %1$s-%2$s edge is missing!</string>
+    <string name="solver_generic_twisted_edge">The %1$s-%2$s edge needs to be twisted!</string>
     <string name="solver_generic_missing_corner2">The %1$s-%2$s corner is missing!</string>
     <string name="solver_generic_corners_cannot">Corners cannot be twisted so that all faces are monochromatic!</string>
     <string name="solver_generic_vertices_cannot">Octahedral pieces cannot be twisted so that all faces are monochromatic!</string>
+    <string name="solver_generic_edges_cannot">Edges cannot be twisted so that all faces are monochromatic!</string>
     <string name="solver_generic_c_v_dont_match">Octahedral pieces and tetrahedral corners do not match!</string>
 
     <string name="solver_cube3_error1">There are only %1$d %2$s facelets.</string>
