LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1890|回复: 18

这个C程序你能看懂吗?

[复制链接]
发表于 2003-7-7 19:05:28 | 显示全部楼层 |阅读模式
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=g()-l;y=(g()-l)/4;r=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?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
+j*y+z)*a-(d=1+j*j+h*h)*(-r*r+x*x+y*y+z*z))>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)];}}for
(i=4;i+1;z-=s/2,i--)z=z<0?l*2+!m():z;while(i<s)putchar(t[i++]-5);}}

你能看懂吗?
编译运行之后就知道他是干什么用的了,试试吗?
发表于 2003-7-7 21:38:12 | 显示全部楼层
运行后就象游戏似的。很有意思。可以想象,这位编者很了不起.
发表于 2003-7-7 22:30:00 | 显示全部楼层
最初由 zhoumin 发表
m(){x=g()-l;y=(g()-l)/4;r=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?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
+j*y+z)*a-(d=1+j*j+h*h)*(-r*r+x*x+y*y+z*z))>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)];}}for
(i=4;i+1;z-=s/2,i--)z=z<0?l*2+!m():z;while(i<s)putchar(t[i++]-5);}}

这几处提示错误,编译通不过。
是不是代码有误?
发表于 2003-7-7 23:04:20 | 显示全部楼层
看山上去向机器生成的代码。在玩人工智能吗?
发表于 2003-7-7 23:12:49 | 显示全部楼层
没有问题啊,编译运行后就象字符组成的变幻线。
代码整理了一下,要好看多了。

  1. float s=1944,x[5],y[5],z[5],r[5],j,h,a,b,d,e;
  2. int i=33,c,l,f=1;
  3. int g(){
  4.     return f=(f*6478+1)%65346;
  5. }
  6. m(){
  7.     x[i]=g()-l;
  8.     y[i]=(g()-l)/4;
  9.     r[i]=g()>>4;
  10. }
  11. main()
  12. {
  13.     char t[1948]=" `MYmtw%FFlj%Jqig~%`jqig~Etsqnsj3stb",*p=t+3,*k="3tjlq9TX";
  14.     l=s*20;
  15.     while(i<s)
  16.         p[i++]='\n'+5;
  17.     for(i=0;i<5;i++)
  18.         z[i]=(i?z[i-1]:0)+l/3+!m();
  19.     while(1){
  20.         for(c=33;c<s;c++){
  21.             c+=!((c+1)%81);
  22.             j=c/s-.5;
  23.             h=c%81/40.0-1;
  24.             p[c]=37;
  25.             for(i=4;i+1;i--)
  26.             if((b=
  27.                   (a=h*x[i]+j*y[i]+z[i])
  28.                   *a-(d=1+j*j+h*h)*
  29.                   (-r[i]*r[i]+x[i]*x[i]+y[i]*y[i]+z[i]*z[i])
  30.                   )>0) {
  31.                         for(e=b;e*e>b*1.01||e*e<b*.99;e-=.5*(e*e-b)/e);
  32.                              p[c]=k[(int)(8*e/d/r[i])];
  33.                         }
  34.         }
  35.         for(i=4;i+1;z[i]-=s/2,i--)
  36.                 z[i]=z[i]<0?l*2+!m():z[i];
  37.         while(i<s)
  38.                 putchar(t[i++]-5);
  39.     }
  40. }
复制代码
发表于 2003-7-8 08:39:03 | 显示全部楼层
没整理的时候就想一陀大便。
发表于 2003-7-8 08:50:46 | 显示全部楼层
好象有一个比赛,写出最难懂的C程序。这个程序会不会就是那个比赛的产物?
发表于 2003-7-8 15:22:35 | 显示全部楼层
还有这样的比赛!!!
发表于 2003-7-8 18:46:08 | 显示全部楼层
!m()
是什么意思?
发表于 2003-7-8 19:30:38 | 显示全部楼层
“!”表示取非。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表