here in this part if ((((bitmap[bi] >> matrix[i][j]) & 0x1) == 0x0) && (((bitmap[bj] >> matrix[i][j]) & 0x1) == 0x0) && (((bitmap[bk] >> matrix[i][j]) & 0x1) == 0x0)) { bitmap[bi] |= 1 << matrix[i][j]; bitmap[bj] |= 1 << matrix[i][j]; bitmap[bk] |= 1 << matrix[i][j];
I think you are checking the same values which u have already set in the bitmap using the fill_bitmap function. like suppose the 1st cell of the matrix has value 5. then using fill bitmap u have the set corresponding 5th bit in all 3 places(row col 3by3 cell) using bi bj and bk. now in the verify function u checking the same bit against that matrix value which u have already set. so everytime ur if statement will evaluate to false. I may be wrong... plz help. On May 28, 9:15 pm, Vishal Thanki <vishaltha...@gmail.com> wrote: > here is the code.. > > #define bi (i) > #define bj (GRID_SIZE+j) > #define bk (int)((GRID_SIZE*2)+(glb_sqrt*(i/glb_sqrt)+(j/glb_sqrt))) > > /*glb_sqrt should be the square root of grid_size (i.e. 3 if its a 9x9 > sudoku). */ > > /* #define bk (int)((GRID_SIZE*2)+(5*(i/5)+(j/5))) */ > > /* > * This function will verify solved grid. It will start with each element > * in grid and update the bitmap step by step. As soon as it encounters an > * element which is already present in bitmap, it will return error. > * > */ > > int verify() > { > int i, j, k; > int bitmap[GRID_SIZE*3] = {0}; > int bmp_idx; > for (i = 0; i < GRID_SIZE; i++) { > for (j = 0; j < GRID_SIZE; j++) { > if ((((bitmap[bi] >> matrix[i][j]) & 0x1) == 0x0) && > (((bitmap[bj] >> matrix[i][j]) & 0x1) > == 0x0) && > (((bitmap[bk] >> matrix[i][j]) & 0x1) > == 0x0)) { > bitmap[bi] |= 1 << matrix[i][j]; > bitmap[bj] |= 1 << matrix[i][j]; > bitmap[bk] |= 1 << matrix[i][j]; > } else { > printf("Sudoku Error: i = %d, j = %d\n", i, > j); > return -1; > } > > } > } > return 0; > > > > > > > > } > On Sat, May 28, 2011 at 11:53 AM, Dumanshu <duman...@gmail.com> wrote: > > Given a n by n matrix. Suggest an algorithm to verify its correctness > > given a configuration. User can enter numbers only between 1 to n. > > I need this in 2 ways - > > 1. for the n by n matrix, suggest an elegant way for validating it. > > 2. suggest a data structure for this sudoku so that the structure aids > > in its verification. > > > thnx for the help. > > > -- > > You received this message because you are subscribed to the Google Groups > > "Algorithm Geeks" group. > > To post to this group, send email to algogeeks@googlegroups.com. > > To unsubscribe from this group, send email to > > algogeeks+unsubscr...@googlegroups.com. > > For more options, visit this group > > athttp://groups.google.com/group/algogeeks?hl=en. -- You received this message because you are subscribed to the Google Groups "Algorithm Geeks" group. To post to this group, send email to algogeeks@googlegroups.com. To unsubscribe from this group, send email to algogeeks+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/algogeeks?hl=en.