Previous Up Next

Mandelbrot set signature programs

Signature programs are short programs that people have been using as part of their signature. They are small (2 to 4 lines) programs, that are often rather cryptic because they have to save space as much as possible. Below a collection of Mandelbrot set signature programs is given.

Bernhard Muenzer

His Mandelbrot signature programs used the variables m,u,e, and g,s,f, which are part of his email address. He did not create his Mandelbrot signature program from scratch, but has lost the original version unfortunately. The oldest version of his signature program, which he has kept is from 1993, and is still 4 lines long.
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*/
Arjan Kenter has archived one that already has m,u,e, and ,g,s,f as variable names:
int m,u,e;float g,s,f;char*c=" _.+=#\n)rezneuM drahnreB(xxxxxx@xxx";ma\
in(){for(e=0;e<25;e++){for(m=0;m<81;m++){u=s=f=0;do{g=s*s-f*f-2.1+.035*
m;f=2*s*f+.088*e-1.1;s=g;u++;}while(u<32&&s*s+f*f<4);putchar(c[m>79?6:e
>23&&m<28?34-m:u>31?0:u>>4?5:u>>3?4:u>>2?3:u>>1?2:1]);}}}/*xxx@xxx.xx*/
In this archive there is also a newer 3-line version that has an uglier Mandelbrot:
int m,u,e;float g,s,f;char*_=")xx.xxx@xxx(rezneuM drahnreB\n";main(){for(
;e<1944;){u=s=f=0;do{g=s*s-f*f-2.1+.035*(m=e%81);f=2*s*f+e/81*.088-1.1;s
=g;}while(++u<19&&g*s+f*f<4);putchar(_[++e>1863&&m<28?27-m:m>79?28:u]);}}
Somewhere here Jay R. Hill's version banches off (it contains the `char*_' part); which he soon dismissed again for his current version to preserve a few more bytes.

Vicky Robinson

Here is even a program containing a virus:
 int V,i,c=0;float k,y,R;main(){for(;c<1863;putchar((++c>918&&952>c
?60-V:i)["\nRV- .gis s'ydobyna ni ton m'I tuB"]))for(i=y=k=0;(V=c%81
 )<80&&R*k+y*y<6&&22>++i;y=2*k*y+c/81*.09-1,k=R)R=k*k-y*y-2+V/27.;}
(on alt.folklore.urban, Vicky Robinson's words `But I'm not in anybody's sig' caused an epidemy of the VI signature virus).

Wei-Hwa Huang

/* xxxxxx@xxx.xxxxxxx.xxx (Wei-Hwa Huang) */
int m,u,e=0;float l,_,I;main() {for(;e<1863; putchar((++e>924&&952>
e?60-m:u) ["\n  ude.hcetlac.occ@gnauhw   ]"])) for(u=_=l=0;(m=e%81)
<80&&I*l+_*_ <6&&25>++u;_=2*l*_+e/81*.09-1,l=I)I=l*l-_*_-2+.035*m;}
This on is based on the one of Bernhard Muenzer above. It contains the m,u,e variable names.

Marko Aalto

/*   xxxxx.xxxxx@xxxxxxxx.xx    |    http://www.helsinki.fi/~maaalto/  */
main(){char h[2001]=" Ma+\x1b[H",*k,c;float z=20,D,a,i,s,y;for(;k=h+7,z*=
8,z>8e-4;puts(h))for(s=.119+z;(k-h-7)%80<1?y=1.4+z,s-=z/15:k-h-1768;y-=z
/40,*k++=h[c/4&3])for(c=a=D=0;--c&&a*a+D*D<4;a=a*a-D*D-y,D=2*i*D+s)i=a;}

Carson Cheung

float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<L?--_
%6:6:7)+"World! \n",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;}
[ Carson Cheung, Computer Science, University Of Manchester, UK ]

E.B. van Koperen

/* Try me and stagger. With x size as parameter! y size=auto scaling!*/float R,
y=1.5,x,r,A,P,B;int u,h=80,n=80,s;main(c,v)int c;char **v;{s=(c>1?(h=atoi(v[1]
)):h)*h/2;for(R=6./h;s%h||(y-=R,x=-2),s;4<(P=B*B)+(r=A*A)|++u==n&&putchar(*(((
--s%h)?(u<n?--u%6:6):7)+"World!\n"))&&(A=B=P=u=r=0,x+=R/2))A=B*2*A+y,B=P+x-r;}

David Johnston

float l,I,Q,_,o;int E;main(){I=1.125;while(I>=-1.225){for(l=
-2;l<=1;l+=3/79.0){Q=_=0;for(E=127;Q*Q+_*_<4.0&&--E>32;){o=Q
;Q=Q*Q-_*_+l;_=2*o*_+I;}putchar(E);}putchar(10);I-=9/88.0;}}

Patrik Lundin

A Mandelbrot plotter:
main(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;}
He wrote more C signature.

Laurent Demailly

main(){char x,y=-1,t,n,*c="-=+X# \nrf.mpsbo.toylph@ld";while(++y<25)
{for(x=0;x<80;){float a,b,d,i=2.2/25*y-1.1,r=2.8/80*x++-2.1;t=b=d=0;do{
a=b*b-d*d+r;d=2*b*d+i;b=a;}while(++t<32&&b*b+d*d<4);for(n=0;t&~1;t/=2,
n++);putchar(c[x>79?6:y>23&&x<19?25-x:n]);}}}
He also wrote a PostScript signature.

Jay R. Hill

int main(){float g,s,f,r,i;char*_="/,;<mhl/brnoAmmhik<mmhI!/S!x`K\n";int m,u,e
=0;_[30]++;for(;e<3919;){u=(256*(s=(r=.0325*(m=e%80)-2)*r+(i=.047*(e/80)-1.128
)*i)-96)*s+32*r<3?22:16+32*r+16*s<1?29:0;if(u==(s=f=0))do g=s*s-f*f+r;while((f
=2*s*f+i)*f+(s=g)*g<4&&++u<25);putchar(_[++e>3840&&m<30?29-m:m>78?30:u]^1);}}
Note the exact tests for a point in the period one cardioid (marked H) and the period two circle (at -1, marked J). These tests also save a lot of time. This one is based on one of
Bernhard Muenzer's versions of the program. It contains the g,s,f variables.

Here is an even shorter version by him:

main(){int f,g,h=0;float a,b,c,d,e;for(;h<3920;putchar("!/-,;<:lnb/bh`r\
/ylqbAmmhI/S/x`K\013"[++h>3840&&g<25?31-g:g>79?31:f]^1))if((f=(256*(c=(d
=(g=1+h%80)/31.-2)*d+(e=.047*(h/80-24))*e)-96)*c+32*d<3?24:16+32*d+16*c<
1?30:0)==0)for(a=d,b=c=0;(b=2*b*c+e)*b+(c=a)*a<=4&&++f<26;a=d-b*b+c*c);}

Andrew Garrard

/* o._.o  (C) 1996 Andrew Garrard, xxxxxxxxxx@xxxxxxx.xxxxx.xx.xx  o~\_/~o */
/* ((^)) */main(c){float x,y=2,X,Y,Z;for(;(x=-2)<(y-=.1);puts(""/* (/\ /\) */
/* O)_(O */ ))for(;(X=x+=.05)<2;c=printf("%c","  .-:|O8M#"[c])) /* (\@o@/) */
/* O/ \O */for(Y=y;X*X+Y*Y<4&&c++<8;Z=x+X*X-Y*Y,Y=y+2*X*Y,X=Z);}/* ~~~ ~~~ */
Cute but long:
/*  /)_(\  */int main(void) {float x,y=2,X, /* Yet   m   f */
/* (/. .\) */Y,_,i;int c;for(;(y-=.1)>-2;){ /*      o    a */
/*  \(T)/  */for(x=-2;(x+=.1)<2;){X=x;Y=y;c /*     r   . c */
/* ()   () */=0;while((X*X+Y*Y)<=4&&c++<7){ /* f  e   g  t */
/*  ()-()  */_=x+X*X-Y*Y;i=2*X*Y+y;X=_;Y=i; /* r     i   o */
/* Andrew  */}printf("%c",*(" .-:|O8M#"+c)) /* o    s    r */
/* Garrard */;}printf("\n");}} /* fluppeteer   m  the    y */
He has some more C signature programs

Robert Harley

In .pgm format:
float x,y=1,s=1./128,X,Y,V;main(i){for(puts("P5 257 127 63");X=Y=0,x?/*Rob H.*/
x+=s,1:(x=-2,y-=s);putchar(i))for(i=64;--i&&X*X+(V=Y*Y)<4;X=X*X-V+x)Y=2*X*Y+y;}
He has some more C signature programs

John Holder

float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<L?--_
%6:6:7)+"Mandel \n",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;}
/* xxxxxxx@xxxx.xxx - UNIX specialist, Paranet, Inc, Denver,CO */

Signature programs by Mark VandeWettering

/* __  __ __   ____      __*/ float e,a,b,c,d;main(i){for(;b<4;b+=.1){for(a=0;
/*|  \/  |\ \ / /\ \    / /*/ a<4;a+=.06){c=d=0;for(i=99;--i&&c*c+d*d<4;)e=c*c
/*| |\/| | \ V /  \ \/\/ / */ -d*d+a-2,d=2*c*d+b-2,c=e;putchar("X =."[i&3]);}
/*|_|  |_ark\_/ande\_/\_/ettering <xxxxx@xxxxxxxxxxxxxxx.xxx> */ puts("");}}
He also as Brainf**k to C compiler signature program.


Signature programs | home and email