Contrairement à ce que tout programmeur a appris lors de ses études ou de son apprentissage, il est bon parfois de s'amuser un petit peu en écrivant un code le plus illisible possible.
Plus qu'une simple déviance de certains mauvais programmeurs, le code illisible est issé au rang d'oeuvre artistique et ressemble de plus en plus à des dessins en ASCII (NDA: en texte) qu'à du code C. Plusieurs gagnants des années précédents s'amusent d'ailleurs à faire ressembler le plus possible leur code à ce qu'il doit afficher à l'écran. Un réel plaisir à découvrir pour ceux qui ne connaissent pas encore l'existence de ce concours en tout cas!
Pour ceux qui se sentent motivés, les règles sont simples, le programme doit fonctionner, il doit être inférieur à 4096 caractères et doit pouvoir être compilé par un compilateur ANSI C. Bref, au boulot, il vous reste jusqu'au 22 mai pour participer!
IOCCC: http://www.de.ioccc.org/main.html
Un gagnant: http://www1.us.ioccc.org/2004/anonymous.c
Un code que d'obfuscation que j'adore, le resultat est impressionnant par rapport à la petitesse du code. Je me demande comment c'est possible lol.
Ps: c'est pas un programme malveillant, juste un printf d'une sorte de poême d'amour en anglais (tested & approved):
Code:
http://www.cs.cf.ac.uk/Dave/C/node4.html#SECTION00400000000000000000
Output:
http://users.cs.cf.ac.uk/Dave.Marshall/mystery
#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;# ){n\
l]!/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(a[31]):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);}
Dernière édition: 24/03/2005 @ 00:04:24