挑战C程序员

人在天涯

┳??初级会员??┳
注册
2002-01-23
消息
17,253
荣誉分数
6
声望点数
0
实在不知到这样的东东贴到哪去

你觉得这个程序的输出结果是什么

#include <stdio.h>
main(t,_,a)char *a;{return!0<t?t<3?main(-79,-13,a+main(-87,1-_,
main(-86,0,a+1)+a)):1,t<_?main(t+1,_,a):3,main(-94,-27+t,a)&&t==2?_<13?
main(2,_+1,"%s %d %d\n"):9:16:t<0?t<-72?main(_,t,
"@n'+,#'/*{}w+/w#cdnr/+,{}r/*de}+,/*{*+,/w{%+,/w#q#n+,/#{l+,/n{n+,/+#n+,/#\
;#q#n+,/+k#;*+,/'r :'d*'3,}{w+K w'K:'+}e#';dq#'l \
q#'+d'K#!/+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;# \
){nl]!/n{n#'; r{#w'r nc{nl]'/#{l,+'K {rw' iK{;[{nl]'/w#q#n'wk nw' \
iwk{KK{nl]!/w{%'l##w#' i; :{nl]'/*{q#'ld;r'}{nlwb!/*de}'c \
;;{nl'-{}rw]'/+,}##'*}#nc,',#nw]'/+kd'+e}+;#'rdq#w! nr'/ ') }+}{rl#'{n' ')# \
}'+}##(!!/")
:t<-50?_==*a?putchar(31[a]):main(-65,_,a+1):main((*a=='/')+t,_,a+1)
:0<t?main(2,2,"%s"):*a=='/'||main(0,main(-61,*a,
"!ek;dc i@bK'(q)-[w]*%n+r3#l,{}:\nuwloca-O;m .vpbks,fxntdCeghiry"),a+1);}
 
编译出来,run一下不就行了.

这段程序在很多年前看过,据说是某个编程大赛的冠军作品,估计是最难看懂的程序大奖赛.
 
Code Review 如果看见这样的程序,直接 fire 那个程序员 :-)
 
该程序反复递归调用自己,输出一篇长文。文字长度令人惊讶。程序中几乎都全是由 a>b?c:d组成。
俺把3个变量换成好懂一点的名字,多加了几个括号,这样把难度降低一点感兴趣的人会能多一些。

可惜空格全被吃掉,格式难看。那位有功夫把a>b?c:d全换成if(a>b){c;}else{d;}就更好懂了。

到底是哪里来的?俺对写得出这样程序的人佩服的五体投地。

#include <stdio.h>
main(ARGC,ARGV,ENVP)
char *ENVP;
{
1<ARGC?
( /*begin1*/
ARGC<3?main(-79,-13, ENVP+main(-87, 1-ARGV, main(-86,0,ENVP+1)+ENVP))
:1,
(/*begin1.2.2*/
ARGC<ARGV?main(ARGC+1,ARGV,ENVP):3,
(/*begin1.2.2.2*/
main(-94,-27+ARGC,ENVP)&&
(
ARGC==2?
(ARGV<13? main(2,ARGV+1,"%s %d %d\n"):9)
:
16
)
)/*end1.2.2.2*/
)/*end1.2.2*/
) /*end1*/
:
( /*begin2*/
ARGC<0?
(/*begin2.1*/
ARGC<-72?
main(ARGV,ARGC,
"@n'+,#'/*{}w+/w#cdnr/+,{}r/*de}+,/*{*+,/w{%+,/w#q#n+,/#{l+,/n{n+,/+#n+,/#\
;#q#n+,/+k#;*+,/'r :'d*'3,}{w+K w'K:'+}e#';dq#'l \
q#'+d'K#!/+k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;# \
){nl]!/n{n#'; r{#w'r nc{nl]'/#{l,+'K {rw' iK{;[{nl]'/w#q#n'wk nw' \
iwk{KK{nl]!/w{%'l##w#' i; :{nl]'/*{q#'ld;r'}{nlwb!/*de}'c \
;;{nl'-{}rw]'/+,}##'*}#nc,',#nw]'/+kd'+e}+;#'rdq#w! nr'/ ') }+}{rl#'{n' ')# \
}'+}##(!!/")
:
(ARGC<-50?(ARGV==*ENVP?putchar(31[ENVP]):main(-65,ARGV,ENVP+1))
:
main((*ENVP=='/')+ARGC,ARGV,ENVP+1)
)
)/*end2.1*/
:
(/*begin2.2*/
(0<ARGC?main(2,2,"%s")
:
(/*begin2.2.2*/
*ENVP=='/'||
main(0,
main(-61,
*ENVP,
"!ek;dc i@bK'(q)-[w]*%n+r3#l,{}:\nuwloca-O;m .vpbks,fxntdCeghiry"),
ENVP+1)
)
)/*end2.2.2*/
)/*end2.2*/
)/*end2*/;
}
 
我觉得一定要加注释,才能读懂.这家伙真是吃饱饭没事做,写这些抽象艺术出来.
 
这没什么了不起

中国人还可以在头发丝上刻唐诗呢,但是比艺术,能比得上王羲之的书法吗?比技术,能比得上在现代芯片技术吗?
程序是写来完成功能,而不是用来哗众取宠,更不是以难懂来吓唬人的。偶尔玩玩无可非议,但是要当成追求目标,那就是南辕北辙了。

不过不能否定,作者的逻辑和对C语言的运用能力的确很强。
 
Who cares??

有兴趣的话,可以打开内存,去一一清理内存里面各个地址及其存储的信息。。。了却残年.
 
是不是到了ottawa的人都丧失了幽默感?
 
后退
顶部