#include<stdio.h>
int jump_S(int *r[], int m, int n)
{
int i,j,k[2], t=0;
k[1]=m%3; k[0]=n%3;
if(k[1]==0)
if(k[0]==0)
{
for(i=m;i<m+3;i++)
for(j=n;j<n+3;j++)
if(r[i][j]==r[m][n])t++;
}
if(k[1]==0)
if(k[0]==1)
{
for(i=m;i<m+3;i++)
for(j=n-1;j<n+2;j++)
if(r[i][j]==r[m][n])t++;
}
if(k[1]==0)
if(k[0]==2)
{
for(i=m;i<m+3;i++)
for(j=n-2;j<n+1;j++)
if(r[i][j]==r[m][n])t++;
}
if(k[1]==1)
if(k[0]==0)
{
for(i=m-1;i<m+2;i++)
for(j=n;j<n+3;j++)
if(r[i][j]==r[m][n])t++;
}
if(k[1]==1)
if(k[0]==1)
{
for(i=m-1;i<m+2;i++)
for(j=n-1;j<n+2;j++)
if(r[i][j]==r[m][n])t++;
}
if(k[1]==1)
if(k[0]==2)
{
for(i=m-1;i<m+2;i++)
for(j=n-2;j<n+1;j++)
if(r[i][j]==r[m][n])t++;
}
if(k[1]==2)
if(k[0]==0)
{
for(i=m-2;i<m+1;i++)
for(j=n;j<n+3;j++)
if(r[i][j]==r[m][n])t++;
}
if(k[1]==2)
if(k[0]==1)
{
for(i=m-2;i<m+1;i++)
for(j=n-1;j<n+2;j++)
if(r[i][j]==r[m][n])t++;
}
if(k[1]==2)
if(k[0]==2)
{
for(i=m-2;i<m+1;i++)
for(j=n-2;j<n+1;j++)
if(r[i][j]==r[m][n])t++;
}
return t;
}
int jump_V(int *q[], int i, int j)
{
int t=0,k;
for(k=0;k<9;k++)
if(q[k][j]==q[i][j]) t++;
if(t==1) t=jump_S(q,i,j);
return t;
}
int jump_L(int *p[], int m, int n)
{
int t=0,j;
for(j=0;j<9;j++)
if(p[m][j]==p[m][n])t++;
if(t==1) t=jump_V(p,m,n);
return t;
}
void main()
{
int a[9][9], *b[9], i,j,m,n,t=0,k=0,q=0;
for(i=0;i<9;i++) b[i]=a[i];
for(i=0;i<9;i++)
for(j=0;j<9;j++) b[i][j]=0;
for(i=0;i<9;i++)
for(j=0;j<9;)
{
q=j;
t=0;
while(1)
{scanf("%d", &a[i][j]);
if(a[i][j]<=9)
if(a[i][j]>=1)
{t=jump_L(b,i,j); /*judge the number*/
/* printf("%d", t);
*/
break;}
}
if(t==1) /*print the last result*/
{
printf("Last result\n");
for(m=0;m<9;m++)
for(n=0;n<9;n++)
{
if((n%9)==0)printf("\n");
printf("%d\t", a[m][n]);
}
}
else {
j--;
k++;
if(k==9){
printf("Game over and have another try~");
break;
}
printf("change another number:");
}
j++;
if(q!=j) k=0;
}
if(i==9) /*succeed*/
if(j==9){
printf("\n");
printf("Congratulation! more chanllenge waiting for you!");
}
}