#include<time.h>
#include<stdio.h>
#include<conio.h>
int main()
{
time_t t1,t2;
clrscr();
_setcursortype(_NOCURSOR);
char far*p=(char far*)0xB8000000L;
char E,D[]=" 123456789 ";
int a,c,c1,c2,c3,c4;
int b[82],e[82],x[82];
int n[244],n1[82],n2[82],n3[82];
int C[82],f[3],g[3];
printf("\n\n\t\t ");
printf("ÉÍÍÍÑÍÍÍÑÍÍÍËÍÍÍÑÍÍÍÑÍÍÍËÍÍÍÑÍÍÍÑÍÍÍ»\n\t\t ");
printf("º 5 ³ ³ 2 º ³ ³ º ³ ³ º\n\t\t ");
printf("ÇÄÄÄÅÄÄÄÅÄÄÄ×ÄÄÄÅÄÄÄÅÄÄÄ×ÄÄÄÅÄÄÄÅÄÄĶ\n\t\t ");
printf("º ³ ³ º ³ 6 ³ º 9 ³ ³ º\n\t\t ");
printf("ÇÄÄÄÅÄÄÄÅÄÄÄ×ÄÄÄÅÄÄÄÅÄÄÄ×ÄÄÄÅÄÄÄÅÄÄĶ\n\t\t ");
printf("º ³ ³ º ³ ³ º ³ ³ º\n\t\t ");
printf("ÌÍÍÍØÍÍÍØÍÍÍÎÍÍÍØÍÍÍØÍÍÍÎÍÍÍØÍÍÍØÍÍ͹\n\t\t ");
printf("º ³ 4 ³ 1 º ³ ³ 7 º ³ ³ º\n\t\t ");
printf("ÇÄÄÄÅÄÄÄÅÄÄÄ×ÄÄÄÅÄÄÄÅÄÄÄ×ÄÄÄÅÄÄÄÅÄÄĶ\n\t\t ");
printf("º ³ ³ º 5 ³ ³ º ³ 6 ³ º\n\t\t ");
printf("ÇÄÄÄÅÄÄÄÅÄÄÄ×ÄÄÄÅÄÄÄÅÄÄÄ×ÄÄÄÅÄÄÄÅÄÄĶ\n\t\t ");
printf("º ³ ³ 5 º ³ ³ 2 º ³ ³ º\n\t\t ");
printf("ÌÍÍÍØÍÍÍØÍÍÍÎÍÍÍØÍÍÍØÍÍÍÎÍÍÍØÍÍÍØÍÍ͹\n\t\t ");
printf("º ³ 9 ³ 7 º ³ 8 ³ 5 º ³ ³ º\n\t\t ");
printf("ÇÄÄÄÅÄÄÄÅÄÄÄ×ÄÄÄÅÄÄÄÅÄÄÄ×ÄÄÄÅÄÄÄÅÄÄĶ\n\t\t ");
printf("º ³ ³ º ³ ³ º ³ 3 ³ 5 º\n\t\t ");
printf("ÇÄÄÄÅÄÄÄÅÄÄÄ×ÄÄÄÅÄÄÄÅÄÄÄ×ÄÄÄÅÄÄÄÅÄÄĶ\n\t\t ");
printf("º ³ 5 ³ 4 º ³ ³ º ³ 9 ³ 6 º\n\t\t ");
printf("ÈÍÍÍÏÍÍÍÏÍÍÍÊÍÍÍÏÍÍÍÏÍÍÍÊÍÍÍÏÍÍÍÏÍÍͼ\n\n");
Inicio:
for(c=c1=0;c1<3;c1++)
for(g[f[c1]=c1]=c2=0;c2<3;c2++)
for(c3=-1;++c3<3;)
for(c4=-1;++c4<3;){n1[c+1]=27*c1 +9*c2;
n2[c+1]=27*c3 +9*c4 +81;
n3[c+1]=27*c1 +9*c3 +162;
x[c+1]=c%9*8+c/9*320+526;
b[++c]=n[c]=n[c+81]=n[c+162]=0;
*(p+x[c]+1)=0x0B;
}
E=c=1;
while(E-13){*(p+x[c]+1)=0xB0;
if(E==32 || E>48 && E<58){*(p+x[c])=E;
E=77;
}
else E=0;
while(E<1) E=getch();
if(E==27) return 0;
*(p+x[c]+1)=0x0B;
c+=(E==77 && c<81);
c-=(E==75 && c>1);
c+=9*(E==80 && c<73);
c-=9*(E==72 && c>9);
if(E==48) E=32;
}
for(c=82;--c;){if((a=*(p+x[c])-48)>0)
if(n[n1[c]+a]+n[n2[c]+a]+n[n3[c]+a]<1)
b[c]=n[n1[c]+a]=n[n2[c]+a]=n[n3[c]+a]=1;
e[c]=a*b[c];
*(p+x[c])=D[e[c]];
g[(c-1)/27]+=b[c];
if(b[c]<1) *(p+x[c]+1)=0x0F;
}
while(++c<3)
if(g[f[c]]>g[f[c-1]]){c1=f[c-1];
f[c-1]=f[c];
f[c]=c1;
c=2-c;
}
for(c1=c3=0;c1<3;c1++)
for(c2=0;++c2<28;)
if(b[c=27*f[c1]+c2]<1) C[++c3]=c;
c1=++c3>1;
t1=time(NULL);
while(c1){if(c1<c3){if(a=e[c=C[c1]])
n[n1[c]+a]=n[n2[c]+a]=n[n3[c]+a]=0;
while(++a<10){if(n[n1[c]+a]) continue;
if(n[n3[c]+a]) continue;
if(n[n2[c]+a]) continue;
n[n1[c]+a]=n[n2[c]+a]=n[n3[c]+a]=1;
e[c]=a;
c1++;
break;
}
*(p+x[c])=D[a];
if(a>9){e[c]=0;
c1--;
}
}
else{t2=time(NULL);
printf("\t\t\t%.f\"",difftime(t2+1,t1));
printf("\t Pulse ESPACIO\r");
while((E=getch())-32)
if(E==27) return 0;
printf("\t\t\t\t\t\t\t\r");
c1--;
}
}
goto Inicio;
}