#include<time.h>
#include<stdio.h>
#include<conio.h>
int main()
{
time_t t1,t2;
textmode(C40);
char far *p=(char far *) 0xB8000000L;
int a,c,c1,c2,c3,c4;
int e[83],b[83],x[82];
int n[244],n1[82],n2[82],n3[82];
char E,D[]=" 123456789";
b[0]=b[82]=c=0;
_setcursortype(_NOCURSOR);
printf("\tÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿\n\t");
printf ("³ÚÄÂÄÂÄ¿ÚÄÂÄÂÄ¿ÚÄÂÄÂÄ¿³\n\t");
printf ("³³5³ ³2³³ ³ ³ ³³ ³ ³ ³³\n\t");
printf ("³ÃÄÅÄÅÄ´ÃÄÅÄÅÄ´ÃÄÅÄÅÄ´³\n\t");
printf ("³³ ³ ³ ³³ ³6³ ³³9³ ³ ³³\n\t");
printf ("³ÃÄÅÄÅÄ´ÃÄÅÄÅÄ´ÃÄÅÄÅÄ´³\n\t");
printf ("³³ ³ ³ ³³ ³ ³ ³³ ³ ³ ³³\n\t");
printf ("³ÀÄÁÄÁÄÙÀÄÁÄÁÄÙÀÄÁÄÁÄÙ³\n\t");
printf ("³ÚÄÂÄÂÄ¿ÚÄÂÄÂÄ¿ÚÄÂÄÂÄ¿³\n\t");
printf ("³³ ³4³1³³ ³ ³7³³ ³ ³ ³³\n\t");
printf ("³ÃÄÅÄÅÄ´ÃÄÅÄÅÄ´ÃÄÅÄÅÄ´³\n\t");
printf ("³³ ³ ³ ³³5³ ³ ³³ ³6³ ³³\n\t");
printf ("³ÃÄÅÄÅÄ´ÃÄÅÄÅÄ´ÃÄÅÄÅÄ´³\n\t");
printf ("³³ ³ ³5³³ ³ ³2³³ ³ ³ ³³\n\t");
printf ("³ÀÄÁÄÁÄÙÀÄÁÄÁÄÙÀÄÁÄÁÄÙ³\n\t");
printf ("³ÚÄÂÄÂÄ¿ÚÄÂÄÂÄ¿ÚÄÂÄÂÄ¿³\n\t");
printf ("³³ ³9³7³³ ³8³5³³ ³ ³ ³³\n\t");
printf ("³ÃÄÅÄÅÄ´ÃÄÅÄÅÄ´ÃÄÅÄÅÄ´³\n\t");
printf ("³³ ³ ³ ³³ ³ ³ ³³ ³3³5³³\n\t");
printf ("³ÃÄÅÄÅÄ´ÃÄÅÄÅÄ´ÃÄÅÄÅÄ´³\n\t");
printf ("³³ ³5³4³³ ³ ³ ³³ ³9³6³³\n\t");
printf ("³ÀÄÁÄÁÄÙÀÄÁÄÁÄÙÀÄÁÄÁÄÙ³\n\t");
printf ("ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ\n");
INICIO:
for(c1=-1;++c1<3;) for(c2=-1;++c2<3;)
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*4+c/9*160+80*c1+2*c3+180;
n[c+1]=n[c+82]=n[c+163]=0;
b[++c]=0;
*(p+x[c]+1)=0x0B;
}
E=0;
c=1;
while(E-13) {*(p+x[c]+1)=0xB0;
if(E==32 || E>48 && E<58) E=77;
else E=0;
while(E<1) E=getch();
*(p+x[c]+1)=0x0B;
if(E==27) return 0;
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;
if(E==32 || E>48 && E<58) *(p+x[c])=E;
}
for(c=0;++c<82;){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;
if(b[c]<1){*(p+x[c]+1)=0x0F;
*(p+x[c])=32;
e[c]=0;
}
}
c=1;
t1=time(NULL);
while(c){while(b[c]) c++;
if(c>81){t2=time(NULL);
printf("\t %.f\" Pulse ESPACIO\r",difftime(t2+1,t1));
while((E=getch())-32) if(E==27) return 0;
printf("\t \r");
while(b[--c]);
}
else {if((a=e[c])) n[n1[c]+a]=n[n2[c]+a]=n[n3[c]+a]=0;
while(++a<10){if(n[n1[c]+a]<1)
if(n[n2[c]+a]<1)
if(n[n3[c]+a]<1) {n[n1[c]+a]=n[n2[c]+a]=n[n3[c]+a]=1;
*(p+x[c])=D[a];
e[c++]=a;
break;
}
}
if(a>9) {e[c]=0;
*(p+x[c])=32;
while(b[--c]);
}
}
}
goto INICIO;
}
Comentarios sobre la versión: 1.8 (0)
No hay comentarios