void killOthers(int row, int col, int x) { for(int i=0;i<9;i++) { myBox[row][i].ruleOut(x); myBox[i][col].ruleOut(x); } int iBase = row - row%3; int jBase = col - col%3; for(int i=0;i<3;i++) for(int j=0;j<3;j++) myBox[iBase+i][jBase + j].ruleOut(x); } void killFromRow(int row, int x) { for(int i=0;i<9;i++) myBox[row][i].ruleOut(x); } void killFromCol(int col, int x) { for(int i=0;i<9;i++) myBox[i][col].ruleOut(x); } void killFromReg(int row,int col, int x) { int iBase = row - row%3; int jBase = col - col%3; for(int i=0;i<3;i++) for(int j=0;j<3;j++) myBox[iBase+i][jBase + j].ruleOut(x); } int numInRow(int row,int num) { int y = 0; for(int j=0;j<9;j++) if(myBox[row][j].numPossible[num]) y++; return y; } int numInCol(int col,int num) { int y = 0; for(int i=0;i<9;i++) if(myBox[i][col].numPossible[num]) y++; return y; } int numInReg(int row,int col,int num) { int y = 0; int iBase = row - row%3; int jBase = col - col%3; for(int i=0;i<3;i++) for(int j=0;j<3;j++) if(myBox[iBase+i][jBase + j].numPossible[num]) y++; return y; }