-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsudoku_checker.c
77 lines (75 loc) · 2.02 KB
/
sudoku_checker.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#include <stdio.h>
#define NUM 9
void check_sudoku(int (*grid_p)[NUM]);
void nineConvert(int *grid,int row,int col);
int main(void){
int grid[NUM][NUM]; // sudoku puzzle
for(int i = 0; i < NUM; ++i){
for(int j = 0; j < NUM; ++j) {
scanf("%d", &grid[i][j]);
}
}
check_sudoku(grid);
return 0;
}
int output[NUM][NUM]={0};
void check_sudoku(int (*grid_p)[NUM]){
for(int i=0;i<NUM;i++){
for(int j=0;j<NUM;j++){
for(int k=j+1;k<NUM;k++){
if(*((*(grid_p+i))+j)==*((*(grid_p+i))+k)){
// printf("%d %d",i ,j);
output[i][j]++;
// printf("\n%d %d",i,k);
output[i][k]++;
}
}
}
}
for(int i=0;i<NUM;i++){
for(int j=0;j<NUM;j++){
for(int k=j+1;k<NUM;k++){
if(*((*(grid_p+j))+i)==*((*(grid_p+k))+i)){
// printf("%d %d",j ,i);
output[j][i]++;
// printf("\n%d %d",k,i);
output[k][i]++;
}
}
}
}
for(int i=0;i<NUM;i+=3){
for(int j=0;j<NUM;j+=3){
nineConvert(grid_p,i,j);
}
}
for(int i=0;i<NUM;i++){
for(int j=0;j<NUM;j++){
if(output[i][j]){
printf("(%d,%d)\n",i,j);
}
}
// printf("\n");
}
}
void nineConvert(int *grid,int row,int col){
int nineArr[NUM];
int count=0;
for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
*(nineArr+count++)=*(grid+j+col+9*(row+i));
// printf("%d",*(grid+j+col+9*(row+i)));
}
}
// printf("%d",*grid);
for(int i=0;i<NUM;i++){
for(int j=i+1;j<NUM;j++){
if(*(nineArr+i)==*(nineArr+j)){
// printf("\n%d %d",row+i/3,col+i%3);
output[row+i/3][col+i%3]++;
// printf("\n%d %d",row+j/3,col+j%3);
output[row+j/3][col+j%3]++;
}
}
}
}