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
    }
}

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: