برنامه‌های امضاء (Signature programs)

برنامه‌های امضاء (Signature programs) برنامه‌های کوتاهی هستند که برنامه‌نویس‌ها به‌عنوان امضای خود استفاده می‌کنند. این برنامه‌ها برنامه‌های کوچکی‌اند (معمولا بین ۲ تا ۴ خط) و باید در فضای کوچکی نوشته شوند. این برنامه‌ها رمزآلود هستند و معمولا به زبان C نوشته می‌شوند چون زبان سی زبان جمع‌وجوری است و این امکان را برای برنامه‌نویس فراهم می‌کند که کد خود را بصورت رمزآلود بنویسد. این برنامه‌ها معمولا در هنگام کامپایل، یک الگو یا عملکرد جالب ارائه می‌دهند.

کد زیر یک برنامه امضاء است که مثلث سیرپینسکی (Sierpinski Triangle) را رسم می‌کند:

main(c,r){for(r=32;r;)printf(++c>31?c=!r--,"\n":c<r?" ":~c&r?" `":" #");}

شکل فشرده‌نشده‌ی کد بالا نیز می‌تواند شبیه کد زیر باشد:

#include <stdio.h>

int main()
{
    int c = 0;
    int r = 32;

    while(r != 0)
    {
        c = c + 1;
        if(c > 31)
        {
            c = !r;   /* same as c = 0 */
            r = r - 1;
            printf("\n");
        }
        else
        {
            if(c < r)
            {
                printf(" ");
            }
            else
            {
                if((~c & r) != 0)
                {
                    printf(" `");
                }
                else
                {
                    printf(" #");
                }
            }
        }
    }
    return 0;
}

یک برنامه امضاء چاپ‌کنندهٔ درخت کریسمس:

int y,z;main(x){x=(x>0?-9:x);z=((z=(x+5)
)>0?z:-z);printf(!x&&++y?"\n":z?z>y%3+y/
3?" ":x<-5?"/":"\\":y?"|":"*");y-9?main(
++x):puts("  _|_|_")&&puts("  \\___/");}

یک برنامه امضاء چاپ‌کنندهٔ گل:

char a[1761],*b;main(){int c,k;double d,e=1.111,x,y,z,sin(),cos();for(b=a,
c=1760;*b++=' ',--c;);for(d=.1;d<=1.3;d+=.2)for((y=d,x=0.0,c=150);c--;){z=
x*cos(e)-(y-x*x)*sin(e);y=x*sin(e)+(y-x*x)*cos(e);x=z;k=x*20.0+40+((int)(-
y*10.0+11))*80;if(k>=0&&k<1761)a[k]='*';}puts(a);}

یک برنامه امضاء سازندهٔ هزارتو (Maze):

int a[1817];main(z,p,q,r){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]]);}