import java.util.*;
import java.lang.*;
import java.io.*;
class Main {
public static String checkSudoku(List<List<Integer>> sudoku){
int [] listToCheck = {1,2,3,4,5,6,7,8,9};
//gestion ligne
for(int i=0; i<sudoku.size(); i++){
//System.err.println(sudoku.get(i));
for(int nb : listToCheck){
if(!sudoku.get(i).contains(nb))
return "LINE " + i + " INVALID";
}
}
//creation matrice pour check colonne et region
int[][] sudokuTab = new int[sudoku.size()][sudoku.size()];
for(int i=0; i<sudoku.size();i++){
for(int j=0; j<sudoku.get(i).size(); j++)
sudokuTab[i][j]=sudoku.get(i).get(j);
}
//gestion colonne
for(int i=0; i<sudokuTab.length; i++){
ArrayList<Integer> column = new ArrayList<>();
for(int j=0; j<sudokuTab.length; j++){
column.add(sudokuTab[j][i]);
}
//System.err.println(column);
for(int nb : listToCheck){
if(!column.contains(nb))
return "COLUMN " + i + " INVALID";
}
}
//gestion region;
int cpt=0;
int i=0;
int j;
int regionValue=0;
ArrayList<Integer> region = new ArrayList<>();
while(i<9){
for (j=cpt; j<cpt+3; j++)
region.add(sudokuTab[i][j]);
if(i==2 && j<9){
cpt+=3;
i=0;
}else if(i==5 && j<9){
cpt+=3;
i=3;
}else if(i==8 && j<9){
cpt+=3;
i=6;
}else{
i++;
if(i==3 || i==6)
cpt=0;
}
if(region.size()==9){
//System.err.println(region);
for(int nb : listToCheck){
if(!region.contains(nb))
return "REGION " + regionValue + " INVALID";
}
region=new ArrayList<>();
regionValue+=1;
}
}
return "VALID";
}
public static void main(String[] args) {
List<List<Integer>> sudoku1 = Arrays.asList(
Arrays.asList(8,2,4,9,5,3,6,7,1),
Arrays.asList(6,3,5,8,1,7,9,2,4),
Arrays.asList(7,1,9,6,2,4,8,5,3),
Arrays.asList(5,8,7,2,9,1,3,4,6),
Arrays.asList(1,4,2,7,3,6,5,8,9),
Arrays.asList(3,9,6,4,8,5,2,1,7),
Arrays.asList(2,6,1,5,4,9,7,9,8),
Arrays.asList(4,7,8,3,6,2,1,3,5),
Arrays.asList(9,5,3,1,7,8,4,6,2));
List<List<Integer>> sudoku2 = Arrays.asList(
Arrays.asList(8,2,4,9,5,3,6,7,1),
Arrays.asList(6,3,5,8,1,7,9,2,4),
Arrays.asList(7,1,9,6,2,4,8,5,3),
Arrays.asList(5,8,7,2,9,1,3,4,6),
Arrays.asList(1,4,2,7,3,6,5,8,9),
Arrays.asList(3,9,6,4,8,5,2,1,7),
Arrays.asList(2,6,1,5,4,9,7,3,8),
Arrays.asList(4,7,8,3,6,2,1,9,5),
Arrays.asList(9,5,3,1,7,8,4,6,2));
List<List<Integer>> sudoku3 = Arrays.asList(
Arrays.asList(7,9,4,5,8,3,2,1,6),
Arrays.asList(8,3,6,7,2,1,4,9,5),
Arrays.asList(1,5,2,4,9,6,7,8,3),
Arrays.asList(3,7,1,2,6,4,9,5,8),
Arrays.asList(5,2,9,3,7,8,1,6,4),
Arrays.asList(6,4,8,9,1,5,3,2,7),
Arrays.asList(9,6,7,3,8,2,5,4,1),
Arrays.asList(4,8,3,1,5,9,6,7,2),
Arrays.asList(2,1,5,6,4,7,8,3,9));
List<List<Integer>> sudoku4 = Arrays.asList(
Arrays.asList(7,9,4,5,8,3,2,1,6),
Arrays.asList(8,3,6,7,2,1,4,9,5),
Arrays.asList(1,5,2,4,9,6,7,8,3),
Arrays.asList(3,7,1,2,6,4,9,5,8),
Arrays.asList(5,2,9,3,7,8,1,6,4),
Arrays.asList(6,4,8,9,1,5,3,2,7),
Arrays.asList(9,6,7,8,3,2,5,4,1),
Arrays.asList(4,8,3,1,5,9,6,7,2),
Arrays.asList(2,1,5,6,4,7,8,3,9));
List<List<Integer>> sudoku5 = Arrays.asList(
Arrays.asList(3,1,6,5,7,8,4,9,2),
Arrays.asList(5,2,9,1,3,4,7,6,8),
Arrays.asList(4,8,7,6,2,5,9,3,1),
Arrays.asList(2,6,3,4,1,9,5,8,7),
Arrays.asList(9,7,4,8,6,3,1,2,5),
Arrays.asList(8,5,1,7,9,2,6,4,3),
Arrays.asList(1,3,8,9,4,7,2,5,6),
Arrays.asList(6,9,2,3,5,1,8,7,4),
Arrays.asList(7,4,5,2,8,6,3,1,9));
List<List<Integer>> sudoku6 = Arrays.asList(
Arrays.asList(5,3,4,6,7,8,9,1,2),
Arrays.asList(6,7,2,1,9,5,3,4,8),
Arrays.asList(1,9,8,3,4,2,5,6,7),
Arrays.asList(8,5,9,7,6,1,4,2,3),
Arrays.asList(4,2,6,8,5,3,4,9,1),
Arrays.asList(7,1,3,9,2,4,8,5,6),
Arrays.asList(9,6,1,5,3,7,2,8,4),
Arrays.asList(2,8,7,4,1,9,6,3,5),
Arrays.asList(3,4,5,2,8,6,1,7,9));
List<List<Integer>> sudoku7 = Arrays.asList(
Arrays.asList(6,6,6,6,6,6,6,6,6),
Arrays.asList(6,6,6,6,6,6,6,6,6),
Arrays.asList(6,6,6,6,6,6,6,6,6),
Arrays.asList(6,6,6,6,6,6,6,6,6),
Arrays.asList(6,6,6,6,6,6,6,6,6),
Arrays.asList(6,6,6,6,6,6,6,6,6),
Arrays.asList(6,6,6,6,6,6,6,6,6),
Arrays.asList(6,6,6,6,6,6,6,6,6),
Arrays.asList(6,6,6,6,6,6,6,6,6));
System.out.println(checkSudoku(sudoku1));//LINE 6 INVALID
System.out.println(checkSudoku(sudoku2));//VALID
System.out.println(checkSudoku(sudoku3));//COLUMN 3 INVALID
System.out.println(checkSudoku(sudoku4));//VALID
System.out.println(checkSudoku(sudoku5));//REGION 1 INVALID
System.out.println(checkSudoku(sudoku6));//LINE 4 INVALID
System.out.println(checkSudoku(sudoku7));//LINE 0 INVALID
}
}
To embed this project on your website, copy the following code and paste it into your website's HTML: