Skip to main content

Sudoku Correctness Logic

Given a 9×9 sudoku we have to evaluate it for its correctness. We have to check both the sub matrix correctness and the whole sudoku correctness.


bool CheckSudoku(int[,] sudoku)
{
    int flag = 0;

// Check rows
for(int row = 0; row < 9; row++)
{
 flag = 0;
 for (int col = 0; col < 9; col++)
 {
  // edited : check range step (see comments)
  if ((sudoku[row, col] < 1)||(sudoku[row, col] > 9)) 
  {
   return false;
  }

  // if n-th bit is set.. but you can use a bool array for readability
  if ((flag & (1 << sudoku[row, col])) != 0) 
  {
   return false;
  }

  // set the n-th bit
  flag |= (1 << sudoku[row, col]); 
 }
}

// Check columns
for(int col= 0; col < 9; col++)
{
 flag = 0;
 for (int row = 0; row < 9; row++)
 {
  if ((flag & (1 << sudoku[row, col])) != 0)
  {
   return false;
  }
  flag |= (1 << sudoku[row, col]);
 }
}

// Check 3x3 boxes
for(int box= 0; box < 9; box++)
{
 flag = 0;
 for (int ofs = 0; ofs < 9; ofs++)
 {
  int col = (box % 3) * 3;
  int row = ((int)(box / 3)) * 3;

  if ((flag & (1 << sudoku[row, col])) != 0)
  {
   return false;
  }
  flag |= (1 << sudoku[row, col]);
 }
}
return true;
}

Comments

Popular posts from this blog

ORACLE 9i practice solutions

Created by BCL easyConverter SDK 3 (HTML Version)

C Questions

C Questions
C Questions

Note : All the programs are tested under Turbo C/C++ compilers.
It is assumed that,
Programs run under DOS environment, The underlying machine is an x86 system, Program is compiled using Turbo C/C++ compiler.
The program output may depend on the information based on this assumptions (for example sizeof(int) == 2 may be assumed).
Predict the output or error(s) for the following:

void main()
{
int const * p=5; printf("%d",++(*p));
}
Answer:
Compiler error: Cannot modify a constant value.
Explanation:
p is a pointer to a "constant integer". But we tried to change the value of the "constant integer".
main()
{
char s[ ]="man"; int i;
for(i=0;s[ i ];i++)
printf("\n%c%c%c%c",s[ i ],*(s+i),*(i+s),i[s]);
}
Answer: mmmm
aaaa nnnn
Explanation

Zoho Interview | Set 1 (Advanced Programming Round)

Third Round: (Advanced Programming Round) Here they asked us to create a “Railway reservation system” and gave us 4 modules. The modules were:
    1. Booking
    2. Availability checking
    3. Cancellation
    4. Prepare chart
We were asked to create the modules for representing each data first and to continue with the implementation phase.

 My Solution :

#include<stdio.h>#include<conio.h>#include<stdlib.h>#include<string.h>#include<iostream.h>#include<time.h>#include<iomanip.h>#include<fstream.h>char f[10]="f";char s[10]="s";int addr,ad,flag,f1,d,m,i,amt;float tamt; class login {public:char id[100];char pass[100];char*password;void getid(){ cout<<"Enter your id:";gets(id); password=getpass("Enter the password:");strcpy(pass,password);}void displayid(){ cout<<"Id:";puts(id); cout<<"Password:";puts(pass);}}; class detail {public:in…