1. Си / Говнокод #20860

    +262

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    #define e if
    #define h while
    #define s return
    #define v NULL
    #define r else
    #define u case
    #define C switch
    #define D for
    #define L0 typedef
    #define L int
    L0 char S;L0 S*Z;L0 Z*U;L0 double N;
    L0 struct Q{L Z;union{N b;S c;}M;struct Q*w;struct Q*q;}Q;
    Q*K(L w){Q*n=(Q*)malloc(sizeof(Q));e(v==n)exit(1);n->Z=w;s n;}
    void A(Z g,U t){h(' '==*g)g++;*t=g;}
    Q*V(Z g,U t){Q*n=K(2);n->M.b=strtod(g,t);s n;}
    Q*I(Z g,U t){e('+'!=*g)s v;Q*n=K(1);n->M.c='+';++*t;s n;}
    Q*W(Z g,U t){e('x'!=*g)s v;Q*n=K(20);g++;e(*g<'0'||*g>'9'){n->M.b=1;*t=g;}r{n->M.b=strtod(g,t);e(*t==g)n->M.b=1;}s n;}
    Q*J(Z g,U t){Q*n,*p=v;h(*g){A(g,&g);Q*l=V(g,&g);A(g,&g);Q*m=W(g,&g);Q*o;e(v==m)o=l;r{o=K(1);o->M.c='*';o->w=l;o->q=m;}e(v==p)n=o;r{p->w=n;p->q=o;n=p;}A(g,&g);p=I(g,&g);e(v==p){*t=g;s n;}}}
    Q**E(Z g){L n=1,i;Z t=g;h(*t){e(';'==*t)n++;t++;}Q**R=(Q**)malloc((n+1)*sizeof(Q*));e(v==R)s v;D(i=0;i<n;++i){R[i]=J(g,&g);e(*g!=';'&&*g!=0)s v;e(v==R[i])s v;g++;}R[n]=v;s R;}
    N P(Q*I,N a){C(I->Z){u 1:C(I->M.c){u '+':s P(I->w,a)+P(I->q,a);u '*':s P(I->w,a)*P(I->q,a);u '/':s P(I->w,a)/P(I->q,a);u '-':s P(I->w,a)-P(I->q,a);}u 2:s I->M.b;u 20:s pow(a,I->M.b);}}
    N O(Q*I){N x=0,y=1,z=2,Z=P(I,x),X=P(I, y),H=P(I,z),j=1e-10;L i;D(i=0;i<100&&fabs(z-y)>j&&fabs(x-y)>j&&fabs(X)>j;i++){e(Z*X<0){z=y;H=X;}r e(H*X<0){x=y;Z=X;}r{N d=z-x;x=x-d;z=z+d;Z=P(I,x);X=P(I,y);}y=(z+x)/2;X=P(I,y);}s y;}
    Z B(Q**A){L n=0,i,j,d=0;D(;A[n]!=v;n++);Z M=(Z)malloc(n*10+1);e(v==M)s v;D(i=0;A[i]!=v;i++)D(j=0;j<10;j++){
      M[i*10+j-d]=(S)fmod(12.51*O(A[i])+j*17,256);
    e(!M[i*10+j-d])d++;}M[n*10-d]=0;s M;}
    L T(Z g,Z M){Z k=M;h(*g){*g++^=*k++;e(!*k)k=M;}s(0);}
    L main(void){
        Q**n=E("2.0x5+6.2x2+7;0.3x6.1+6x5+1");
        L i;
        Z k=B(n);
        S w[]={-91,-35,97,113,89,37,113,32,28,-10,124,67,93,32,123,70,63,-19,-71,-123,-114,45,109,64,96,57,13,7,-91,0};
        T(w,k);
        printf("%s\n",w);
    }

    Запостил: Nastenka1998, 19 Августа 2016

    Комментарии (41) RSS

    • http://ideone.com/JBJfUl
      Ответить
      • То-то я думал, чего вдруг Кегги стал реже появлятся на форуме, а он ник сменил...
        Напиши следующее признание в любви на ассемблере.

        Ну по моему пора Nastenka1998 убрать из списка спамящих ботов и перестать минусовать, особенно если это кегги.
        Ответить
        • показать все, что скрытоКакой багор )))
          Ответить
        • Я сдесь только комменты читала. Только-только начала писать что то хорошее борманду. а подумали что бот. Я не пешу спам.
          Ответить
          • > пешу
            Кегги, ты зачем пол сменила?
            Ответить
            • Так может Кегля не меняла пол? Просто ты не обращал на неё внимания и на её пол?
              Ответить
              • Может тульпа? Не?
                Ответить
                • Если даже тульпа Кегдана любит Борманда и пишет об этом на ГК, то мы увидели новый уровень лузерства.
                  Ответить
            • Зато из снятого старого напольного покрытия ты теперь сможешь вырезать лопасти для вентилятора.
              Ответить
      • показать все, что скрытоКакой багор )))
        Ответить
    • показать все, что скрытоКакой багор )))
      Ответить
    • Ты не доделал. Добавь дифайны для майна, войда, униона, чара и прочих базвордов
      Ответить
    • > 2.0x5+6.2x2+7;0.3x6.1+6x5+1
      И полиномы тут какие-то. А как из них Борманд получается?
      Ответить
      • Який борманд ))
        Ответить
        • Борманд - 0.3x6.1+6x5+1, а Настенька - 2.0x5+6.2x2+7?
          Ответить
      • Степень этих поленомов - степень моей любви к Борманду! Это магия для двоих.
        Ответить
    • Это исходники интерпретатора языка J?
      Ответить
    • показать все, что скрытоА я хнал, хнал что кегги гомтгей
      Ответить
    • Относительная годнота, но зачем инфиксный питух? Надо было в RPN.
      Ответить
      • Префиксную, как в форте.
        Ответить
        • В форте как раз RPN. Префиксная в лиспе.
          Ответить
          • В S" Forth" очень просто добавить префиксную нотацию, и даже без скобочек:
            http://govnokod.ru/25131#comment443310
            Ответить
          • Кстати, слова типа ' ['] CHAR [CHAR] S" C" : VARIABLE CREATE берут свой аргумент из исходника, так что их можно считать префиксными, а слова WORD PARSE CONSTANT VALUE ещё и из стека берут аргумент, их можно считать инфиксными.

            Так что в S" Forth" не только постфикс.
            Ответить
            • > аргумент из исходника
              Это очень необычные слова, иногда до неюзабельности. Как тот же create позвать с произвольным аргументом, не вшитым в код? Через evaluate разве что... ну или хаки с буфером.
              Ответить
              • Ну для литералов нормально, а с определяющими словами не всегда удобно, согласен. Я как-то обломался пытаясь сделать для структурок генерецию имен вида имя.поле.

                В стандарте, почему-то ничего такого нет, но системы обычно включают в себя подобные слова. В S" SP-Forth" есть слово CREATED , в S" GForth" есть слово nextname которое работает с любым определяющим словом.
                http://ideone.com/1FQCBN

                Почти всегда есть какое-нибудь слово для создания хотя бы заголовка для строки из стека.
                Ответить
    • Романтика на говнокоде. :)
      Ответить
    • Это так трогательно... ^______^
      Жаль, что яой. Boku no Bormand.
      Ответить
    • file.min.js
      file.min.c

      А если серьёзно, заказчик, видимо, предъявил требование предоставить ПО в виде исходных кодов...
      Ответить
    • показать все, что скрытоvanished
      Ответить

    Добавить комментарий