Tombé par hasard sur cette page qui liste de minuscules programmes en C utilisés comme signatures d'e-mails par des programmeurs fous, ou de génie c'est la même chose. C est un langage de programmation tellement dense qu'il peut en devenir cryptique, ce qui fait qu'il est impossible de deviner ce que font ces programmes sans les lancer. Exemples:
main(){char*i="L0[B0BCA7G0BFACIW0BfRAAB0BCACAFR0[BCAFE0LCCAFR0",j,k=0;for(;*i;
*++i==48&&puts(""))do for(j=*i-48>>k&7;j--;)putchar(k+32);while(k^=3);}
fait :
###
##### ##
## ## ## ##
## ## ## ## ### ####
## ###### #### ## ## ##
## ## ## ## ## ## ####
##### ## ## ## ## ##
### ## ## ## ## ####
Celui-ci fait un jeu de pendu dont la solution est le nom de l'auteur !
main(){char s[]=".bg`z`lE)gc`}{hD-|\\/OI:retteL>\n\n",k;long w=32,r,_,y
,i,b,g,p[]={63l<<16,37968,15,32,896,2048,24576,37449,2,12546,3074,19138
,3586,585,0},t;b=g=r=0;while((b<7)&&(g<65278)){for(_=16;_+10;)putchar(_
-->0?_&7?g>>_&1?s[_]^9:46:w:s[_+w]);while((k=getchar())<65);for(_=15,t=
g;_;)if((s[_--]^9|w)==(k|w))g|=2<<_;if(t==g)r|=p[b++];for(y=9,t=0;y--;)
for(_=9;_;)putchar(--_?(i=p[y+6]>>24-3*_&7)?r>>t++&1?s[i+15]:w:w:10);}}
>Letter:g---- | : | \O/ | I | | ------ Martijn .ei.in.
celui-ci
int a[1817];main(){int z=5,p=5,q=5,r=5; for(p=80;q+p-80;p-=2*a[p])for(z=9;z--;)q=3&(r=time(0)
+r*57)/7,q=q?q-1?q-2?1-p%79?-1:0:p%79-77?1:0:p<1659?79:0:p>158?-79:0,q?!a[p+q*2
]?a[p+=a[p+=q]=q]=q:0:0;for(;q++-1817;)printf(q%79?"%c":"%c\n","#"[!a[q-1]]);}
fait un labyrinthe dans ce genre :
######### ### ### ####### # # ### ### # # # ####### # # ######### ####### ###
# # # # # # # # # # # # # # # # # # # # # # #
# ##### ####### ##### # ############# ####### # ####### ########### ####### #
# # # # # # # # # # # # # # # #
# # # ### # # # ####### # ##### ### ### # ### ### ### ### ### # ### # # #####
# # # # # # # # # # # # # # # # # # # # # #
####### ##### ### # # ##### # # # ####### ### ##### # # ### ######### ### # #
# # # # # # # # # # # # # # # #
####### # # # ############### ####### # ##### # # # ####### ##### # # # ### #
# # # # # # # # # # # # # # # # # # #
##### ### ##### # ######### ##### # # ####### ### ##### ### # # ### ### ### #
# # # # # # # # # # # # # # # # # #
##### # ####### # ##### # # ##### # ### # # ########### ### ### # ### #######
# # # # # # # # # # # # # # # # # # # # #
# # # ####### ### # ### ##### # ##### ### ### ### # ### ### # # ##### # # ###
# # # # # # # # # # # # # # # # # # # # #
# ### ### # ##### # # # ### ### ### ### ####### # ####### ### # # ####### # #
# # # # # # # # # # # # # # # # # #
############# ####### # ##### ### ### ######### ##### # # # ##### # ### #####
# # # # # # # # # # # # # # # # # # # # # # # # # #
# ##### ##### ### ####### # ##### ##### # # # ##### ### ##### ######### # # #
Une discipline particulière concerne l'ensemble de Mandelbrot :
main(){char*c=" _.+=#\n)rezneuM drahnreB(xx.xxx@xxx";int x,t,y;float a,
b,d;for(y=0;y<25;y++){for(x=0;x<80;x++){t=b=d=0;do{a=b*b-d*d-2.1+.035*x
;d=2*b*d+.088*y-1.1;b=a;t++;}while(t<32&&b*b+d*d<4);putchar(c[x>79?6:y>
23&&x<28?34-x:t>31?0:t>>4?5:t>>3?4:t>>2?3:t>>1?2:1]);}}} /*xxx@xxx.xx*/
donne :
_____________.................................++++++++==+++++++++............... ___________...............................+++++++++++++=#====+++++++............ __________............................++++++++++++++++=== ==+++++++++++......... _________..........................++++++++++++++++=### #=#=++++++++++........ ________........................+++++++++++++++++++== ==+++++++++++...... _______......................+++++++++++++=###=== =### ##=== ==++=#=+++..... ______....................++++++++++++++++==# # = ##+++++... _____................+++++++++++++++++++===# #==++++++.. ____...........+++++++++==+++++=++++++====# #===++++.. ____.....++++++++++++++===##===##=======# #=+++++. ____..+++++++++++++++++===# #== #=+++++. ___.+++++++++++++++======# # #=+++++++ ___+++++++=+++======= =+++++++++ ___+++++++=+++======= =+++++++++ ___.+++++++++++++++======# # #=+++++++ ____..+++++++++++++++++===# #== #=+++++. ____.....++++++++++++++===##===##=======# #=+++++. ____...........+++++++++==+++++=++++++====# #===++++.. _____................+++++++++++++++++++===# #==++++++.. ______....................++++++++++++++++==# # = ##+++++... _______......................+++++++++++++=###=== =### ##=== ==++=#=+++..... ________........................+++++++++++++++++++== ==+++++++++++...... _________..........................++++++++++++++++=### #=#=++++++++++........ __________............................++++++++++++++++=== ==+++++++++++......... xxx@xxx.xx(Bernhard Muenzer)..............+++++++++++++=#====+++++++............
on peut même faire plus court :
main(){int c;float t,x,y,b=-2,a=b;for(;b-=a>2?.1/(a=-2):0,b<2;putchar(30+
c),a+=.0503)for(x=y=c=0;++c<90&x*x+y*y<4;y=2*x*y+b,x=t)t=x*x-y*y+a;}
Il y en a encore plein d'autres, mais mon préféré reste cet extraordinaire programme :
int a[52514],b,c=52514,d,e,f=1e4,g,h;main() {for(;b=c-=14;h=printf("%04d",e+d/f))
for(e=d%=f;g=--b*2;d/=g)d=d*b+f*(h?a[b]:f/5),a[b]=d%--g;}
Que fait-il ? Je vous défie de le deviner. La langue au chat est ici !
Une description de l'algorithme utilisé est ici .
















Excellent titre de billet !!! Pour le compte goutte, je l’ai connu avant même qu’on en connaissent l’auteur, vers 93…
Avec un billet pareil, faudrait que moi même j’en fasse un sur les quines…
http://tinyurl.com/2g9w6c
En écrivant le billet je me suis posé la question du programme qui s’écrit lui-même, mais je ne savais pas que ça existe déjà, encore moins que ça s’appelle un « Quine ». Super ! écris un article si tu veux, mais l’article de la Wikipedia me semble très complet et clair …
J’ai pas saisi l’allusion au « compte goutte » …
Pingback: Python : un petit Sudoku pour commencer « Dr. Goulu