From 77c0b0d41b38e59e81ef1bf1622dffdd34bf4057 Mon Sep 17 00:00:00 2001 From: Persson-dev Date: Fri, 10 Jan 2025 15:58:34 +0100 Subject: [PATCH] sudoku vide --- app/src/main/java/sudoku/Bloc.java | 9 ++++ app/src/main/java/sudoku/Main.java | 3 +- app/src/main/java/sudoku/SudokuFactory.java | 50 +++++++++++++++++++++ 3 files changed, 61 insertions(+), 1 deletion(-) create mode 100644 app/src/main/java/sudoku/SudokuFactory.java diff --git a/app/src/main/java/sudoku/Bloc.java b/app/src/main/java/sudoku/Bloc.java index ab3636f..ca9069b 100644 --- a/app/src/main/java/sudoku/Bloc.java +++ b/app/src/main/java/sudoku/Bloc.java @@ -1,5 +1,6 @@ package sudoku; +import java.util.ArrayList; import java.util.List; public class Bloc { @@ -10,8 +11,16 @@ public class Bloc { this.cases = cases; } + public Bloc() { + this.cases = new ArrayList<>(); + } + public List getCases() { return cases; } + void addCase(Case newCase) { + this.cases.add(newCase); + } + } diff --git a/app/src/main/java/sudoku/Main.java b/app/src/main/java/sudoku/Main.java index 0084166..20c7290 100644 --- a/app/src/main/java/sudoku/Main.java +++ b/app/src/main/java/sudoku/Main.java @@ -10,6 +10,7 @@ public class Main { public static void main(String[] args) { System.out.println(new Main().getGreeting()); - // var test = SudokuFactory.createBasicEmptySudoku(9); + var test = SudokuFactory.createBasicEmptyRectangleSudoku(3, 3); + System.out.println(test); } } diff --git a/app/src/main/java/sudoku/SudokuFactory.java b/app/src/main/java/sudoku/SudokuFactory.java new file mode 100644 index 0000000..4773b4f --- /dev/null +++ b/app/src/main/java/sudoku/SudokuFactory.java @@ -0,0 +1,50 @@ +package sudoku; + +import java.util.ArrayList; +import java.util.List; + +public class SudokuFactory { + + private static List initCases(int size) { + List cases = new ArrayList<>(size * size); + for (int i = 0; i < size * size; i++) { + cases.add(new Case()); + } + return cases; + } + + private static List initRectangleBlocs(List cases, int width, int height) { + List blocs = new ArrayList<>(); + int size = width * height; + for (int i = 0; i < size; i++) { + Bloc newBloc = new Bloc(); + int blocX = i % height; + int blocY = i / height; + for (int y = 0; y < height; y++) { + for (int x = 0; x < width; x++) { + int index = ((y + blocY * height) * size + (x + blocX * width)); + Case caseBloc = cases.get(index); + caseBloc.setBloc(newBloc); + newBloc.addCase(caseBloc); + } + } + blocs.add(newBloc); + } + return blocs; + } + + public static MultiDoku createBasicEmptyRectangleSudoku(int width, int height) { + int symbolCount = width * height; + List cases = initCases(symbolCount); + List blocs = initRectangleBlocs(cases, width, height); + Sudoku s = new Sudoku(cases, blocs); + List ss = new ArrayList<>(); + ss.add(s); + return new MultiDoku(ss); + } + + public static MultiDoku createBasicEmptySquareSudoku(int size) { + return createBasicEmptyRectangleSudoku(size, size); + } + +}