//============================================================================ // Name : SquigglySudoku.cpp // Author : SOLUTION // Version : 27 February 2009 //============================================================================ #include using namespace std; #include "apvector.h" #include "SudokuBoard.h" void clearTally(apvector & tally); void checkTally(const apvector & tally, bool & okay); int main() { apvector tally(9,0); bool okay; int serial; cin >> serial; SudokuBoard sb(serial); okay = true; // Check rows for (int r=0; r<9; r++) { clearTally(tally); for (int c=0; c<9; c++) { tally[sb.cellValue(r,c)-1]++; } checkTally(tally, okay); } // Check columms for (int c=0; c<9; c++) { clearTally(tally); for (int r=0; r<9; r++) { tally[sb.cellValue(r,c)-1]++; } checkTally(tally, okay); } // Check regions for (char map='A'; map<'J'; map++) { clearTally(tally); for (int r=0; r<9; r++) for (int c=0; c<9; c++) if (sb.mapValue(r,c)==map) tally[sb.cellValue(r,c)-1]++; checkTally(tally, okay); } cout << (okay? "Valid" : "Invalid") << endl; return 0; } void clearTally(apvector & tally) { for (int i=0; i<9; i++) tally[i] = 0; } void checkTally(const apvector & tally, bool & okay) { for (int i=0; i<9; i++) if (tally[i] != 1) okay = false; }