Solved

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

Posted on 2007-03-29
12
348 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:Mayank S
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:Mayank S
ID: 18819615
Yes pls post the full code.
0
 
LVL 30

Expert Comment

by:Mayank S
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
Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

 
LVL 30

Expert Comment

by:Mayank S
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

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
split53 challenge 7 77
Python Assistance 7 72
unix in java example 9 52
eclipse java  build path 6 43
Are you developing a Java application and want to create Excel Spreadsheets? You have come to the right place, this article will describe how you can create Excel Spreadsheets from a Java Application. For the purposes of this article, I will be u…
In this post we will learn how to connect and configure Android Device (Smartphone etc.) with Android Studio. After that we will run a simple Hello World Program.
Viewers will learn about if statements in Java and their use The if statement: The condition required to create an if statement: Variations of if statements: An example using if statements:
This tutorial covers a step-by-step guide to install VisualVM launcher in eclipse.

919 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

15 Experts available now in Live!

Get 1:1 Help Now