Posté(e) le 12 février 200520 a Une question simple : Que fait ce code en C ? #include <stdio.h> #define l11l 0xFFFF #define ll1 for #define ll111 if #define l1l1 unsigned #define l111 struct #define lll11 short #define ll11l long #define ll1ll putchar #define l1l1l(l) l=malloc(sizeof(l111 llll1));l->lll1l=1-1;l->ll1l1=1-1; #define l1ll1 *lllll++=l1ll%10000;l1ll/=10000; #define l1lll ll111(!l1->lll1l){l1l1l(l1->lll1l);l1->lll1l->ll1l1=l1;}\ lllll=(l1=l1->lll1l)->lll;ll=1-1; #define llll 1000 l111 llll1 { l111 llll1 * lll1l,*ll1l1 ;l1l1 lll11 lll [ llll];};main (){l111 llll1 *ll11,*l1l,* l1, *ll1l, * malloc ( ); l1l1 ll11l l1ll; ll11l l11,ll ,l;l1l1 lll11 *lll1,* lllll; ll1(l =1-1;l< 14; ll1ll("\t\"8)>l\"9!.)>vl" [l]^'L'),++l );scanf("%d",&l);l1l1l(l1l) l1l1l(ll11 ) (l1=l1l)-> lll[l1l->lll[1-1] =1]=l11l;ll1(l11 =1+1;l11<=l; ++l11){l1=ll11; lll1 = (ll1l=( ll11=l1l))-> lll; lllll =( l1l=l1)->lll; ll=(l1ll=1-1 );ll1(;ll1l-> lll1l||l11l!= *lll1;){l1ll +=l11**lll1++ ;l1ll1 ll111 (++ll>llll){ l1lll lll1=( ll1l =ll1l-> lll1l)->lll; }}ll1(;l1ll; ){l1ll1 ll111 (++ll>=llll) { l1lll} } * lllll=l11l;} ll1(l=(ll=1- 1);(l<llll)&& (l1->lll[ l] !=l11l);++l); ll1 (;l1;l1= l1->ll1l1,l= llll){ll1(--l ;l>=1-1;--l, ++ll)printf( (ll)?((ll%19) ?"%04d":(ll= 19,"\n%04d") ):"%4d",l1-> lll[l] ); } ll1ll(10); } http://www0.us.ioccc.org/1995/savastio.c EDIT : Interdit de compiler avant de donner la réponse :8
Posté(e) le 12 février 200520 a ça multiplie le nombre par tous ses entiers précédent mais nan, j'ai pas triché :8 EDIT: t'as édité trop tard Modifié le 12 février 200520 a par Tintaspi
Posté(e) le 12 février 200520 a " This program is an infinite-precision factorial calculator. It will compute the factorial of any number entered to an infinite degree of precision (or the limits of your machine's memory, whichever comes first). I'd suggest you start with small numbers the first few times you run it and gradually work your way up in order to get a feel for the computation time your machine will require. Aside from having an artistic code layout and confusing variable names, the algorithm itself takes advantage of some cute C-isms. Try to figure out how it prints the prompt "Enter number:". Numbers are represented internally by a linked list of blocks each containing 1000 buckets of 4-digit integers. To further confuse matters, the buckets are arranged backwards in the block. For example, the number 8347108947139478934713847134 is represented as: 7134 1384 9347 3947 9471 7108 834" ca peut etre :8 ? edit : moi j'ai pas compilé
Posté(e) le 12 février 200520 a ca compile ca ? je crois pas mais bon avec tous ces 1 je me trompe peut etre malloc ( ) a pas de paramètre ? Modifié le 12 février 200520 a par keneda212
Posté(e) le 12 février 200520 a Auteur 1/ Oui ça compile (essaye). 2/ C'est pas un malloc, mais un * malloc 3/ Le malloc, c'est pas utilisé, mais est dans les déclarations de variables (dans une struct en fait).
Posté(e) le 12 février 200520 a ben dans un sens j'ai honte de le dire je peux pas avoir internet sous linux alors je suis sur windows et j'utilise M$ visual c++
Posté(e) le 12 février 200520 a Auteur Hum... étonnant que ça ne compile pas quand même. Un mauvais point pour MS visual C++. Essaye avec DevC++. EDIT : Oui, tu peux compiler du C avec un compilo C++, mais ce n'est pas le problème, tu peux choisr de compiler en mode C ou C++.
Posté(e) le 12 février 200520 a Hmmm, je dirais que ce programme fait ca : n !J'ai pas compile, je n'ai fait que copier le code dans un vrai editeur ... Modifié le 12 février 200520 a par Cerel
Posté(e) le 13 février 200520 a A première vue, je dirais qu'il calcule la factorielle d'un nombre non ? Suffit de savoir lire...Après pour avoir le code à partir de celui de théo, ben...prévoir un bon éditeur de texte (on n'a pas le droit de compiler, alors on fait avec ce qu'on a ) Modifié le 13 février 200520 a par Charles.w
Posté(e) le 13 février 200520 a Auteur Il y en a un autre joli aussi char _3141592654[3141 ],__3141[3141];_314159[31415],_3141[31415];main(){register char* _3_141,*_3_1415, *_3__1415; register int _314,_31415,__31415,*_31, _3_14159,__3_1415;*_3141592654=__31415=2,_3141592654[0][_3141592654 -1]=1[__3141]=5;__3_1415=1;do{_3_14159=_314=0,__31415++;for( _31415 =0;_31415<(3,14-4)*__31415;_31415++)_31415[_3141]=_314159[_31415]= - 1;_3141[*_314159=_3_14159]=_314;_3_141=_3141592654+__3_1415;_3_1415= __3_1415 +__3141;for (_31415 = 3141- __3_1415; _31415;_31415-- ,_3_141 ++, _3_1415++){_314 +=_314<<2; _314<<=1;_314+= *_3_1415;_31 =_314159+_314; if(!(*_31+1) )* _31 =_314 / __31415,_314 [_3141]=_314 % __31415;* ( _3__1415=_3_141 )+= *_3_1415 = *_31;while(* _3__1415 >= 31415/3141 ) * _3__1415+= - 10,(*--_3__1415 )++;_314=_314 [_3141]; if ( ! _3_14159 && * _3_1415)_3_14159 =1,__3_1415 = 3141-_31415;}if( _314+(__31415 >>1)>=__31415 ) while ( ++ * _3_141==3141/314 )*_3_141--=0 ;}while(_3_14159 ); { char * __3_14= "3.1415"; write((3,1), (--*__3_14,__3_14 ),(_3_14159 ++,++_3_14159))+ 3.1415926; } for ( _31415 = 1; _31415<3141- 1;_31415++)write( 31415% 314-( 3,14),_3141592654[ _31415 ] + "0123456789","314" [ 3]+1)-_314; puts((*_3141592654=0 ,_3141592654)) ;_314= *"3.141592";} ca aussi c'est facile, la prochaine fois, j'en met un qui ne représente pas ce qu'il calcule EDIT : Mouias bof l'indentation IPB.... http://www0.us.ioccc.org/1989/roemer.c
Posté(e) le 13 février 200520 a j'aime bien le concept totalement inutil.... heu théo, tu arrives vraiment à lire le code ? c'est toi qui l'as écrit ? parce que c'est quan meme assez imbitable comme écriture....
Posté(e) le 13 février 200520 a j'aime bien le concept totalement inutil....heu théo, tu arrives vraiment à lire le code ? c'est toi qui l'as écrit ? parce que c'est quan meme assez imbitable comme écriture.... http://www0.us.ioccc.org/1995/
Posté(e) le 13 février 200520 a Auteur Non, c'est pas moi qui ai écrit ça, c'est des pros. C'est imbitable, c'est le but. Il faut arriver à faire le pire code possible, mais qui fonctionne. C'est un concours. J'arrive à en lire certains quand je prends le temps de m'y mettre. C'est pas très dur en fait. C'est comme passer sous linux, il faut juste prendre le temps
Posté(e) le 13 février 200520 a #include <stdio.h> //#define l11l 0xFFFF //#define ll1 for //#define ll111 if //#define l1l1 unsigned //#define l111 struct //#define lll11 short //#define ll11l long //#define ll1ll putchar #define l1l1l(l) l=malloc(sizeof(struct llll1));l->lll1l=1-1;l->ll1l1=1-1; //#define l1ll1 *lllll++=l1ll%10000;l1ll/=10000; //#define l1lll if(!l1->lll1l){l1l1l(l1->lll1l);l1->lll1l->ll1l1=l1;}lllll=(l1=l1->lll1l)->lll;ll=1-1; //#define llll 1000 struct llll1 { struct llll1 * lll1l,*ll1l1 ;unsigned short lll [ 1000];};main (){struct llll1 *ll11,*l1l,* l1, *ll1l, * malloc ( ); unsigned long l1ll; long l11,ll ,l;unsigned short *lll1,* lllll; for(l =1-1;l< 14; putchar("\t\"8)>l\"9!.)>vl" [l]^'L'),++l );scanf("%d",&l);l1l1l(l1l) l1l1l(ll11 ) (l1=l1l)-> lll[l1l->lll[1-1] =1]=0xFFFF;for(l11 =1+1;l11<=l; ++l11){l1=ll11; lll1 = (ll1l=( ll11=l1l))-> lll; lllll =( l1l=l1)->lll; ll=(l1ll=1-1 );for(;ll1l-> lll1l||0xFFFF!= *lll1;){l1ll +=l11**lll1++ ;*lllll++=l1ll%10000;l1ll/=10000; if (++ll>1000){ if(!l1->lll1l){l1l1l(l1->lll1l);l1->lll1l->ll1l1=l1;}lllll=(l1=l1->lll1l)->lll;ll=1-1; lll1=( ll1l =ll1l-> lll1l)->lll; }}for(;l1ll; ){*lllll++=l1ll%10000;l1ll/=10000; if (++ll>=1000) { if(!l1->lll1l){l1l1l(l1->lll1l);l1->lll1l->ll1l1=l1;}lllll=(l1=l1->lll1l)->lll;ll=1-1;} } * lllll=0xFFFF;} for(l=(ll=1- 1);(l<1000)&& (l1->lll[ l] !=0xFFFF);++l); for (;l1;l1= l1->ll1l1,l= 1000){for(--l ;l>=1-1;--l, ++ll)printf( (ll)?((ll%19) ?"%04d":(ll= 19,"\n%04d") ):"%4d",l1-> lll[l] ); } putchar(10);} Pour l'instant...il doit rester le malloc quelque part, mais où ? Je viens de le compiler tel que et a priori, ca marche...
Posté(e) le 13 février 200520 a Auteur Tu n'as pas fait çà à la main j'espère ? sed perl sont tes amis
Posté(e) le 13 février 200520 a Tu n'as pas fait çà à la main j'espère ? Non, la fonction remplacer de UltraEdit marche assez bien
Posté(e) le 13 février 200520 a Non, c'est pas moi qui ai écrit ça, c'est des pros.C'est imbitable, c'est le but. Il faut arriver à faire le pire code possible, mais qui fonctionne. C'est un concours. J'arrive à en lire certains quand je prends le temps de m'y mettre. C'est pas très dur en fait. C'est comme passer sous linux, il faut juste prendre le temps d'ailleurs.... c'est vraiment du code écrit par un humain, ou il s'amusent à passer par un algo de mise en "dé-forme" ???
Posté(e) le 14 février 200520 a Pour rendre un code illisible : - commence par te faire un algo avec si possible des boucles (algo de Huffman, manipulation d'arbres, de listes, etc... bref ce que tu veux) - tu remplaces toutes tes variables par des #define ou bien tu les renommes de facon a ce que ce soit confus, idem pour les mots cles. Ajouter des \" \' ou des ( ) ; : qui ne servent a rien est un plus. Definir des classes ou des structures sera utile pour ajouter des -> et des . supplementaires. - tu mets en forme ton code pour qu'un dessin apparaisse. La je ne connais pas de script qui fasse ca... mais ca pourrait se faire. En attendant, c'est a la mimine. Le principe est simple et le resultat souvent impressionnant. Le premier code presente par Theocrite est fort sympathique.
Posté(e) le 15 février 200520 a En trainant sur codeproject pour trouver de belles classes button je suis tombe sur : http://www.codeproject.com/cpp/mandelbrot_obfuscation.asp
Posté(e) le 16 février 200520 a En trainant sur codeproject pour trouver de belles classes button je suis tombe sur :http://www.codeproject.com/cpp/mandelbrot_obfuscation.asp les gar vous m'en boucher un coin vous zét trop for , je ne c pa dou vous tiré c connaissance mais jémré bien en possédé
Posté(e) le 17 février 200520 a les gar vous m'en boucher un coin vous zét trop for , je ne c pa dou vous tiré c connaissance mais jémré bien en possédé Pour en posséder un minimum il faut déjà savoir écrire en français en fait Sympa comme trucs en tout cas Je vais remettre un projet comme ça à un de mes profs, juste pour voir sa tete
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.