|
发表于 2003-7-7 23:12:49
|
显示全部楼层
没有问题啊,编译运行后就象字符组成的变幻线。
代码整理了一下,要好看多了。
- float s=1944,x[5],y[5],z[5],r[5],j,h,a,b,d,e;
- int i=33,c,l,f=1;
- int g(){
- return f=(f*6478+1)%65346;
- }
- m(){
- x[i]=g()-l;
- y[i]=(g()-l)/4;
- r[i]=g()>>4;
- }
- main()
- {
- char t[1948]=" `MYmtw%FFlj%Jqig~%`jqig~Etsqnsj3stb",*p=t+3,*k="3tjlq9TX";
- l=s*20;
- while(i<s)
- p[i++]='\n'+5;
- for(i=0;i<5;i++)
- z[i]=(i?z[i-1]:0)+l/3+!m();
- while(1){
- for(c=33;c<s;c++){
- c+=!((c+1)%81);
- j=c/s-.5;
- h=c%81/40.0-1;
- p[c]=37;
- for(i=4;i+1;i--)
- if((b=
- (a=h*x[i]+j*y[i]+z[i])
- *a-(d=1+j*j+h*h)*
- (-r[i]*r[i]+x[i]*x[i]+y[i]*y[i]+z[i]*z[i])
- )>0) {
- for(e=b;e*e>b*1.01||e*e<b*.99;e-=.5*(e*e-b)/e);
- p[c]=k[(int)(8*e/d/r[i])];
- }
- }
- for(i=4;i+1;z[i]-=s/2,i--)
- z[i]=z[i]<0?l*2+!m():z[i];
- while(i<s)
- putchar(t[i++]-5);
- }
- }
复制代码 |
|