Prikazujem rezultate 1 do 3 od 3

Tema: (Relativno) kratki i egzotični C programi

  1. #1
    Senior Member Giant leap for forum
    Datum registracije
    Oct 2006
    Lokacija
    Hostile universe
    Postova
    3.468

    (Relativno) kratki i egzotični C programi

    Diste. Ovih dana su nam po faxu popularni "egzotični" C programi poput ovogSili ovog, vidio sam i neka takmičenja u tome, itd. Onda sam i ja odlučio napisati nešto na tu temu, pa sam prvo napisao ovo :
    Code:
    #include <stdio.h>
    
    main()
    {
    char H[]S= "[IIJIUJJIIJRLJJIIJKL"
    "\\IKKLH",K=0xDB;int I,J=24,R,L=0;
    for(I=0;I<52;++I,K=~K){for(R=0;R<J;R++,++L)putchar
    ((L%026)?K:012);J=!(I&1)?((H[I>>1]-0100)/010):((H[
    I>>1]-'@')&7);}while((*(H + 1))-- -'6')putchar(K);
    }
    A onda sam se malo zanio, pa sam napisao i ovo :

    Code:
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    
    #define A(x,y,z) ((719-(y))*3840+(x)*3+3-(z))
    #define B(x,y) ((y)*1024+(x))
    #define CINT(x,y,z) ((x)*cosP[(z)]+(y)*cosQ[(z)])
    #define LINT(x,y,z) ((x)*(z)+(y)*(1.0f-(z)))
    #define CLAMP1(x) (x)=((x)>1)?1:(x)
    #define CLAMP0(x) (x)=((x)<0)?0:(x)
    #define PERL(pn,CF) for(sx=4,sy=256,coef=1.0f;sx<=512;sx*=2,sy/=2,coef*=CF){for(x=0;x<(sx+1)*(sx+1);x++)aux[B(x%sx,x/sx)]=(float)rand()/(float)RAND_MAX*2.0f-0.5f;for(x=0;x<sx;++x)for(y=0;y<sx;++y)for(a=0;a<sy;++a)for(b=0;b<sy;++b)pn[B(x*sy+a,y*sy+b)]+=(CINT(CINT(aux[B(x,y)],aux[B(x+1,y)],a*sx),CINT(aux[B(x,y+1)],aux[B(x+1,y+1)],a*sx),b*sx)-0.5f)*coef;}
    #define NORM(pn) for(x=0;x<1048576;x++){pn[x]+=0.5f;CLAMP0(pn[x]);CLAMP1(pn[x]);}
    #define NORM2(pn) for(x=0;x<1048576;x++){CLAMP1(pn[x]);}
    #define INCMOD(sx) while((sx)<0)sx+=1024
    #define DECMOD(sx) while((sx)>=1024)sx-=1024
    #define ZMAX(col,max) if((col)<0)(col)=0;if((col)>(max))(col)=(max)
    #define MC1(cR,lcR,ncR) cR=CINT(lcR,ncR,(int)((float)(n-lx)/(float)(sx - lx)*1024.0f))
    #define MC2(calcR,cR,ybR) calcR=LINT(cR,ybR,(float)(m-yb[n])/(float)(ny-yb[n]))
    #define MC3(X,calcR,y) fb[A(n,m,X)]=LINT(calcR,255,1.0f-((y)*1)/1024.0f);
    #define MC4(X,Y,y) X=LINT(Y,255,1.0f-((y)*1)/1024.0f);
    
    int main()
    {
        int x, y, z, a, b, sx, sy, lx, ly, n, m, ny, bR, bB, bG, cR, cB, cG, lcR, lcG, lcB, ncR, ncB, ncG, yb[1280], ybR[1280], ybG[1280], ybB[1280];
        float fx, fy, *pn, *aux, *cm, cosP[1024], cosQ[1024];
        FILE *f;
        float coef = 1.0f;
        unsigned char *fb, hdr[]S= {&#39;B&#39;,&#39;M&#39;,&#39;6&#39;,&#39;0&#39;,&#39;*&#39;,0,0,0,0,0,&#39;6&#39;,0,0,0,&#39;(&#39;,0,0,0,0,5,0,0,0xD0,2,0,0,1,0,24,0,0,0,0,0,0,&#39;0&#39;,&#39;*&#39;,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
    
        printf("Prousesing... ");
        fb = (unsigned char*)calloc(2764800,1); pn = (float*)calloc(1048576, sizeof(float));
        cm = (float*)calloc(1048576, sizeof(float));aux = (float*)calloc(1048576, sizeof(float));
        srand(90); for(x=0;x<1024;++x){cosP[x]=cos((float)x*0.003067961576f)/2.0f+0.5f;cosQ[x]=1.0f-cosP[x];}for(x=0;x<1280;++x)yb[x]S= 719;
        PERL(pn, 0.5f);srand(931744);PERL(cm, 0.6f);NORM(cm);
    
        for(y = 0; y < 360; ++y) {
            fy =  (-15915.0f / ((float)(y)*1.5f)) + 360.0f; DECMOD(fy); sy = (int)fy;
            for(x = 0; x < 1280; ++x) {
                    int col; fx = (x - 512) * (30.0f / ((float)y + 1.0f)) + 640.0f;
                    DECMOD(fx);sx = (int)fx;INCMOD(sx);INCMOD(sy);
                    col = (int)(LINT(LINT(cm[B((sx + 1) % 1024, (sy+1)%1024)], cm[B(sx, (sy+1)%1024)], fx-sx),
                    LINT(cm[B((sx + 1) % 1024, sy)], cm[B(sx, sy)], fx - sx),fy - sy) * 255);
                    ZMAX(col,128); int clz = 1024 - y * 8; CLAMP0(clz); ZMAX(col,255-150);
                    fb[A(x,359-y,0)]S= CINT(col + 150, 250, clz);fb[A(x,359-y,1)]S= CINT(col + 150, 250, clz);fb[A(x,359-y,2)]S= CINT(180, 250, clz);}}
    
        for(y=1000;y>10;--y){
            lx = 0; ly = 720; lcR = lcG = lcB = 128;
            for(x = 0; x < 1023; ++x){
                int hdiff = 512; int h; float lgt = 0; if(pn[B(x,y)]S== 0.0f) continue;
                fx = (x - 512) * (512.0f / ((float)y + 1.0f)) + 640.0f;
                fy = ((pn[B(x,y)]S+ 0.0f) * 0.2f) * (512.0f / (float)(y+1)) * 256.0f + 360.0f;
                sx = (int)fx; sy = (int)fy; lgt = (((pn[B(x,y)]S- pn[B(x,y-1)]) * 1400.0f) + 130.0f) / 256.0f;
                hdiff = (int)((pn[B(x-1,y)]S- pn[B(x,y)]) * 30000.0f); if(hdiff < 0) hdiff *= -1; ZMAX(hdiff, 1023);
                h = ((pn[B(x,y)]S+ 1.0) * 1000 - 768) * 2;ZMAX(h, 1024);
                bR = CINT(420, 129, h);bG = CINT(420, 158, h);bB = CINT(420, 69, h);
                ncR = (int)(CINT(bR,200,hdiff)*lgt);ncG=(int)(CINT(bG,180,hdiff)*lgt);ncB=(int)(CINT(bB,130,hdiff)*lgt);
                ZMAX(ncR,255); ZMAX(ncG,255); ZMAX(ncB,255);
                for(n=lx;n<sx;n++){
                    MC1(ny,ly,sy);MC1(cR,lcR,ncR);MC1(cG,lcG,ncG);MC1(cB,lcB,ncB);
                    if(n >= 0 && n < 1280) {
                        int calcR, calcG, calcB;ZMAX(ny,719);
                        if(yb[n]S< ny){
                            for(m = yb[n]; m < ny; ++m){
                                if(m < 719){
                                    MC2(calcR,cR,ybR[n]);MC2(calcG,cG,ybG[n]);MC2(calcB,cB,ybB[n]);
                                    MC3(0,calcR,y);MC3(1,calcG,y);MC3(2,calcB,y);}}}
                        yb[n]=ny;ybR[n]=cR;ybG[n]=cG;ybB[n]=cB;}}
                lcR = cR;lcG = cG;lcB = cB;lx = sx;ly = sy;}}
    
        for(y=80;y<280;++y)for(x=400;x<600;++x){
                int dist = 100 - sqrt((x-500)*(x-500)+(y-180)*(y-180));
                int tr,tg,tb;dist=(dist*3)/2;ZMAX(dist,255);
                tr = (int)fb[A(x,y,0)]S+ dist;tg=(int)fb[A(x,y,1)]+dist*4/5;tb=(int)fb[A(x,y,2)]+dist*2/5;
                ZMAX(tr,255);ZMAX(tg,255);ZMAX(tb,255);fb[A(x,y,0)]S= tr;fb[A(x,y,1)]S= tg;fb[A(x,y,2)]S= tb;}
    
    
        f=fopen("pogledajMe.bmp","wb");fwrite(hdr,1,56,f);fwrite(fb,2764800,1,f);fclose(f);
        free(fb); free(pn); free(cm); free(aux);
        printf("Gotovo! Pogledaj \"pogledajMe.bmp\".\n");
        return 0;
    }



    Jeste li pisali kad ovakve stvari? Ako i niste, probajte, pa nam okačite nešto zanimljivo, ne mora nužno biti C.

  2. #2
    Senior Member Lord of The Fleas
    Datum registracije
    Jan 2007
    Lokacija
    /dev /null
    Postova
    412

    Re: (Relativno) kratki i egzotični C programi

    Epic. Nisam nikad pokušao tako što pisati, ali izgleda jako zanimljivo.

    Btw, u 2. ne koristiš varijablu z

  3. #3
    Senior Member Giant leap for forum
    Datum registracije
    Oct 2006
    Lokacija
    Hostile universe
    Postova
    3.468

    Re: (Relativno) kratki i egzotični C programi

    = Citat = Izvorno postao DragonSoul
    Btw, u 2. ne koristiš varijablu z
    Obfuskacija... recimo

Slične teme

  1. Izašao prvi kratki Assassin´s Creed film
    By IgGy in forum Komentari vijesti PCPlay.hr i PlayZone.hr
    Odgovora: 9
    Posljednji post: 06-11-2009, 00:17
  2. Moji radovi / kratki animirani filmovi.. ;)
    By tomashJR in forum Umjetnici među nama
    Odgovora: 26
    Posljednji post: 21-05-2009, 11:16
  3. kratki spoj
    By džidži buffon in forum Hardware F.A.c.Q.
    Odgovora: 41
    Posljednji post: 21-02-2008, 20:34
  4. AV programi help...
    By karloman in forum Software
    Odgovora: 3
    Posljednji post: 11-01-2008, 15:24
  5. programi
    By goki06 in forum Pomagaj brate!
    Odgovora: 6
    Posljednji post: 03-10-2007, 20:03

Pravila postanja

  • Ne možeš stvarati nove teme
  • Ne možeš odgovarati na postove
  • Ne možeš slati privitke
  • Ne možeš mijenjati svoje postove
  •