1. Лучший говнокод

    В номинации:
    За время:
  2. C++ / Говнокод #20365

    +2

    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
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    // p2.cpp : Defines the entry point for the console application.
    //   Язык Visual C++ 7.0
    //   Консольное приложение
    //   13.07.2016
    
    #include "stdafx.h"
    #include <conio.h>
    
    int aa (int, int, int);
    void ab (int);
    
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	int a, b, c, d, e;
    	int f;
    
    	for (a = 0; a < 4; a++)
    		for (b = 0; b < 4; b++)
    			for (c = 0; c < 4; c++)
    				for (d = 0; d < 4; d++)
    					for (e = 0; e < 4; e++)
    					{
    						f = aa (1, a, 2);
    						f = aa (f, b, 3);
    						f = aa (f, c, 4);
    						f = aa (f, d, 5);
    						f = aa (f, e, 6);
    
    						if (f == 35)
    						{
    							printf ("((((1 "); ab (a);
    							printf ("2) "); ab (b);
    							printf ("3) "); ab (c);
    							printf ("4) "); ab (d);
    							printf ("5) "); ab (e);
    							printf ("6 = 35.\n");
    						}
    					}
    
    	getch ();
    	return 0;
    }
    
    
    int aa (int a, int b, int c)
    {
    	switch (b)
    	{
    		case 0: return a + c;
    		case 1: return a - c;
    		case 2: return a * c;
    		case 3: return a / c;
    	}
    
    	return 0;
    }
    
    void ab (int a)
    {
    	switch (a)
    	{
    		case 0: printf ("+ "); break;
    		case 1: printf ("- "); break;
    		case 2: printf ("* "); break;
    		case 3: printf ("/ "); break;
    	}
    }

    Задача: В написанном выражении ((((1 ? 2) ? 3) ? 4) ? 5) ? 6 вместо каждого знака ? вставить знак одного из четырёх арифметических действий: +, -, *, / так, чтобы результат вычислений равнялся 35.

    FrontlineReporter, 13 Июля 2016

    Комментарии (67)
  3. C++ / Говнокод #19987

    +2

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    template <typename T, typename ...Args>
    std::future<T> looped_thread::add_task(std::function<T(Args...)> func, Args ...args) {
        std::packaged_task<T()> task(std::bind(func,args...));
        std::future<T> fut = task.get_future();
        std::lock_guard<std::mutex> lock(_mutex);
        /*std::queue<std::function<void()>>*/ _tasks.push(/*std::packaged_task<T()> -> std::function<void()> ??*/);
        /*std::condition_variable*/ _cv.notify_one(); 
        return std::move(fut);
    }

    Задача: написать собственный пул потоков с блекджеком и шлюхами
    Подзадача: реализовать метод, добавляющий функтор в очередь команд и возвращающий std::future
    Что не так: std::packaged_task не конвертируется в std::future. Он не копируется, а поэтому:
    а. его нельзя передать через std::bind;
    б. при захвате через с++14 lambda capture expressions (аля

    auto f = [t = std::move(task)](){/**/};
    ) мы получаем t типа const std::packaged_task (мб это особенность mingw, конечно, но один фиг работать должно везде). Ни выполнить, ни мувнуть, ни скопировать. mutable в спецификации лямбды не помогает
    в. Примерно все те же самые проблемы возникают при попытке обернуть packaged_task в unique_ptr
    г. если чуть-чуть погуглить, можно найти кучу страшных решений через виртуальные методы, наследование, оборачивание packaged_task в shared_ptr и пр. Например: https://rsdn.ru/forum/cpp/5824551.all

    Но есть куда более простое и изящное решение. Угадаете?

    Antervis, 12 Мая 2016

    Комментарии (67)
  4. PHP / Говнокод #19690

    +2

    1. 1
    https://habrahabr.ru/post/280121/

    RestAPI в 2016 году. Отсосите, любители фреймворков и оттестированных библиотек

    loki90, 24 Марта 2016

    Комментарии (67)
  5. C++ / Говнокод #19663

    +3

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    #include <vector>
    
    template <typename T>
    void FreeAll( T & t ) {
        T tmp;
        t.swap( tmp );
    }

    3_dar, 20 Марта 2016

    Комментарии (67)
  6. JavaScript / Говнокод #17222

    +161

    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
    function kevinTheNumberMentioner(_){
      l=[]
      /* mostly harmless --> */ with(l) {
      	
      	//Sorry about all this, my babel fish has a headache today...
      	for (ll=!+[]+!![];ll<_+(+!![]);ll++) {
      	  lll=+!![];
      	  while (ll%++lll);
      	  //I've got this terrible pain in all the semicolons down my right-hand side
      	  (ll==lll)&&push(ll);
      	}
      	forEach(alert);
      	
      }
      
      //You're really not going to like this...
      return [!+[]+!+[]+!+[]+!+[]]+[!+[]+!+[]];
    }

    Открыл твитор, а там - это.

    http://arstechnica.com/information-technology/2014/11/holiday-reading-for-a-certain-sort-if-hemingway-wrote-javascript/

    Xom94ok, 30 Ноября 2014

    Комментарии (67)
  7. JavaScript / Говнокод #15663

    +154

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    var setLeadingZero = function(val) {
        if (val.toString().length == 1)
            return '0' + val;
        else
            return val;
    }

    "Но работает же"

    ElectricHeart, 04 Апреля 2014

    Комментарии (67)
  8. C++ / Говнокод #12243

    +12

    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
    #include <iostream>
    #include <functional>
     
    using namespace std;
     
    struct  T
    {
        int a;
        T(const T&):a(1){cout<<"copy_construct T"<<endl;}
        T():a(1){cout<<"construct T"<<endl;}
        ~T(){a=0;cout<<"destruct T"<<endl;}
        const T& operator=(const T&){cout<<"copy_ass T"<<endl;return *this;}    
    };
     
    struct M: public T{};
     
    void f(const T& fa)
    {
        cout<<"fa.a= "<<fa.a<<endl;    
    }
     
    int main() {
        f(std::cref(T()));
        cout<<endl;
        const T& b = T();
        cout<<"b.a= "<<b.a<<endl;
        cout<<endl;
        const T& a = std::cref(T());
        cout<<"a.a= "<<a.a<<endl;
        return 0;
    }

    http://ideone.com/BmHo9w
    Есть на этом ресурсе великий знаватель крестов и вот он меня уверял, что объект, на который ссылается ссылка - должен дожить до конца выхода ссылки из скоупа. Почему мы этого не наблюдаем? А знаватель? Ты меня прямо даже убедил, и тут такая подстава от тебя. a - не дожил до конца.

    LispGovno, 03 Декабря 2012

    Комментарии (67)
  9. C++ / Говнокод #12109

    +15

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    for(int y=0; y<height; ++y)
    {
         for(int x=0; x<width; ++x)
             b[y,x] = a[y,x];
    }

    LispGovno, 12 Ноября 2012

    Комментарии (67)
  10. C++ / Говнокод #11644

    +39

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    extern const TSafeFloat Pi;//Не использовать до входа в main!!! Возможно она ещё не инициализированна!!!
    //#define PI		3.14159265358979323846
    
    #ifndef M_PI
                             #define M_PI		3.14159265358979323846
    #endif

    Форматирование сохранено. Файл PiConsts.h

    HaskellGovno, 24 Августа 2012

    Комментарии (67)
  11. Си / Говнокод #11641

    +142

    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
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    90. 90
    91. 91
    92. 92
    93. 93
    94. 94
    95. 95
    96. 96
    97. 97
    98. 98
    99. 99
    main()
       {
       j=atol("776677"); c=0;
      gb=65500;  /*гран буф не>65500!*/
      gp=gb+65500;
       c=PA();
       vm = v_mod(0x0f00)&0x00ff;
       if((vm!=2) && (vm!=3) && (vm!=7))   v_mod(3);
       if(vm==7) v_m=MK_FP(0xB000,0); /* присвоить адр в-памяти */
       else   v_m=MK_FP(0xB800,0);
       if(c==0) {printf("Самопроверка программы неудачна."); dely(9);}
       gek=calloc(1000,sizeof(int));
       bufa=farcalloc(4000,sizeof(long));
       bfk=calloc(4000,sizeof(int));
       ok=calloc(800,sizeof(char));
       st=calloc(10,sizeof(char));
       bufv=calloc(4000,sizeof(char));
     if((gek==NULL)||(bufa==NULL)||(bfk==NULL)||(ok==NULL)||(st==NULL)||(bufv==NULL))
    	  {
      printf(" Неудачное выделение памяти для основных буферов.\n");
      printf(" Программа не выполняется.");
    	 dely(9); exit(1);   }
       for(x=0;x<4000;x++) {bufa[x]=0L;bfk[x]=0; /*занул буф адресов и кодов */
       if(x<10) st[x]=0x00; /*буф для выв чисел на экр*/
       if(x<26) urov[x]=1;
       if(x<20) {abn[x]=1; aba[x]=2L;}} /*мин адресa абс ном строк и нач загр буф*/
       if(x<128) B0[x]=0;
       ur=vv=avt=in=0; i=N=0; zap=0;x_=1;
       ifm=10;/*10,01,11,12,21 - 1:п/панель записей,0-инф п/панель,12,21-2 базы*/
     /*  vctp(3);*/
       mou(0);   kur(0);
      okn=0; /*сбр инд сохр-х окон*/
      v_mod(0);
       nok1=16;
      SET();   ch=pal[0];
      textbackground(BLACK);
       clrscr();
      okno(0,2,ch,ch);
      window(1,1,80,25);
      okno(16,2,ch,ch);
      nstr(1);
      baz=1;
      nfl="0.cry ";
      F_place("10.cry");
      kzo();
      prx=3; /*нейтраль*/
      for(vm=4000;vm<8000;vm++) v_m[vm]=0; vm=0;
      /*vm-далее кол-во стр загр буф*/
      ppan(0,0);
      form_kod(2);/*чт genko*/
       attr=pal[5];  vdl(a+1,y_,a+36,y_,0,0);    /*сох атр  бывш стр*/
       vctp(0);
      tit();
      if(zap!=0) nstr(2);
      ZA[0]='\0';
      za=strlen(MPR);
      strcat(ZA,MPR);if(za>3) strcat(ZA,"\\");  strcat(ZA,"save.com");
      za=0; if((access(ZA,0)!=-1))  za=1; /*ZA-путь savera*/
      /**************/
      for(;;)
          {
          mou(1);
           ch=get_char(1);
    	if((ch<48)||(ch>57))  /*кроме цифр*/
    	 if((ch!=0xfe)&&(ch>0x20)&&(f_kl==0)) {printf("\7"); ch=0;}
    	mou(2); mus(a); /*ориен мыши*/
    	if((ch==TAB)||(ch==RIGHT)||(ch==LEFT))
    	  tab();/*порядок не менять*/
    	if(ch==15) { ctrl(); tab();}
    	mus(a); mus(101);
    	if(ch==F7)   gl_poisk(0);
    	if(ch==AF7)  gl_poisk(1);
    	if(ch==F1) hlp();
    	if(ch==CTRL) ctrl();
    	if((ch==AF1)&&(Pp==1)) ctrl();
    	if((ch==AF2)&&(Pp==0)) ctrl();
    	if(ch==32) exr(0);
    	if(ch==AF3) exb();
    	if(ch==AF4) exr(1);
    	if(ch==UP)   { cm=0; up(1);}
    	if(ch==DOWN) { cm=0; down(1); }
    	if(ch==PGUP) { cm=0;scroll(0,0);}
    	if(ch==PGDN) { cm=0;scroll(1,0);}
    	if(ch==HOME) { cm=0;scroll(0,4000);}
    	if(ch==END)  { cm=0;scroll(1,4000);}
    	if(ch==F5)   kon(1);
    	if(zap==0) /*ес зп разреш*/
    	{
    	if(ch==INS)  { s=0;
        if((chkm(3)!=0)||(chkm(4)!=0)) {s=1;
     coo(0,0x4E,0xCF,"","Предельная длина файла!",
     "Разрешено только удаление!",""," Выход");}
        if((chkm(1)!=0)||(chkm(2)!=0)) {s=1;
     coo(0,0x4E,0xCF,"","Исчерпана длина буфера!",
     "Сохраните набранную информацию,","после чего можно продолжить.",
     " Выход");}
    	 if(vm==4000)
    {coo(0,0x7f,0x70,"Количество записей в списке достигло 4000.",
    "","В данном случае возможно только удаление",

    Это один знакомый слесарь ЭВМ писал прогу для создания/редактирования/просмотра самопальной древовидной БД, для своих нужд, с тем условием, что работать она должна была чуть ли не на i286, и грузилась не более 2х секунд. Недавно он обратился ко мне с просьбой перенести её под линь, но увидев это я решил что такое жить не должно, поэтому просто писал аналог с нуля, на плюсах, но справедливости ради, замечу что моя прога вышла чуть тормознее:).
    Полный код к сожалению не влез, вот он: http://ideone.com/3sLsa.
    P.S. Авторское форматирование сохранено.

    suc-daniil, 23 Августа 2012

    Комментарии (67)