This commit is contained in:
@@ -1,13 +1,13 @@
|
||||
package sudoku.io;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import gui.RenderableMultidoku;
|
||||
import gui.constants.Symbols;
|
||||
import sudoku.structure.Cell;
|
||||
import sudoku.structure.MultiDoku;
|
||||
import sudoku.structure.Sudoku;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class SudokuPrinter {
|
||||
public static final String ANSI_RESET = "\u001B[0m";
|
||||
public static final String ANSI_RED = "\u001B[31m";
|
||||
@@ -77,11 +77,12 @@ public class SudokuPrinter {
|
||||
}
|
||||
}
|
||||
|
||||
public static void printMultiDoku(final RenderableMultidoku rm, Symbols symbols, int blockWidth, int blockHeight) {
|
||||
printMultiDoku(rm, symbols.getSymbols(), blockWidth, blockHeight);
|
||||
public static String printMultiDoku(final RenderableMultidoku rm, Symbols symbols, int blockWidth,
|
||||
int blockHeight) {
|
||||
return printMultiDoku(rm, symbols.getSymbols(), blockWidth, blockHeight);
|
||||
}
|
||||
|
||||
public static void printMultiDoku(final RenderableMultidoku rm, List<String> listSymbols, int blockWidth,
|
||||
public static String printMultiDoku(final RenderableMultidoku rm, List<String> listSymbols, int blockWidth,
|
||||
int blockHeight) {
|
||||
StringBuilder line = new StringBuilder("\n");
|
||||
int nBlockInWidth = rm.getWidth() / blockWidth;
|
||||
@@ -108,7 +109,8 @@ public class SudokuPrinter {
|
||||
line.append("]\n");
|
||||
}
|
||||
line.append("__".repeat(Math.max(0, rm.getWidth() + nBlockInWidth))).append("_\n");
|
||||
System.out.println(line);
|
||||
// System.out.println(line);
|
||||
return line.toString();
|
||||
}
|
||||
|
||||
public static void printMultiDokuWithIndex(final RenderableMultidoku rm, List<String> listSymbols, int blockWidth,
|
||||
@@ -182,12 +184,16 @@ public class SudokuPrinter {
|
||||
return result.toString();
|
||||
}
|
||||
|
||||
public static void printMultiDoku(final MultiDoku doku, int blockWidth, int blockHeight, Symbols symbols) {
|
||||
if (doku.getNbSubGrids() == 1) {
|
||||
printRectangleSudoku(doku.getSubGrid(0), blockWidth, blockHeight, symbols);
|
||||
} else {
|
||||
printMultiDoku(RenderableMultidoku.fromMultidoku(doku), symbols, blockWidth, blockHeight);
|
||||
public static String printMultiDoku(final MultiDoku doku) {
|
||||
int blockWidth = doku.getSubGrid(0).getBlockWidth();
|
||||
if (blockWidth == 0)
|
||||
return printMultiDoku(doku, 0, 0, Symbols.Numbers);
|
||||
else
|
||||
return printMultiDoku(doku, blockWidth, doku.getSubGrid(0).getSize() / blockWidth, Symbols.Letters);
|
||||
}
|
||||
|
||||
public static String printMultiDoku(final MultiDoku doku, int blockWidth, int blockHeight, Symbols symbols) {
|
||||
return printMultiDoku(RenderableMultidoku.fromMultidoku(doku), symbols, blockWidth, blockHeight);
|
||||
}
|
||||
|
||||
public static void printMultiDokuWithIndex(final MultiDoku doku, int blockWidth, int blockHeight, Symbols symbols) {
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package sudoku.structure;
|
||||
|
||||
import sudoku.io.SudokuPrinter;
|
||||
import sudoku.io.SudokuSerializer;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -182,7 +183,7 @@ public class MultiDoku {
|
||||
if (sudoku.getSize() != otherSudoku.getSize())
|
||||
return false;
|
||||
for (int j = 0; j < sudoku.getSize() * sudoku.getSize(); j++) {
|
||||
if (sudoku.getCell(i).getSymbolIndex() != otherSudoku.getCell(i).getSymbolIndex())
|
||||
if (sudoku.getCell(j).getSymbolIndex() != otherSudoku.getCell(j).getSymbolIndex())
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -191,13 +192,7 @@ public class MultiDoku {
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append("Multidoku {");
|
||||
for (Sudoku sudoku : subGrids) {
|
||||
sb.append("\n\t").append(sudoku.toString());
|
||||
}
|
||||
sb.append("\n}");
|
||||
return sb.toString();
|
||||
return SudokuPrinter.printMultiDoku(this);
|
||||
}
|
||||
|
||||
public MultiDoku clone() {
|
||||
|
||||
@@ -328,7 +328,7 @@ public class SudokuFactory {
|
||||
}
|
||||
|
||||
/**
|
||||
* Rempli un MultiDoku donné par rapport à un difficulté.
|
||||
* Remplit un MultiDoku donné par rapport à une difficulté.
|
||||
*
|
||||
* @param doku MultiDoku, vide.
|
||||
* @param difficulty Difficulty, qui correspond au pourcentage de cases à enlever.
|
||||
|
||||
@@ -101,17 +101,24 @@ class SolverTest {
|
||||
MultiDoku mdResult = SudokuSerializer.deserializeSudoku(SudokuSerializer.serializeSudoku(mdTest));
|
||||
assertFalse(mdTest.isSolved());
|
||||
assertFalse(mdResult.isSolved());
|
||||
assertEquals(mdTest, mdResult);
|
||||
|
||||
assertTrue(solver.solve(mdTest));
|
||||
|
||||
assertTrue(mdTest.isSolved());
|
||||
assertFalse(mdResult.isSolved());
|
||||
System.out.println(mdTest);
|
||||
System.out.println(mdResult);
|
||||
assertNotEquals(mdTest, mdResult);
|
||||
solver.solve(mdResult);
|
||||
|
||||
assertTrue(solver.solve(mdResult));
|
||||
|
||||
assertEquals(mdTest, mdResult);
|
||||
}
|
||||
|
||||
@Test
|
||||
void solveTest() {
|
||||
initializeSolvers();
|
||||
for (int i = 0; i < 100; i++) {
|
||||
testSize2(h);
|
||||
testSize3(h);
|
||||
testSize2(m);
|
||||
@@ -122,3 +129,4 @@ class SolverTest {
|
||||
testMDSize3(r);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user