11/* *
2- * This another simple sudoku solver
2+ * This another typical simple sudoku solver
33 * Uses DFS for searching
4- * This code is published under GPL version 3 (or later)
5- * copyright Adib Hasan (Neehan)
4+ * This code is published under GPL version 3
5+ * Copyright (c) 2014-2015 Adib Hasan (Neehan)
66 **/
77
88#include < iomanip>
99#include < iostream>
10- #include < fstream>
1110#include < algorithm>
1211#include < vector>
1312#include < stack>
@@ -30,7 +29,6 @@ void check(){
3029
3130 /* *COLUMN CHECK**/
3231
33- int temp1=sudoku[53 ][0 ];
3432 myit=find (sudoku[k*9 +row].begin (),sudoku[k*9 +row].end (),j);
3533 if (myit!=sudoku[k*9 +row].end ()) sudoku[k*9 +row].erase (myit);
3634
@@ -43,7 +41,6 @@ void check(){
4341 sudoku[i].push_back (j);
4442 }
4543}
46-
4744bool conflict (){
4845 for (int i=0 ;i<81 ;i++) if (sudoku[i].size ()==0 ) return true ;
4946 return false ;
@@ -62,16 +59,16 @@ bool solved(){
6259 return true ;
6360}
6461void print_sol (){
65- for (int i=0 ;i<9 ;i++){
66- for ( int j= 0 ;j< 9 ;j++){
67- for ( int k= 0 ;k<sudoku[ 9 *i+j]. size ();k++) cout << sudoku[9 *i+j][k] ;
68- for ( int k= 0 ;k< 3 - sudoku[9 *i+j]. size ();k++) cout << " " ;
69- }
70- cout << endl ;
62+ for (int i=0 ;i<81 ;i++){
63+ if ( i % 27 == 0 ) cout << " \n +-------+-------+-------+ \n | " << sudoku[i][ 0 ] << " " ;
64+ else if ( i % 27 == 26 ) cout << sudoku[i][ 0 ] << " | " ;
65+ else if ( i % 9 == 0 ) cout << " | \n | " << sudoku[i][ 0 ] << " " ;
66+ else if ( i % 3 == 0 ) cout << " | " << sudoku[i][ 0 ] << " " ;
67+ else cout << sudoku[i][ 0 ] << " " ;
7168 }
69+ cout << " \n +-------+-------+-------+\n " ;
7270}
73-
74- int main (){
71+ int main () {
7572 register int i,j;
7673 for (i=0 ;i<9 ;i++) sudoku[0 ].push_back (i+1 );
7774 for (i=0 ,j;i<81 ;i++)sudoku[i]=sudoku[0 ];
@@ -85,14 +82,20 @@ int main(){
8582 cout << " 1 0 0 4 0 0 0 0 0\n " ;
8683 cout << " 0 0 9 0 8 0 0 5 0\n " ;
8784 cout << " 0 2 0 0 0 0 6 0 0\n " ;
88- cout << " 4 0 0 7 0 0 0 0 0\n Where 0 stands for an empty cell\n Now write down your sudoku\n\n " ;
89- for (i=0 ;i<81 ;i++){
90- cin >> j; // /the cell of ith column and jth row.
91- if (j>0 ){
92- sudoku[i].clear ();
93- sudoku[i].push_back (j);
94- check ();
85+ cout << " 4 0 0 7 0 0 0 0 0\n Where 0 stands for an empty cell\n Now write down your sudoku. See README.html for details.\n\n " ;
86+ for (i=0 ;i<81 ;){
87+ char val;
88+ cin >> val; // /the cell of ith column and jth row.
89+ if (isdigit (val)){
90+ j=atoi (&val);
91+ if (j>0 ){
92+ sudoku[i].clear ();
93+ sudoku[i].push_back (j);
94+ check ();
95+ }
96+ i++;
9597 }
98+ else if (val==' .' ) i++;
9699 }
97100 clock_t t=clock ();
98101 stack< vector < vector<int > > > mystack;
@@ -116,7 +119,7 @@ int main(){
116119 cout << " Press q to quit\n " ;
117120 char quit;
118121 cin >> quit;
119- if (quit== ' q ' ) return 0 ;
122+ return 0 ;
120123 }
121124 else mystack.push (sudoku);
122125 }
0 commit comments