#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
int r,c,t,g,a;
bool i;
int grid[ 9 ] [ 9 ] ;
int rand ( int ) ;
int check( void ) ;
void disp( void ) ;
int main( ) {
srand ( time ( NULL ) ) ;
cout << "\n \n \n \n \n \n \n \n \n \n Generating puzzle..." ;
r = 0 ;
while ( r <= 8 ) {
g = 0 ;
c = 0 ;
while ( c <= 8 ) {
disp( ) ;
return 0 ;
}
int rand ( void ) {
return rand ( ) % 9 ;
}
void disp( void ) {
int n,m;
for ( n= 0 ; n<= 8 ; n++ ) {
cout << "\n " ;
for ( m= 0 ; m<= 8 ; m++ ) {
cout << grid[ n] [ m] << " " ;
}
}
return 0
}
int check( void ) {
int n,m,p,z;
i = 0 ;
//Horizontal check
n = r;
for ( m= 0 ; m<= 8 ; m++ ) {
if ( grid[ n] [ m] == t)
i = 1 ;
}
if ( i)
return 0 ;
//Vertical check
m = c;
for ( n= 0 ; n<= 8 ; n++ ) {
if ( grid[ n] [ m] == t)
i = 1 ;
}
if ( i)
return 0 ;
// Square check
if ( r <= 2 )
n = 0 ;
if ( r >= 3 and r <= 5 )
n = 3 ;
if ( r >= 6 )
n = 6 ;
if ( c <= 2 )
m = 0 ;
if ( c >= 3 and c <= 5 )
m = 3 ;
if ( c >= 6 )
m = 6 ;
p = m + 3 ;
for ( z = 0 ; z <= 8 ; z++ ) {
if ( grid[ n] [ m] == t)
i = 1 ;
m++ ;
if ( m == p) {
m = m- 3 ;
n++ ;
}
}
return 0
}
I2luY2x1ZGUgPGlvc3RyZWFtPiAKI2luY2x1ZGUgPHN0ZGxpYi5oPiAKI2luY2x1ZGUgPHRpbWUuaD4gCnVzaW5nIG5hbWVzcGFjZSBzdGQ7IAoKCgppbnQgcixjLHQsZyxhOyAKYm9vbCBpOyAKaW50IGdyaWRbOV1bOV07IAppbnQgcmFuZChpbnQpOyAKaW50IGNoZWNrKHZvaWQpOyAKdm9pZCBkaXNwKHZvaWQpOyAgCgppbnQgbWFpbigpIHsgCiAgICBzcmFuZCh0aW1lKE5VTEwpKTsgCiAgICBjb3V0IDw8ICJcblxuXG5cblxuXG5cblxuXG5cbkdlbmVyYXRpbmcgcHV6emxlLi4uIjsgCiAgICByID0gMDsgCiAgICB3aGlsZSAociA8PSA4KSB7IAogICAgICAgICAgZyA9IDA7IAogICAgICAgICAgYyA9IDA7IAogICAgd2hpbGUgKGMgPD0gOCkgeyAKICAgICAgICAgICAKCgoKCgpkaXNwKCk7IApyZXR1cm4gMDsgCn0gCiAgICAgICAgICAKICAgICAgICAgIAogICAgICAgICAgCiAgICAgICAgICAKICAgICAgICAgIAogICAgICAgICAgCgoKaW50IHJhbmQodm9pZCkgeyAKICAgIHJldHVybiByYW5kKCkgJSA5OyAKfSAKCnZvaWQgZGlzcCh2b2lkKSB7IAogICAgIGludCBuLG07IAogICAgIGZvciAobj0wOyBuPD04OyBuKyspeyAKICAgICAgICAgY291dCA8PCAiXG4iOyAKICAgICAgICAgZm9yIChtPTA7IG08PTg7IG0rKykgeyAKICAgICAgICAgICAgIGNvdXQgPDwgZ3JpZFtuXVttXSA8PCAiICI7IAogICAgICAgICAgICAgfSAKICAgICAgICAgICAgIH0gCiAgICAgICAgICAgICByZXR1cm4gMCAKICAgICAgICAgICAgIH0gCgppbnQgY2hlY2sodm9pZCkgeyAKICAgICBpbnQgbixtLHAsejsgCiAgICAgaSA9IDA7IAogICAgIC8vSG9yaXpvbnRhbCBjaGVjayAKICAgICBuID0gcjsgCiAgICAgZm9yIChtPTA7IG08PTg7IG0rKykgeyAKICAgICAgICAgaWYgKGdyaWRbbl1bbV0gPT0gdCkgCiAgICAgICAgIGkgPSAxOyAKICAgICAgICAgfSAKICAgICAgICAgaWYgKGkpIAogICAgICAgICByZXR1cm4gMDsgCiAgICAgICAgICAKICAgICAvL1ZlcnRpY2FsIGNoZWNrIAogICAgIG0gPSBjOyAKICAgICBmb3IgKG49MDsgbjw9ODsgbisrKSB7IAogICAgICAgICBpZiAoZ3JpZFtuXVttXSA9PSB0KSAKICAgICAgICAgaSA9IDE7IAogICAgICAgICB9IAogICAgICAgICBpZiAoaSkgCiAgICAgICAgIHJldHVybiAwOyAKICAgICAvLyBTcXVhcmUgY2hlY2sgCiAgICAgaWYgKHIgPD0gMikgCiAgICAgbiA9IDA7IAogICAgIGlmIChyID49IDMgYW5kIHIgPD0gNSkgCiAgICAgbiA9IDM7IAogICAgIGlmIChyID49IDYpIAogICAgIG4gPSA2OyAKICAgICBpZiAoYyA8PSAyKSAKICAgICBtID0gMDsgCiAgICAgaWYgKGMgPj0gMyBhbmQgYyA8PSA1KSAKICAgICBtID0gMzsgCiAgICAgaWYgKGMgPj0gNikgCiAgICAgbSA9IDY7IAogICAgIHAgPSBtICsgMzsgCiAgICAgIAogICAgIGZvciAoeiA9IDA7IHogPD0gODsgeisrKSB7IAogICAgICAgICBpZiAoZ3JpZFtuXVttXT09IHQpIAogICAgICAgICBpID0gMTsgCiAgICAgICAgIG0rKzsgCiAgICAgICAgIGlmIChtID09IHApIHsgCiAgICAgICAgICAgICAgIG0gPSBtLTM7IAogICAgICAgICAgICAgICBuKys7IAogICAgICAgICAgICAgICB9IAogICAgICAgICAgICAgICB9IAogICAgICAgICAgICAgICByZXR1cm4gMCAKICAgICAgICAgICAgICAgfSA=