Thread: Can someone help me simplify this?

1. Can someone help me simplify this?

This function seems really bulky and I'm pretty sure that it can be simplified down. Can someone help me do this?

Code:
```int sd_solve(int x, int y, int n){              //Checks if n is a valid number to input

int i,j,k;
//Checking the boxes
//For this, we will divide the sudoku into
//nine sections (top-left, top-mid, top-right,
//mid-left, mid-mid, mid-right, bottom-left
//bottom-mid, bottom-right) and check if n is
//already in the section that we are trying to
//solve.

if (y<3) {                                //If n will be in the top section
if (x<3) {                                //If n will be in the top-left
for(i=0;i<3;i++){
for(j=0;j<3;j++){
if(n==sd_finish[i][j]) {
return 0;
}
}
}
}
else if(x<6) {                           //If n will be in the top-mid
for(i=3;i<6;i++){
for(j=0;j<3;j++){
if(n==sd_finish[i][j]) {
return 0;
}
}
}
}
else {                                      //If n will be in the top-right
for(i=6;i<9;i++){
for(j=0;j<3;j++){
if(n==sd_finish[i][j]) {
return 0;
}
}
}
}
}
else if(y<6) {                           //If n will be in the mid section
if(x<3) {                                //If n will be in the mid-left
for(i=0;i<3;i++){
for(j=3;j<6;j++){
if(n==sd_finish[i][j]) {
return 0;
}
}
}
}
else if(x<6) {                           //If n will be in the mid-mid
for(i=3;i<6;i++) {
for(j=3;j<6;j++) {
if(n==sd_finish[i][j]) {
return 0;
}
}
}
}
else {                                      //If n will be in the mid-right
for(i=6;i<9;i++) {
for(j=3;j<6;j++) {
if(n==sd_finish[i][j]) {
return 0;
}
}
}
}
}
else {                                      //If n will be in the bottom section
if(x<3) {                                //If n will be in the bottom-left
for(i=0;i<3;i++) {
for(j=6;j<9;j++) {
if(n==sd_finish[i][j]) {
return 0;
}
}
}
}
else if(x<6) {                           //If n will be in the bottom-mid
for(i=3;i<6;i++) {
for(j=6;j<9;j++) {
if(n==sd_finish[i][j]) {
return 0;
}
}
}
}
else {                                      //If n will be in the bottom-right
for(i=6;i<9;i++) {
for(j=6;j<9;j++) {
if(n==sd_finish[i][j]) {
return 0;
}
}
}
}
}

for (j = 0; j < 9; j++) {                   //Checks the row and column n is in
if (n == sd_finish[j][y] || n == sd_finish[x][j]) {
return 0;
}
}

return n;                                   //If everything is fine, it returns n
}```

It's part of a Sudoku code and another function is basically calling this function with a possible value n when it sees a blank and checks the box the number will be in and the horizontal and vertical possibilities.

I'm almost positive this can be simplified it's just that I can't figure it out :/

2. Didn't I just show you how to simplify that yesterday?

Quzah.