Untitled

mail@pastecode.io avatar
unknown
java
16 days ago
2.7 kB
1
Indexable
Never
public class Suduko {

    public static boolean issafe(int suduko[][], int row, int col, int digit) {

        // colum cheeck 0 to 8 vertical check if found false them
        for (int i = 0; i < suduko.length; i++) {
            if (suduko[i][col] == digit) {
                return false;
            }

        }
        // row cheeck 0 to 8 horizantal check if found false them
        for (int j = 0; j < suduko.length; j++) {
            if (suduko[row][j] == digit) {
                return false;
            }

        }

        // grid check 3*3 matrix

        int sr = (row / 3) * 3;
        int sc = (col / 3) * 3;
        for (int i = sr; i < sr + 3; i++) {
            for (int j = sc; j < sc + 3; j++) {
                if (suduko[i][j] == digit) {
                    return false;
                }

            }

        }

        return true;

    }

    public static boolean sudukosolver(int suduko[][], int row, int col) {
//atlast row 9 n-1 true
        if (row == 9) {
            return true;
        }

        //col+1
        int nextrow = row, nextcol = col + 1;
        if (col + 1 == 9) {
            nextrow = row + 1;
            nextcol = 0;
        }

        if (suduko[row][col] != 0) {
            return sudukosolver(suduko, nextrow, nextcol);
        }

        for (int i = 1; i <= suduko.length; i++) {
            if (issafe(suduko, row, col, i)) {
                suduko[row][col] = i;
                if (sudukosolver(suduko, nextrow, nextcol)) {
                    return true;
                }
                suduko[row][col] = 0;
            }
        }

        return false;

    }

    public static void printsuduko(int suduko[][]) {
        for (int i = 0; i < suduko.length; i++) {
            for (int j = 0; j < suduko.length; j++) {
                System.out.print(suduko[i][j] + " ");
            }
            System.out.println();
        }
    }

    public static void main(String[] args) {
        int suduko[][] = { { 3, 0, 6, 5, 0, 8, 4, 0, 0 },
                { 5, 2, 0, 0, 0, 0, 0, 0, 0 },
                { 0, 8, 7, 0, 0, 0, 0, 3, 1 },
                { 0, 0, 3, 0, 1, 0, 0, 8, 0 },
                { 9, 0, 0, 8, 6, 3, 0, 0, 5 },
                { 0, 5, 0, 0, 9, 0, 6, 0, 0 },
                { 1, 3, 0, 0, 0, 0, 2, 5, 0 },
                { 0, 0, 0, 0, 0, 0, 0, 7, 4 },
                { 0, 0, 5, 2, 0, 6, 3, 0, 0 } };

        if (sudukosolver(suduko, 0, 0)) {
            System.out.println("solution exist");
            printsuduko(suduko);
        } else {
            System.out.println("solution doesnot exist");
        }
    }
}
Leave a Comment