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

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

    +4

    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
    #include <stdio.h>
    #include <inttypes.h>
    #include <stddef.h>
    
    void printuint64(const uint64_t state);
    uint64_t game_of_life8x8(const uint64_t old);
    uint8_t getbit(uint64_t in, uint8_t y, uint8_t x);
    
    uint8_t getbit(uint64_t in, uint8_t y, uint8_t x)
    {
      return !!((in) & (1ULL << ((y&0b111) + (x&0b111)*8)) );
    }
    
    uint64_t setbit(uint8_t y, uint8_t x, uint8_t bit)
    {
      if (bit)
      {
        return 1ULL << ((y&0b111) + (x&0b111)*8);
      }
      return 0;
    }
    
    uint64_t game_of_life8x8(const uint64_t old)
    {
      uint64_t new_state = 0;
      #define GETBIT(y,x,val) getbit(val, y, x)
      #define SETBIT(y,x,bit) setbit(y,x,bit)
      
      #define SUMAROUND(y,x,val) ( \
        GETBIT(y+1,x,val) + GETBIT(y-1,x,val) \
      + GETBIT(y,x+1,val) + GETBIT(y,x-1,val) \
      + GETBIT(y+1,x+1,val) + GETBIT(y+1,x-1,val) \
      + GETBIT(y-1,x+1,val) + GETBIT(y-1,x-1,val) \
      )
    
      #define CELLSTATE(y,x,val) \
      (GETBIT(y,x,old) == 1 ? \
        ( ((SUMAROUND(y,x,val) == 2 ) || ( SUMAROUND(y,x,val) == 3 )) ? 1 : 0) \
        : \
        ( ( SUMAROUND(y,x,val) == 3 ) ? 1 : 0 ) \
      )
    
      #define SETCELL_SH(y,x,val) SETBIT(y,x,CELLSTATE(y,x,val))
    
      #define FILL_LINE(y) \
        SETCELL_SH(y,7,old) | SETCELL_SH(y,6,old) | SETCELL_SH(y,5,old) | \
        SETCELL_SH(y,4,old) | SETCELL_SH(y,3,old) | SETCELL_SH(y,2,old) | \
        SETCELL_SH(y,1,old) | SETCELL_SH(y,0,old)
    
      new_state = FILL_LINE(7) | FILL_LINE(6) | FILL_LINE(5)
      |  FILL_LINE(4) | FILL_LINE(3) | FILL_LINE(2)
      |  FILL_LINE(1) | FILL_LINE(0);
    
      return new_state;
    }
    
    void printuint64(const uint64_t state)
    {
      for (size_t i = 7; i != SIZE_MAX; i--)
      {
        for (size_t j = 7; j != SIZE_MAX; j--)
        {
          printf("%u", !!((state >> (j+i*8)) & 1) );
        }
        printf("\n");
      }
    }
    
    int main(void)
    {
      // Glider
      uint64_t state =
      (( 0b01000000ULL ) << 8*7 ) |
      (( 0b00100000ULL ) << 8*6 ) |
      (( 0b11100000ULL ) << 8*5 ) |
      (( 0b00000000ULL ) << 8*4 ) |
      (( 0b00000000ULL ) << 8*3 ) |
      (( 0b00000000ULL ) << 8*2 ) |
      (( 0b00000000ULL ) << 8*1 ) |
      (( 0b00000000ULL ) << 8*0 );
    
      
      for (size_t i = 0; i < 50; i++)
      {
        printuint64(state);
        state = game_of_life8x8(state);
        printf("\n");
      }
      return 0;
    }

    Conway's game of life внутри uint64_t (8 на 8) с периодическими граничными условиями.

    j123123, 09 Декабря 2018

    Комментарии (148)
  3. Куча / Говнокод #16028

    +127

    1. 1
    2. 2
    3. 3
    4. 4
    <local name="jhgjkgdfghd" />
    <loadfile property="jhgjkgdfgh" srcfile="@{filepath}" failonerror="false">
    	...
    </loadfile>

    Я очень долго втыкал, почему один из овер 9000 Ant-скриптов валится....

    kostoprav, 21 Мая 2014

    Комментарии (148)
  4. Си / Говнокод #12887

    +138

    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
    typedef struct {
       UInt8 byte0;
       UInt8 byte1;
       UInt8 byte2;
       UInt8 byte3;
       UInt8 byte4;
       UInt8 byte5;
       UInt8 byte6;
       UInt8 byte7;
       UInt8 byte8;
       UInt8 byte9;
       UInt8 byte10;
       UInt8 byte11;
       UInt8 byte12;
       UInt8 byte13;
       UInt8 byte14;
       UInt8 byte15;
    } CFUUIDBytes;

    http://developer.apple.com/library/ios/documentation/CoreFoundation/Reference/CFUUIDRef/Reference/reference.html
    Nuff said.

    byss, 12 Апреля 2013

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

    +152

    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
    //сглаживание ланшафта
            for(int i=0;i!=xsize;i++)
            {
                for(int j=0;j!=ysize;j++)
                {
                    //для левого верхнего угла
                    if(i==0&&j==0)
                    {
                        int* arr = new int[2] // -_- where is ";"?
                        arr[0] = val[i][j++]; // ???
                        arr[1] = val[i++][j]; // 0_0
                        arr[2] = val[i++][j++]; // ???????
                        val[i][j] = getMiddle(arr);
                        delete[] arr;
    
                    };
                    //lot's of code...
                    //govnocode, govnocode, govnocode...
                    //...
              }
        }

    Фрагмент из генератора ландшафта написанного другом. Коментарии на англе мои.

    HiTECNOLOGYs, 09 Июля 2011

    Комментарии (148)
  6. Pascal / Говнокод #6585

    +117

    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
    program Project1;
    {$APPTYPE CONSOLE}
    uses
      SysUtils;
    Var
      a,b : Integer;
      c : Extended;
    BEGIN
     readln(a,b);
    TRY
     c := sqrt(a-b);
     WriteLn('A > B');
    EXCEPT
     WriteLn('A < B');
    END;
     ReadLn;
    END.

    Дело было вечером, делать было нечего, решил just for education порешать пару задач по программированию. Залез значит в Зултрк, ищу. На глаза сразу попалась небольшая книжица с названием "128 Задач по началам программирования." В.В Пупырышева. Скачал, начал решать. И вот какая задачка мне попалась:
    "II-15*. Максимум из двух
    Напишите программу, которая запрашивает джва числа и сообщает, какое из них больше другого."

    Вроде бы ничего сложного, но ВНЕЗАПНО у задачи обнаружилось примечание: "Эта задача должна быть решена без использования ветвления." Первая мысль, пришедшая в голову, была использовать функции, но ведь и они подразумевали ветвление. Так что начался мозговой штурм. После получаса раздумий, высралось ЭТО. В конце, посмотрев в ответы, я просто охренел. Спойлер: "Эта задача представляет собой подготовку к следующей ступени (задачи с ветвлением). Но решить её можно и без использования ветвлений, если придумать две формулы для вычилсения максимума и минимума из двух чисел. Тогда если обозначить исходные числа как Х и Y, а упомянутые формулы - как MAX(x,y) и MIN(x,y) соответственно, то для получения правильного ответа достаточно будет вывести строку типа: "Число-", MAX(x,y), "-не меньше числа -", MIN(x,y)." После этого я книгу с компа удалил, не помещая в корзину.

    Govnocoder#0xFF, 07 Мая 2011

    Комментарии (148)
  7. Куча / Говнокод #17668

    +126

    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
    // На самом деле это пока только псевдокод. Real code will be on C/C++
    //Lock-free non blocking and anatomic operation only if IP was changed 
    // IN SHARED MEMORY
    non_atomic_in_shmem bad_IP_flag_non_atomic_in_shmem[64][16]; // in real code it will be uint64_t array[16] and bits operations with it
    some_ip_class IPs_non_atomic_in_shmem[64][16]                   //  
    std::atomic<uint64_t> version_holder_atomic_in_shmem[64][16];   // it is debatable "whether to do it the Atomic" but for reinsurance 
    
    // IN WRITER PROCESS
    void worker_reassign_IP_by_num(new_IP, back_end_server_ID, num)
     if  bad_IP_flag_non_atomic_in_shmem[back_end_server_ID][num]   // in real code this check will be not here but will have same sense
        version_holder_atomic_in_shmem[back_end_server_ID][num] ++ //it is increment of atomic var version and version become NOT even
        __sync_synchronize(); //TODO may be we can use something better here ?
        IPs_non_atomic_in_shmem[back_end_server_ID][num] = new_IP   //it  copy assignment
        __sync_synchronize();  //TODO may be we can use something better here ?
        version_holder_atomic_in_shmem[back_end_server_ID][num] ++ //it is increment of atomic var version and version become even
        __sync_synchronize();  //TODO may be we can use something better here ?
        bad_IP_flag_non_atomic_in_shmem[back_end_server_ID][num] = 0
    
    // IN READER PROCESS
    some_ip_class get_valid_ip_by_num(back_end_server_ID,num){
    //TODO  version_holder is atomic for now, may we do it non atomic? I think YES. Are any arguments in opposites?
    // Instead of atomic can we possible use volatile?
        uint64_t version_before = version_holder_atomic_in_shmem[back_end_server_ID][num] //it is atomic copy assignment
        //if (version_befor & 1)    // is not even  it will work too instead of checking flags
        // but checking flags it is less expensive operation than checking version because the version var is atomic 
         if  bad_IP_flag_non_atomic_in_shmem  //
                return 0;
         
        some_ip_class ip = IPs_non_atomic_in_shmem[back_end_server_ID][num]     
        uint64_t version_after = version_holder_atomic_in_shmem[back_end_server_ID][num] // it is atomic copy assignment
    
        if  version_before != version_after  // versions is not sames
                // we may add extra check of version evenest but it will cost us 1 slow atomic operation and excessively
    //OR  (version_after & 1) //or versions is not even ip is not correct
                return 0    
        return ip
    }
    some_ip_class get_valid_ip(back_end_server_ID)
        while(time_not_expaired) {
            for (n=0; n<16; n++){
                   some_ip_class ip = get_valid_ip_by_num(back_end_server_ID, n)
                   if ip 
                           return ip
            }
         //"it will never happened" "if it happened and time expired do something but it is problems on the back end servers site"
        //”it is similar situation with situation when back end server just down ”     
        }
        return 0 // or some server_down_ip ;)
    
    some_ip_class check_or_get_new_ip( curent_ip, back_end_server_ID,  num)
        if NOT bad_IP_flag_non_atomic_in_shmem
                    if current_ip == shmem_array_of_IP_non_atomic[back_end_server_ID][num] // maybe need copy but I think it's not necessary
                return current_ip

    Задача: есть reader(ы) Это процессы 20 - 30 -64, которые обращаются к web-серверу. У web-сервера может быть несколько ip (не больше 16). Переодически (1 раз в ~30 секунд) пара (1-2) IP может отвалиться и вместо них может появится пара 1-2 новых. reader обнаружив bad IP выставляет флаг bad_IP_flag. Writer (только 1 единственный процесс не reader) Переодически (1 раз в ~1 сек) проверяет флаг, увидев bad_IP_flag запускает DNS-lookup который длиться примерно (30mks - 1s). Обновляет массив ip Readers при попытке соединиться проверяют не стал ли IP плохим если стал пробуют другой из массива Но суть не в этом Суть в том как безопасно работать с shared memory? Где что не так в предложенной задумке?

    apgurman, 20 Февраля 2015

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

    +143

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    int n;
        cin >> n;
        int nums[n];
        for (int i = 0; i < n; i++)
            nums[i] = pow(i + 1, 2);

    Немного эзотерики.
    nums[4] = 24

    DesmondHume, 28 Января 2015

    Комментарии (147)
  9. Objective C / Говнокод #16219

    −410

    1. 1
    http://www.macdigger.ru/wp-content/uploads/2014/06/jailbrea-iOS-7-1-1-3.jpg

    IOS 7 и выбор даты. Заставить бы автора выбрать свою дату рождения в этом боксе...

    Сорри за передачу по ссылке.

    bormand, 24 Июня 2014

    Комментарии (147)
  10. Pascal / Говнокод #12472

    +98

    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
    Сижу такой набираю код
    
    program Project6;
    
    {$APPTYPE CONSOLE}
    var i,j: integer;
    
    begin
      repeat
        readln(j);
        i := 0;
        if (j=0) then
          i := 1
        else
          break;
        Writeln(i);
      until false;
    end.
    [Hint] : Value assigned to 'i' never used
    
    Ну ладно, похер, уберу
    
    program Project6;
    
    {$APPTYPE CONSOLE}
    var i,j: integer;
    
    begin
      repeat
        readln(j);
       // i := 0;
        if (j=0) then
          i := 1
        else
          break;
        Writeln(i);
      until false;
    end.
    [Warning] : Variable 'i' might not have been initialized
    
                                                                                    
                                                                                    
                                                                                    
                                                                                    
                                 _________________                                  
                     g@@@@@44444*********9444@@@@@@@@@@@Mggg__                      
                   g@M"         _an**"""""""**Vw=G______"%%@@@@@gg_                 
                 ,@@`        a^"  __a=~v-vvv~~,___         _____`"*@gg_             
                a@@       _M" _m*"` _______     `""""""""""`    "   "9@g_           
                @@      a" ,m"_ar*"'`     -,         ,amv****-~,       9@g          
               @@        .* u"              C         ,~        "\       @          
              d@           '    __gg____              `                  @y         
             g@             ,g@@@@@@@@4@@gg_          C   ______         9@g        
           g@@.>~.     __  a@""@@@@@@__  "9@g         ,g@@@@**4@@_        "@g_      
         g@"$-*"""     *Y, @@@@*""**4@@@g__$@C     ggg@@@@@@@@@@*" "'" ""Mg`8@g     
       g@",`  ,g@@@@@@@g_       _g@     ""@M"      `"@@"                *n_"C"@@    
      g@'    p@"    ,`"@@@ggggg@@"                   8]      ,_  _gM@@@@g ' 'C8@    
      @@    j@     8@_    `"""'                      8@g_    3@g@@@`,  `"    ][@    
      @L    8@  _g@@@@@gg_              _gMMy         "9@g_    `""' 8L       j8@    
      @k    3@ d@@@@   "@@@gg_   *""""" @"``___         '@@g_       @@C  n"  Q@     
      "@C $  9k    @@_    "8@@@@gg_     @g_fM4@@M      g@""" "n.   a@@@  _m*3@"     
       "@g N,      9@@gg_  8@ `""9@@@gg__"         8gg@M        _g@@@d@k   a@%      
        "@@g_'      "@@@@@@@@g_     `"8@@@@ggg____  ""`   ___gg@@@@ 8@@@   @@       
          "@g_       '@g `"@@@@gg__   @L  `"""4@@@@@@@@@@@@@@@@"  @C @@@  3@        
            9@_       `@g  3@"9@@@@@@g@        [@     @@     4@y  @kg@@@  [@        
             9@         8@gd@   '"9@@@@@@@gggggd@gggggd@gggggg@W@@@@@@@@  [@        
              8g         "@@g        @""9@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@F  [@        
               @g          "@@g_    d@     '""@@@@@@@@@@@@@@@@@@@@@@@$@   3@        
               `@g_          "@@@g_j@'        @C  ``"3@@"""8@""j@'j@g@@   3@        
                 9@g_ ~__ ~._  `"@@@@g_       @C     8@   g@^ p@^ "@@M     @C       
                   "@@g "9m_ "Nq_  "*@@@@ggggg@______@____@@gg@@@@@M"      @L       
                     "9@@g_`"Mm_`"Nq_   """"*4@@@@@@@@@@M@@4*"""'          8k       
                        "9@@g_ ""Mm_"*w__       ~~~~ aaa~~        _/       $@       
                           `"@@gg_  "*WG_"*w~.____          ___am*"    /   [@       
                               "*@@gg    `"*-~<.__         `       __M"    3@       
                                   "9@gg_         `""'** ------**""`       d@       
                                      `"@@ggggg__                        ,d@        
                                          ""9@@@@@gg__                __g@"         
                                                 `""*4@@@@MggggggggM@@@@"           
                                                         `""""""""""'

    TarasB, 24 Января 2013

    Комментарии (147)
  11. C++ / Говнокод #2387

    +922.2

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    __declspec(noreturn) int FastAdd(const int a, const int b)
    {
      __asm mov eax, a;
      __asm mov ebx, b;
      __asm add eax, ebx;
    };

    Встречаеться множество подобных функций в одном С++ проекте, который в данный момент разгребаю. Хочеться что-нибудь сказать автору. Например: "на XYZ"?

    Говногость, 08 Января 2010

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