merge
All checks were successful
Linux arm64 / Build (push) Successful in 24m8s

This commit is contained in:
Melvyn
2025-01-24 16:17:56 +01:00
parent 981bf8529d
commit 8f4330f710
21 changed files with 42 additions and 45 deletions

View File

@@ -0,0 +1,102 @@
package sudoku.structure;
import java.util.ArrayList;
import java.util.List;
/**
* @class MultiDoku
* @brief Représente une grille de Multidoku.
* Une grille de sudoku est un multidoku avec un seul sous-sudoku
*/
public class MultiDoku {
private final List<Sudoku> subGrids;
public MultiDoku(List<Sudoku> subGrids) {
this.subGrids = subGrids;
}
public int getNbSubGrids(){
return subGrids.size();
}
public Sudoku getSubGrid(int i){
return subGrids.get(i);
}
public List<Cell> getCells(){
List<Cell> cells = new ArrayList<>();
for (Sudoku sudoku : subGrids){
cells.addAll(sudoku.getCells());
}
return cells;
}
public void updateSymbolsPossibilities() throws Exception {
for (Sudoku sudoku : subGrids){
sudoku.updateSymbolsPossibilities();
}
}
@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();
}
public Cell getFirstEmptyCell() {
for (Sudoku sudoku : this.subGrids) {
Cell cellTmp = sudoku.getFirstEmptyCell();
if (cellTmp != null && cellTmp.isEmpty()) {
return cellTmp;
}
}
return null;
}
public List<Integer> getPossibleSymbolsOfCell(Cell cellToFill) {
for (Sudoku sudoku : this.subGrids) {
if (sudoku.contains(cellToFill)) {
return sudoku.getPossibleSymbolsOfCell(cellToFill);
}
}
return new ArrayList<>();
}
public List<Sudoku> getSubGrids() {
return this.subGrids;
}
public boolean isValid() {
boolean result = true;
for (Sudoku sudoku : this.subGrids) {
result = sudoku.isValid() && result;
}
return result;
}
@Override
public boolean equals(Object object) {
if (!(object instanceof MultiDoku)) {
return false;
}
if (this.getNbSubGrids() != ((MultiDoku) object).getNbSubGrids()) {
return false;
}
for (int i = 0; i < this.getNbSubGrids(); i++) {
if (!this.getSubGrid(i).equals(((MultiDoku) object).getSubGrid(i))) {
return false;
}
}
return true;
}
}