Solved

pls hurry....its on java sudoku solver(boolean version)

Posted on 2007-03-29
12
346 Views
Last Modified: 2013-11-23
Hi,i hav written the code on sudoku solver(boolean version) in java language.I'm new to this java field so finding it difficult debug the error.My question is,is it mandatory to include main function in a new class and also i'm finding some errors like ' { ' expected n many things though i hav put the braces correctly,also pls check the syntax of calling a function in other class like resetRow n all are correct.Thank you


  public class SudokuDemo {
   public static void main(String argv[])
   {
       Sudoku j=new Sudoku();
       while(checkSudoku()==-1){
           for(int row=0;row<9;row++){
               for(int column=0;column<9;column++){
                   for(int k=0;k<9;k++){
                       if(fillPossibilitiesmatrix[row][column][k]!=0){
                            j.resetRow(row,column);
                            j.resetColumn(column,number);
                            j.resetBox(box,number);
                       }}}}  
               int sameNumber;
                 for(int row=0;row<9;row++){
               for(int column=0;column<9;column++){
                             sameNumber=fillPossibilitiesmatrix[row][column][0];
                   for(int k=0;k<9;k++){                  
                       if(fillPossibilitiesmatrix[row][column][k]==sameNumber){      
                   puzzle[row][column]=sameNumber;}
                       if(checkSudoku()==0){
                           break;
                       }
                   }}
                 }
               printSudoku();
           }
   }
0
Comment
Question by:navaneeth_f50
  • 4
  • 4
  • 2
  • +1
12 Comments
 
LVL 30

Expert Comment

by:mayankeagle
ID: 18819403
I guess just add an } to the end - the class is not closed perhaps.
0
 
LVL 2

Author Comment

by:navaneeth_f50
ID: 18819433
i tried that one too.....but problem not getting fixed,it was also showing ' ; ' expected......i tried several possibilities......
0
 
LVL 10

Accepted Solution

by:
ADSLMark earned 125 total points
ID: 18819586
Maybe you didn't post everything, but for now you forgot some methods in the SudokuDemo class:
    public static void printSudoku() {}
    public static int checkSudoku() { return 0; }
Some fields were unreferenced in the SudokuDemo class:
    private static int number; //calls to j.resetColumn(column,number); and j.resetBox(box,number);
    private static int box; //call to j.resetBox(box,number);
    private static int[][] puzzle;
    private static int[][][] fillPossibilitiesmatrix;
And you forgot to create a class Sudoku, which you create with new Sudoku();
This Sudoku class needs to contain:
class Sudoku
{
    public void resetRow(int row, int column) {}
    public void resetColumn(int column, int number) {}
    public void resetBox(int box, int number) {}
}

I hope it helps, but I could give you more advice if you post complete code.
Mark
0
 
LVL 30

Expert Comment

by:mayankeagle
ID: 18819615
Yes pls post the full code.
0
 
LVL 30

Expert Comment

by:mayankeagle
ID: 18819619
>> it was also showing ' ; ' expected

That is not in the current code
0
 
LVL 2

Author Comment

by:navaneeth_f50
ID: 18819639
here is  the entire code.........
  public class Sudoku {
    public final static int puzzle[][] = {
        {9, 6, 0, 5, 0, 0, 0, 8, 3},
        {3, 0, 0, 2, 7, 9, 0, 0, 4},
        {0, 0, 2, 6, 0, 0, 0, 9, 0},
        {0, 9, 0, 0, 0, 6, 7, 0, 0},
        {7, 4, 0, 0, 0, 0, 0, 5, 1},
        {0, 0, 8, 4, 0, 0, 0, 2, 0},
        {0, 7, 0, 0, 0, 5, 4, 0, 0},
        {6, 0, 0, 0, 9, 1, 0, 0, 5},
        {5, 1, 0, 0, 0, 8, 0, 3, 2}
    };
   
    static int fillPossibilitiesmatrix[][][]=new int [9][9][9];
   
    static boolean fillPossibilitiesmatrix() {
        for(int i=0; i<9; i++) {
            for(int j=0;j<9;j++) {
                for(int k=0;k<9;k++) {
                    fillPossibilitiesmatrix[i][j][k]=0;
                }
            }
        }
    }
   
  public static void resetPossiblitiesvalue(int row, int column, int number) {
        for(int i=row; i<9; i++) {
            for(int j=column; j<9; j++) {
                for(int k=0; k<9; k++) {
                  if(fillPossibilitiesmatrix[i][j][k]== number){
                  fillPossibilitiesmatrix[i][j][k]=0; }
                }
               
            }
         }
    }
   
    public static int getCellSolution(int row,int column){
        array temp[]=new int [9];
       int value[]=new int[9];
         int value[]={1, 2, 3, 4, 5, 6, 7, 8, 9};
        for (int i=0;i<9;i++) {
            if (i==row) {
                i++; }
            for(int j=0;j<9;j++) {
                if (j==column) {
                    j++; }
                for(int k=0;k<9;k++) {
                    if(fillPossibilitiesmatrix[i][j][k]==array[k]) {
                        new temp[i]=array[k];}
                }}}
       
        for(int i=0;i<9;i++){
            for(int j=0;j<9;j++){
                if(temp[j]>temp[j+1]){
                    int t=temp[j];
                    temp[j]=temp[j+1];
                    temp[j+1]=t;
                }}}
       
        for(int i=0;i<9;i++){
            if (temp[j]!=array[i]){
                return array[i]; }
            else return -1;
        }
    }
   
    public static void printSudoku() {
        int row,column;
        for(row=0; row<9; row++) {
            for(column=0; column<9; column++){
                System.err.print(puzzle[row][column] + " ");
                }
            System.err.println(" ");
            }
    }
   
   
     public static void resetColumn(int column,int number)
     {
         int i=new int[0];
if(i!=column-1)
{ i++;}
 for(int j=0;j<9;j++){
             for(int k=0;k<9;k++)
                 if(fillPossibilitiesmatrix[i][j][k]==number)
                 { fillPossibilitiesmatrix[i][j][k]=false;}
}
             
}
   public static void resetRow(int row,int number)
     {
         int i=new int[0];
if(i!=row-1)
{ i++;}
 for(int j=0;j<9;j++){
             for(int k=0;k<9;k++)
                 if(fillPossibilitiesmatrix[i][j][k]==number)
                 { fillPossibilitiesmatrix[i][j][k]=false;}
 }}
    public static void resetBox(int box,int number)
    {            
          if(box==0){
                row=0;
                column=0;
             break here;      
                        }
            else if(box==1){
                row=0;
                column=3;
            break here;}
            else if(box==2){
                row=0;
                column=6;
                break here;}  
            else if(box%3==0){
                row=box;
                column=0;
               break here;}
                else if(box%3==1){
                row=box-1;
                column=3;
               break here;}
            else if(box%3==2){
                row=box-2;
                column=6;
                break here;}
            else System.out.println("wrong Box");
           
  here:    rowlimit=row+3;
        columnlimit=column+3;
                while(row!=rowlimit )
                {
            for(int i=row;i<rowlimit;i++){
                for(int j=column;j<columnlimit;j++){
                    for(int k=0;k<9;k++)
                     if(fillPossibilitiesmatrix[i][j][k]==number)
                 { fillPossibilitiesmatrix[i][j][k]=false;}
                }if(j==columnlimit){j=column;}
               
            }
                }              
    }
               
       
   
    public static int checkSudoku (){
        int  count=0;
        for(int row=0;row<9;row++){
            for(int column=0;column<9;column++){
                for(int k=0;k<9;k++){
                    if(fillPossibilitiesmatrix[row][column][k]!=0)
                    {count++;}
                }
            }
        }
        if(count==81)
        { System.out.println("hurray.......Sudoku solved!!!!!");
           return 0 ;}
       
          else return -1;
    }
   
     
    static int getBox(int row,int column){
          while(true){
              if(row<=2){
         
                if(column<=2){
                    return 1;
                    break;}
                    else if(column>2 && column<5){ return 2; break;}
                    else if(column>5 && column<8){return 3; break;}
                }
            else if(row<=2){
                if(column<=2){
                    return 1;
                    break;}
                     else if(column>2 && column<5){ return 2; break;}
                    else if(column>5 && column<8){return 3; break;}
                }
            else if(row<=2){
                if(column<=2){
                    return 1;
                    break;}
                     else if(column>2 && column<5){ return 2; break;}
                    else if(column>5 && column<8){return 3; break;}
                }  
               else
            return -1;
        }  
    }
 
   public class SudokuDemo {
   public static void main(String argv[])
   {
       Sudoku j=new Sudoku();
       while(checkSudoku()==-1){
           for(int row=0;row<9;row++){
               for(int column=0;column<9;column++){
                   for(int k=0;k<9;k++){
                       if(fillPossibilitiesmatrix[row][column][k]!=0){
                            j.resetRow(row,column);
                            j.resetColumn(column,number);
                            j.resetBox(box,number);
                       }}}}  
               int sameNumber;
                 for(int row=0;row<9;row++){
               for(int column=0;column<9;column++){
                             sameNumber=fillPossibilitiesmatrix[row][column][0];
                   for(int k=0;k<9;k++){                  
                       if(fillPossibilitiesmatrix[row][column][k]==sameNumber){      
                   puzzle[row][column]=sameNumber;}
                       if(checkSudoku()==0){
                           break;
                       }
                   }}
                 }
               printSudoku();
           }
   }
   
0
Free Trending Threat Insights Every Day

Enhance your security with threat intelligence from the web. Get trending threat insights on hackers, exploits, and suspicious IP addresses delivered to your inbox with our free Cyber Daily.

 
LVL 30

Expert Comment

by:mayankeagle
ID: 18819698
array value[] should be int value[]

int i = new int[0] should be int i
0
 
LVL 10

Expert Comment

by:ADSLMark
ID: 18819778
Maybe you should try to compile more often.. and maybe a little better layout.. anyway I corrected all mistakes, now it compiles, but i have no clue if it works correctly (i highly doubt it). A sudoku solver can be programmed in less lines i guess.
Some common mistakes you made:
after a return you do not need a break.

return;
break;

is useless.
Also if you do an
if(..)
{
}
elseif (..)
{
}
else
{
}
here:

you do not need "break here;", since it will automatically go there
Also, you messed up with using boolean or ints in your fillepossibilitiesmatrix, so i changed everything to ints, but i wasn't sure what you wanted.
Also, you should call methods which you define in the Sudoku class, on the sudoku object, in other words: j.printSudoku(), etc.
Another problem was initializing a variable like an array while it was not an array, like:

int i = new int[0];

just write:

int i = 0;

Well there were more, but ok here this code compiles:
//Sudoku.java//
public class Sudoku
{
    public static final int puzzle[][] =
    { { 9, 6, 0, 5, 0, 0, 0, 8, 3 }
    , { 3, 0, 0, 2, 7, 9, 0, 0, 4 }
    , { 0, 0, 2, 6, 0, 0, 0, 9, 0 }
    , { 0, 9, 0, 0, 0, 6, 7, 0, 0 }
    , { 7, 4, 0, 0, 0, 0, 0, 5, 1 }
    , { 0, 0, 8, 4, 0, 0, 0, 2, 0 }
    , { 0, 7, 0, 0, 0, 5, 4, 0, 0 }
    , { 6, 0, 0, 0, 9, 1, 0, 0, 5 }
    , { 5, 1, 0, 0, 0, 8, 0, 3, 2 } };

    public static int fillPossibilitiesmatrix[][][] = new int[9][9][9];

    //public static boolean fillPossibilitiesmatrix()
    public static void fillPossibilitiesmatrix()
    {
        for (int i = 0; i < 9; i++)
        {
            for (int j = 0; j < 9; j++)
            {
                for (int k = 0; k < 9; k++)
                {
                    fillPossibilitiesmatrix[i][j][k] = 0;
                }
            }
        }
    }

    public static void resetPossiblitiesvalue(int row, int column,int number)
    {
        for (int i = row; i < 9; i++)
        {
            for (int j = column; j < 9; j++)
            {
                for (int k = 0; k < 9; k++)
                {
                    if (fillPossibilitiesmatrix[i][j][k] == number)
                    {
                        fillPossibilitiesmatrix[i][j][k] = 0;
                    }
                }

            }
        }
    }

    public static int getCellSolution(int row, int column)
    {
        int temp[] = new int[9];
        int value[] = new int[9];
        //int value[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
        int array[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
        for (int i = 0; i < 9; i++)
        {
            if (i == row)
            {
                i++;
            }
            for (int j = 0; j < 9; j++)
            {
                if (j == column)
                {
                    j++;
                }
                for (int k = 0; k < 9; k++)
                {
                    if (fillPossibilitiesmatrix[i][j][k] == array[k])
                    {
                        temp[i] = array[k];
                    }
                }
            }
        }

        for (int i = 0; i < 9; i++)
        {
            for (int j = 0; j < 9; j++)
            {
                if (temp[j] > temp[j + 1])
                {
                    int t = temp[j];
                    temp[j] = temp[j + 1];
                    temp[j + 1] = t;
                }
            }
        }

        for (int i = 0; i < 9; i++)
        {
            //if (temp[j] != array[i])
            if (temp[i] != array[i])
            {
                return array[i];
            }
            else
            {
                return -1;
            }
        }
        //need return statement
        return -1;
    }

    public static void printSudoku()
    {
        int row, column;
        for (row = 0; row < 9; row++)
        {
            for (column = 0; column < 9; column++)
            {
                System.err.print(puzzle[row][column] + " ");
            }
            System.err.println(" ");
        }
    }


    public static void resetColumn(int column, int number)
    {
        int i = 0;
        if (i != column - 1)
        {
            i++;
        }
        for (int j = 0; j < 9; j++)
        {
            for (int k = 0; k < 9; k++)
            {
                if (fillPossibilitiesmatrix[i][j][k] == number)
                {
                    //fillPossibilitiesmatrix[i][j][k] = false;
                    fillPossibilitiesmatrix[i][j][k] = 0;
                }
            }
        }
    }

    public static void resetRow(int row, int number)
    {
        int i = 0;
        if (i != row - 1)
        {
            i++;
        }
        for (int j = 0; j < 9; j++)
        {
            for (int k = 0; k < 9; k++)
            {
                if (fillPossibilitiesmatrix[i][j][k] == number)
                {
                    //fillPossibilitiesmatrix[i][j][k] = false;
                    fillPossibilitiesmatrix[i][j][k] = 0;
                }
            }
        }
    }

    public static void resetBox(int box, int number)
    {
        int column = 0;
        int row = 0;
        if (box == 0)
        {
            row = 0;
            column = 0;
        }
        else if (box == 1)
        {
            row = 0;
            column = 3;
        }
        else if (box == 2)
        {
            row = 0;
            column = 6;
        }
        else if (box % 3 == 0)
        {
            row = box;
            column = 0;
        }
        else if (box % 3 == 1)
        {
            row = box - 1;
            column = 3;
        }
        else if (box % 3 == 2)
        {
            row = box - 2;
            column = 6;
        }
        else
        {
            System.out.println("wrong Box");
        }

        int rowlimit = row + 3;
        int columnlimit = column + 3;
        while (row != rowlimit)
        {
            for (int i = row; i < rowlimit; i++)
            {
                for (int j = column; j < columnlimit; j++)
                {
                    for (int k = 0; k < 9; k++)
                    {
                        if (fillPossibilitiesmatrix[i][j][k] == number)
                        {
                            //fillPossibilitiesmatrix[i][j][k] = false;
                            fillPossibilitiesmatrix[i][j][k] = 0;
                        }
                    }
                }
                /*if (j == columnlimit)
                {
                    j = column;
                }*/
            }
        }
    }


    public static int checkSudoku()
    {
        int count = 0;
        for (int row = 0; row < 9; row++)
        {
            for (int column = 0; column < 9; column++)
            {
                for (int k = 0; k < 9; k++)
                {
                    if (fillPossibilitiesmatrix[row][column][k] != 0)
                    {
                        count++;
                    }
                }
            }
        }
        if (count == 81)
        {
            System.out.println("hurray.......Sudoku solved!!!!!");
            return 0;
        }
        else
        {
            return -1;
        }
    }


    static int getBox(int row, int column)
    {
        while (true)
        {
            if (row <= 2)
            {
                if (column <= 2)
                {
                    return 1;
                }
                else if (column > 2 && column < 5)
                {
                    return 2;
                }
                else if (column > 5 && column < 8)
                {
                    return 3;
                }
            }
            else if (row <= 2)
            {
                if (column <= 2)
                {
                    return 1;
                }
                else if (column > 2 && column < 5)
                {
                    return 2;
                }
                else if (column > 5 && column < 8)
                {
                    return 3;
                }
            }
            else if (row <= 2)
            {
                if (column <= 2)
                {
                    return 1;
                }
                else if (column > 2 && column < 5)
                {
                    return 2;
                }
                else if (column > 5 && column < 8)
                {
                    return 3;
                }
            }
            else
            {
                return -1;
            }
        }
    }
}

//SudokuDemo.java//
public class SudokuDemo
{
    public static void main(String argv[])
    {
        Sudoku j=new Sudoku();

        while(j.checkSudoku()==-1)
        {
            for(int row=0;row<9;row++)
            {
                for(int column=0;column<9;column++)
                {
                    for(int k=0;k<9;k++)
                    {
                        if(j.fillPossibilitiesmatrix[row][column][k]!=0)
                        {
                            //j.resetRow(row,column);
                            //j.resetColumn(column,number);
                            //j.resetBox(box,number);
                        }
                    }
                }
            }
        }
        int sameNumber;
        for(int row=0;row<9;row++)
        {
            for(int column=0;column<9;column++)
            {
                sameNumber = j.fillPossibilitiesmatrix[row][column][0];
                for(int k=0;k<9;k++)
                {
                    if(j.fillPossibilitiesmatrix[row][column][k]==sameNumber)
                    {
                        j.puzzle[row][column]=sameNumber;
                    }
                    if(j.checkSudoku()==0)
                    {
                        break;
                    }
                }
            }
        }

        j.printSudoku();
    }
}

Mark
0
 
LVL 20

Expert Comment

by:gatorvip
ID: 18822749
Sudoku j=new Sudoku();
 while(j.checkSudoku()==-1) ...

this will result in an infinite loop, you don't even have a constructor in the Sudoku class, so only the default one will be used. However, there's no initializations done, of any kind.
0
 
LVL 20

Expert Comment

by:gatorvip
ID: 18822866
Also, there's no reason to declare everything in Sudoku.java as static, since you're initializing an instance of it anyway (in SudokuDemo.java).
0
 
LVL 2

Author Comment

by:navaneeth_f50
ID: 18831887
here is the revised code.....i added the comments in between the code so that u guys will come to know what logic i'm using to solve the puzzle....pls check and comment if anything is wrong in that....  




 public class Sudoku {
       // example sudoku puzzle/
    public final static int puzzle[][] = {
        {9, 6, 0, 5, 0, 0, 0, 8, 3},
        {3, 0, 0, 2, 7, 9, 0, 0, 4},
        {0, 0, 2, 6, 0, 0, 0, 9, 0},
        {0, 9, 0, 0, 0, 6, 7, 0, 0},
        {7, 4, 0, 0, 0, 0, 0, 5, 1},
        {0, 0, 8, 4, 0, 0, 0, 2, 0},
        {0, 7, 0, 0, 0, 5, 4, 0, 0},
        {6, 0, 0, 0, 9, 1, 0, 0, 5},
        {5, 1, 0, 0, 0, 8, 0, 3, 2}
    };
   
   static int fillPossibilitiesmatrix[][][]=new int [9][9][9];

    private static int number;

 // a three dimensional matrix to hold the possibilities value/
 //copy the puzzle into 3D matrix/
 //if the value in 3D is 0,then its 3rd Dimension is filled with possible values like 1,2,3..../
   
   public static void fillPossibilitiesMatrix() {
     
          int value[]= { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
          for(int i=0;i<9;i++)
          {
              for(int j=0;j<9;j++)
              {
                  for(int k=0;k<9;k++)
                  {
                      fillPossibilitiesmatrix[i][j][k]=puzzle[i][j];
                  }
              }
           
          }
         
           for(int i=0;i<9;i++)
           {
              for(int j=0;j<9;j++)
              {
                  for(int k=0;k<9;k++)
                  {
                     if(fillPossibilitiesmatrix[i][j][k]==0)
                     {
              for(int l=0;l<9;l++){fillPossibilitiesmatrix[i][j][l]=value[l];}
                     }
                  }
              }
           }
   }
     
   //reset the particular value for this cell/
   //when invoked  with parameters 2,5,7 it means that the cell in row2,column5, doesnt hav 7 as the possible value/
     
    public static void resetPossiblitiesvalue(int row, int column, int number) {
          int value[]= { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
       
                for(int k=0; k<9; k++)
                {
                  if(fillPossibilitiesmatrix[row][column][k]== number)
                  {fillPossibilitiesmatrix[row][column][k]=0; }
                }
               
           
    }
   
    //looks into possibilities matrix and if the cell can have only one possible value/
    //then returns the correct number from 1 to 9,else returns -1/
   
    public static int getCellSolution(int row,int column){
        int temp[]=new int [9];
     
         int value[]= { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
        for (int i=0;i<9;i++) {
            if (i==row) {
                i++; }
            for(int j=0;j<9;j++) {
                if (j==column) {
                    j++; }
                for(int k=0;k<9;k++) {
                    if(fillPossibilitiesmatrix[i][j][k]==value[k]) {
                         temp[i]=value[k];}
                }}}
 //sorts the temp array/      
        for(int i=0;i<9;i++){
            for(int j=0;j<8;j++){
                if(temp[j]>temp[j+1]){
                    int t=temp[j];
                    temp[j]=temp[j+1];
                    temp[j+1]=t;
                }}}
    //compares and returns a value/    
        for(int i=0;i<9;i++){
             for(int j=0;j<9;j++)
            if (temp[j]!=value[i]){
                return value[i];}
            }
         return -1;
    }
   
    //prints sudoku as 9 rows and 9 columns each/
   
    public static void printSudoku() {
        int row,column;
        for(row=0; row<9; row++) {
            for(column=0; column<9; column++){
                System.err.print(puzzle[row][column] + " ");
                }
            System.err.println(" ");
            }
    }
   
    //given the column number and the final value,resets the number in possibilities/
    //for the entire column/
    //for example resetColumn(3,6) indicates number 6 is already present in some/
    //cell of column3,so it can be removed from the list of possibilitiesof the/
    //entire column 3/
   
     public static void resetColumn(int column,int number)
     {
         int i=0;
//if(i!=column-1)/
//{ i++;}/
         i=column;
 for(int j=0;j<9;j++){
             for(int k=0;k<9;k++)
                 if(fillPossibilitiesmatrix[i][j][k]==number)
                 { fillPossibilitiesmatrix[i][j][k]=0;}
}
             
}
     
    //given the row number and the final value,resets the number in possibilities/
    //for the entire row/
    //for example resetRow(3,6) indicates number 6 is already present in some/
    //cell of row3,so it can be removed from the list of possibilitiesof the/
    //entire row 3/
     
   public static void resetRow(int row,int number)
     {
         int i=0;
i=row;
 for(int j=0;j<9;j++){
             for(int k=0;k<9;k++)
                 if(fillPossibilitiesmatrix[i][j][k]==number)
                 { fillPossibilitiesmatrix[i][j][k]=0;}
 }}
   
   //same as above for the box/
   //a small function is included to convert box number into row&column/
   
    public static void resetBox(int box,int number)
    {
        int row = 0,column = 0;
        int rowlimit,columnlimit;
   //returns a row and column/
        if(box<=2){    
  switch(box){
    case(0):{
                row=0;
                column=0;
                break;
          }      
                       
   case(1):{
                row=0;
                column=3;
                break;
          }
         
    case(2):{
                row=0;
                column=6;
                break;
          } } }
   else if(box>2){
   switch(box%3){      
   case(0):{
                row=box;
                column=0;
                break;
           }
   
   case(1): {
                row=box-1;
                column=3;
                break;
            }
         
   case(2): {
                row=box-2;
                column=6;
                break;
            }
  }       }
                             
        rowlimit=row+2;
        columnlimit=column+2;
    //reset the row and column..i mean that block/    
    while(row!=rowlimit )
     {
            for(int i=row;i<rowlimit;i++)
            {
                for(int j=column;j<=columnlimit;j++)
                {
                    for(int k=0;k<9;k++)
                    {
                        if(fillPossibilitiesmatrix[i][j][k]==number)
                        fillPossibilitiesmatrix[i][j][k]=0;
                    }      
                  if(j==columnlimit)
                  row++;
                }              
            }
      }
 }        
       
   //checks the puzzle matrix and returns the count af all cells that are filled/
    //in.a count of 81 implies a solved puzzle/
   
    public static int checkSudoku (){
        int  count=0;
        for(int row=0;row<9;row++){
            for(int column=0;column<9;column++){
                for(int k=0;k<9;k++){
                    if(fillPossibilitiesmatrix[row][column][k]!=0)
                    {count++;}
                }
            }
        }
        if(count==81)
        { System.out.println("hurray.......Sudoku solved!!!!!");
           return 0 ;}
       
          else return -1;
    }
   
     //get the box,given the row & column/
    static int getBox(int row,int column){
          while(true){
              if(row<=2){
                    if(column < 2){return 1;}
                   
                    else if(column>2 && column<5){ return 2; }
                    else if(column>5 && column<8){ return 3; }
                }
          else if(row<=2){
               if (column<2){ return 1; }
               else if(column>2 && column<5){ return 2; }
               else if(column>5 && column<8){ return 3; }
                }
                                   
               
          else if(row<=2){
                 if(column<2){return 1;}
                 else if(column>2 && column<5){ return 2; }
                 else if(column>5 && column<8) { return 3; }
                   
                }  
    else
            return -1;
        }  
    }
             
    // while puzzle is not solved.the logic is as follows/
    //reset the possibilities matrix for that row/
    //reset the possibilities matrix for that column/
    //reset the possibilities matrix for that box/
    //check in possibilities matrix whether any cell has single value/
    //if so fill that value in puzzle matrix/
    //check if puzzle is solved and quit/
    //end of while/
     public static void main(String argv[])
   { int box = 0;
     
     Sudoku.fillPossibilitiesMatrix();
     
             while(checkSudoku()==-1){
           for(int row=0;row<9;row++){
               for(int column=0;column<9;column++){
                   for(int k=0;k<9;k++){
                       Sudoku.getCellSolution(row,column);
                       if(fillPossibilitiesmatrix[row][column][k]!=0){
                           number=fillPossibilitiesmatrix[row][column][k];
                            Sudoku.resetRow(row,number);
                            Sudoku.resetColumn(column,number);
                            Sudoku.getBox(row,column);
                            Sudoku.resetBox(box,number);
                            Sudoku.resetPossiblitiesvalue(row,column,number);
                       }}}}}  
               int sameNumber;
                 for(int row=0;row<9;row++){
               for(int column=0;column<9;column++){
                             sameNumber=fillPossibilitiesmatrix[row][column][0];
                   for(int k=0;k<9;k++){                  
                       if(fillPossibilitiesmatrix[row][column][k]==sameNumber){      
                   puzzle[row][column]=sameNumber;}
                       if(checkSudoku()==0)
                           break;
                       
                   }}
                 }
               Sudoku.printSudoku();
           }

       }
     
     
 
Thanks
Navaneeth
0
 
LVL 2

Author Comment

by:navaneeth_f50
ID: 18873123
No one interacted to my question after posting their comments one or two times.Any way i have to appreciate them all for spending their precious time on my question.
0

Featured Post

Better Security Awareness With Threat Intelligence

See how one of the leading financial services organizations uses Recorded Future as part of a holistic threat intelligence program to promote security awareness and proactively and efficiently identify threats.

Join & Write a Comment

Suggested Solutions

Title # Comments Views Activity
return in catch statement 1 40
topping2 challenge 13 63
Eclipse Neon and jdk 1.8.0 11 72
Image decoding from Camera 3 48
Introduction This article is the last of three articles that explain why and how the Experts Exchange QA Team does test automation for our web site. This article covers our test design approach and then goes through a simple test case example, how …
Java functions are among the best things for programmers to work with as Java sites can be very easy to read and prepare. Java especially simplifies many processes in the coding industry as it helps integrate many forms of technology and different d…
Viewers learn about the “while” loop and how to utilize it correctly in Java. Additionally, viewers begin exploring how to include conditional statements within a while loop and avoid an endless loop. Define While Loop: Basic Example: Explanatio…
Video by: Michael
Viewers learn about how to reduce the potential repetitiveness of coding in main by developing methods to perform specific tasks for their program. Additionally, objects are introduced for the purpose of learning how to call methods in Java. Define …

746 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!

Get 1:1 Help Now