# Thread: How to check square block condition in sudoku for its validity?

1. ## How to check square block condition in sudoku for its validity?

Thank you for helping!!!!1

2. So where is YOUR effort?

3. There are more elegant ways to do this, but take a look at this basic idea:

Code:
```int TestBox(int nudigit, int r, int c)	{    //just tests one box
int c1, r1, i, n, lowrow, lowcol;
/*get lowrow & lowcol*/
switch (r)	{
case 1: case 2: case 3: lowrow = 1; break;
case 4: case 5: case 6: lowrow = 4; break;
case 7: case 8: case 9: lowrow = 7; break;
}
if(c < 4)
lowcol = 1;
else if(c > 3 && c < 7)
lowcol = 4;
else
lowcol = 7;

for(r1 = lowrow; r1 < lowrow + 3; r1++)	{
for(c1 = lowcol; c1 < lowcol + 3; c1++)	{
if(nudigit == A[r1][c1])
return 0;
}
}
return 1;```
This tests one digit which you are trying out, to see if it can work in the box of 9. In this version, I used rows and columns 1 through 9, instead of 0 through 8, so you may need to adjust.

4. here is my effort from line 36 to 57
Code:
``` 1 #include<stdio.h>
2 #include<math.h>
3 int main()
4 {
5         int t,count=1,i,j,k=0,n,z,l=0,p,f=0,key=0;
6         int a[100][100];
7         scanf("%d",&t);
8         for(count=1;count<=t;count++)
9         {
10                 scanf("%d",&n);
11                 for(i=0;i<n;i++)
12                         for(j=0;j<n;j++)
13                                 scanf("%d",&a[i][j]);
14                 for(i=0;i<n;i++)
15                 {
16                         z=0;
17                         for(j=0;j<n;j++)
18                                 z=z+a[i][j];
19                         if(z==(n*(n+1))/2)
20                                 k=1;
21                         else
22                                 k=0;
23                 }

24                 for(j=0;j<n;j++)
25                 {
26                         z=0;
27                         for(i=0;i<n;i++)
28                                 z=z+a[i][j];
29                         if(z==(n*(n+1))/2)
30                                 l=1;
31                         else
32                                 l=0;
33                 }
34                 z=sqrt(n);
35                 u=0;v=0;
36                 for(i=u;i<u+z&&i<n;i++)
37                 {
38                         for(j=v;j<v+z&&j<n;j++)
39                         {
40                                 printf("%d",a[i][j]);
41                                 z=z+a[i][j];
42                                 f++;
43                         }
44                         if(
45                         if(i==u+z-1&&j==v+z-1)
46                                 v=v+z;
47                         printf("\n");
48                         if(f==n)
49                         {
50                                 f=0;
51                         if(z==(n*(n+1))/2)
52                                 p=1;
53                         else
54                                 p=0;
55                         z=0;
56                         }
57                 }
58                 if(k==1&&l==1&&p==1)
59                         printf("YES\n");
60                 else if(k!=1||l!=1||p!=1)
61                         printf("NO\n");
62         }
63         return 0;
64 }```

5. How about removing the extra set of line numbers?