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

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

    +163

    1. 1
    substr_count(strtolower(php_uname()),'windows') ? ';' : ':')

    NetCat, такой NetCat. О существовании PATH_SEPARATOR даже и не знали.

    miraage, 19 Мая 2011

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

    +164

    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
    void Attr::setConvertedValue(std::string pValue)
    {
        /* ............. - BEGIN - Place the HTML code instead of the */
        /* plain values. This is needed since special XML characters      */
        /* might exist.                                                   */
        for(int i = 0; i < pValue.length(); i++)
        {
            int ascii = (int)pValue[i];
    
            if(!( (ascii == 32 ) ||
                  (ascii >= 48 && ascii <= 57) ||
                  (ascii >= 65 && ascii <= 90) ||
                  (ascii >= 97 && ascii <= 122) ) )
            {
                if( ascii < 0 )
                    ascii += 256;
    
                std::ostringstream stream;
                stream << ascii;
    
                std::string newString = stream.str();
                newString = "&#" + newString + ';';
    
                pValue.replace(i, 1, newString);
    
                i += newString.length() - 1;
            }
        }
        /* ............. - END - Place the HTML code instead of the */
        /* plain values. This is needed since special XML characters      */
        /* might exist.                                                   */
        mConvertedValue = pValue;
    }

    я стою на асфальте, ноги в лыжы абуты.

    мы эскайпим значения для ХМЛ.

    вы тут посмейтесь, а я пошел головой об стенку стучатся.

    ЗЫ пысано в Бразилии.

    Dummy00001, 11 Января 2011

    Комментарии (87)
  4. ActionScript / Говнокод #4221

    −160

    1. 1
    2. 2
    3. 3
    4. 4
    function midVal(X, Y)
    {
        return (Math.max(X, Y) - Math.min(X, Y)) / 2 + Math.min(X, Y);
    }

    Это среднее арифметическое один один чел так считает.
    Взято отсюда: http://www.gamedev.ru/flame/forum/?id=137879&page=4#m47
    Тема сама по себе весёлая.

    TarasB, 10 Сентября 2010

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

    0

    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
    const int sum(int a, int b){
        return a+b;
    }
    
    int a(int x)
    {
        const std::function<int(int)> sum4 = std::bind(sum,_1, 4);    
        return sum4(123);
    }
    
    int b(int x)
    {
        puts("bagor");    
        const std::function<int(int)> sum4 = std::bind(sum,_1, 4);    
        return sum4(123);
    }
    
    int c(int x)
    {
        const std::function<int(int)> sum4 = std::bind(sum,_1, 4);    
        puts("bagor");    
        return sum4(123);
    }
    
    // Функции a и b нормально инлайнятся. Ассемблерный выхлоп:
    
    sum(int, int):                               # @sum(int, int)
            lea     eax, [rdi + rsi]
            ret
    a(int):                                  # @a(int)
            mov     eax, 127
            ret
    b(int):                                  # @b(int)
            push    rax
            mov     edi, offset .L.str
            call    puts
            mov     eax, 127
            pop     rcx
            ret
    
    //А вот int c(int x)
    c(int):                                  # @c(int)
            push    rbx
            sub     rsp, 32
            mov     edi, 16
            call    operator new(unsigned long)
            mov     rbx, rax
            mov     qword ptr [rax], offset sum(int, int)
            mov     dword ptr [rax + 8], 4
            mov     qword ptr [rsp], rax
            mov     qword ptr [rsp + 24], offset std::_Function_handler<int (int), std::_Bind<int const (*(std::_Placeholder<1>, int))(int, int)> >::_M_invoke(std::_Any_data const&, int&&)
            mov     qword ptr [rsp + 16], offset std::_Function_handler<int (int), std::_Bind<int const (*(std::_Placeholder<1>, int))(int, int)> >::_M_manager(std::_Any_data&, std::_Any_data const&, std::_Manager_operation)
            mov     edi, offset .L.str
            call    puts
            mov     esi, dword ptr [rbx + 8]
            mov     edi, 123
            call    qword ptr [rbx]
            mov     ebx, eax
            mov     rax, qword ptr [rsp + 16]
            test    rax, rax
            je      .LBB3_3
            mov     rdi, rsp
            mov     rsi, rdi
            mov     edx, 3
            call    rax
    .LBB3_3:
            mov     eax, ebx
            add     rsp, 32
            pop     rbx
            ret
            mov     rdi, rax
            call    __clang_call_terminate
            mov     rbx, rax
            mov     rax, qword ptr [rsp + 16]
            test    rax, rax
            je      .LBB3_6
            mov     rdi, rsp
            mov     rsi, rdi
            mov     edx, 3
            call    rax
    .LBB3_6:
            mov     rdi, rbx
            call    _Unwind_Resume@PLT
            mov     rdi, rax
            call    __clang_call_terminate
    __clang_call_terminate:                 # @__clang_call_terminate
            push    rax
            call    __cxa_begin_catch
            call    std::terminate()
    std::_Function_handler<int (int), std::_Bind<int const (*(std::_Placeholder<1>, int))(int, int)> >::_M_invoke(std::_Any_data const&, int&&): # @std::_Function_handler<int (int), std::_Bind<int const (*(std::_Placeholder<1>, int))(int, int)> >::_M_invoke(std::_Any_data const&, int&&)
            mov     rax, qword ptr [rdi]
            mov     rcx, qword ptr [rax]
            mov     edi, dword ptr [rsi]
            mov     esi, dword ptr [rax + 8]
            jmp     rcx                             # TAILCALL
    std::_Function_handler<int (int), std::_Bind<int const (*(std::_Placeholder<1>, int))(int, int)> >::_M_manager(std::_Any_data&, std::_Any_data const&, std::_Manager_operation): # @std::_Function_handler<int (int), std::_Bind<int const (*(std::_Placeholder<1>, int))(int, int)> >::_M_manager(std::_Any_data&, std::_Any_data const&, std::_Manager_operation)

    Решил попробовать std::bind.

    https://godbolt.org/z/eW5eT5oj4

    3.14159265, 27 Августа 2021

    Комментарии (86)
  6. PHP / Говнокод #25293

    +3

    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
    <?php
    
    $b = array(
      0x0000 => 1095,
      0x5b9d => 1797,
      0x5fa9 => 516,
      0x6273 => 1677,
      0x6572 => 807,
      0x7fb9 => 1143,
      0x7fff => 2598,
    );
    
    foreach(preg_split('#(.{28})#', '123o770n100b234r570m701a888d799l220m966v460 439y833o982e', -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY) as $kiss) {
      $kiss = preg_split('#(\d+.)#', $kiss, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
      $bits = (intval($kiss[0] <= $kiss[1])     ) | (intval($kiss[1] <= $kiss[2]) << 1) | (intval($kiss[2] <= $kiss[3]) << 2) | (intval($kiss[3] <= $kiss[4]) << 3) | (intval($kiss[4] <= $kiss[5]) << 4)
              | (intval($kiss[0] <= $kiss[2]) << 5) | (intval($kiss[1] <= $kiss[3]) << 6) | (intval($kiss[2] <= $kiss[4]) << 7) | (intval($kiss[3] <= $kiss[5]) << 8)
              | (intval($kiss[0] <= $kiss[3]) << 9) | (intval($kiss[1] <= $kiss[4]) <<10) | (intval($kiss[2] <= $kiss[5]) <<11) 
              | (intval($kiss[0] <= $kiss[4]) <<12) | (intval($kiss[1] <= $kiss[5]) <<13)
              | (intval($kiss[0] <= $kiss[5]) <<14);
      $mask = gmp_init('539414e0a5380d4e02ab811ae054b81566055c2157014ec0531294c435310aac429d10a62c29832a60c558313a0c4c531306c4c152b054741518a5460d5182ac611b1a06b8852d414b4252d0b0b4298d0a5c42b31074c419b106654198a866215c283b0a0e528386a0e1543850ae222b881ad406b421ad032b444aca11d28466a119544650b194256429591152c454871522354889d2147484e5213b084e9813a4455912a6458991546454e11533054c895a30568ca1a32b08cad03634458d1a22668519a138684cca133604cd11176045d88175405d42175031d44475181d4631518e8463a8172a21ca8b12a2e0a8b9422e540bb110ec458b1174446b111a1c4688d1b0354c0d58435290d4343508ad421d5086ac05aa216a831aa0b8a82d4a0b560654a195056540e95033540cab0346c615318561614a5850d6142e850b1542c2b190ac60a', 16);
      $mask >>= $b[$bits];
      $i5 = gmp_intval(gmp_mod($mask,8));
      $mask >>= 3;
      $i4 = gmp_intval(gmp_mod($mask,8));
      $mask >>= 3;
      $i3 = gmp_intval(gmp_mod($mask,8));
      $mask >>= 3;
      $i2 = gmp_intval(gmp_mod($mask,8));
      $mask >>= 3;
      $i1 = gmp_intval(gmp_mod($mask,8));
      $mask >>= 3;
      $i0 = gmp_intval(gmp_mod($mask,8));
      $kiss = array($kiss[$i0], $kiss[$i1], $kiss[$i2], $kiss[$i3], $kiss[$i4], $kiss[$i5], $kiss[6]);
      print(preg_replace('#\d+#', '', implode($kiss)) . "\n");
    }

    Новогодней петух падал идею http://govnokod.ru/24496#comment450906
    к стати $b можно было оприделить снаруже от sort6 для быстроты

    HACTEHbKA, 07 Января 2019

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

    0

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    setInterval(() => {
        const [x, y] = win.getPosition()
        localStorage.setItem('x', x)
        localStorage.setItem('y', y)
    }, 3)

    s: https://github.com/JsusDev/JS.VPN-Client/blob/master/app/components/vpn/client/index.html

    Охуеть, блядь. Сраная обёртка над однострочным скриптом, написанная на сраном «Электроне», весит сраных 38 мегабайт и каждые три сраных миллисекунды гоняет туда-сюда байты. И это программисты? Это программисты? Говно какое-то, пидоры, блядь. Родина им дала скрипты — пиши, пиши ничего не весящий однострочник! Блядь, не хотим, хотим высирать говно. И даже эта обёртка на «Электроне», единственный смысл в которой — максимальная кроссплатформенность, намертво прибита к бинарникам «OpenVPN» версии 2.4.6. К сраным, блядь, виндовым бинарникам!

    Да, у меня бугурт от настолько лютого говна.

    gost, 04 Декабря 2018

    Комментарии (86)
  8. Си / Говнокод #24807

    +1

    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
    #include <stdio.h>
    #include <inttypes.h>
    
    static const uint32_t pow2[511] ={
    0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256,
    289, 324, 361, 400, 441, 484, 529, 576, 625, 676, 729, 784, 841, 900, 961, 1024, 1089, 1156,
    1225, 1296, 1369, 1444, 1521, 1600, 1681, 1764, 1849, 1936, 2025, 2116, 2209, 2304, 2401,
    2500, 2601, 2704, 2809, 2916, 3025, 3136, 3249, 3364, 3481, 3600, 3721, 3844, 3969, 4096,
    4225, 4356, 4489, 4624, 4761, 4900, 5041, 5184, 5329, 5476, 5625, 5776, 5929, 6084, 6241,
    6400, 6561, 6724, 6889, 7056, 7225, 7396, 7569, 7744, 7921, 8100, 8281, 8464, 8649, 8836,
    9025, 9216, 9409, 9604, 9801, 10000, 10201, 10404, 10609, 10816, 11025, 11236, 11449, 11664,
    11881, 12100, 12321, 12544, 12769, 12996, 13225, 13456, 13689, 13924, 14161, 14400, 14641,
    14884, 15129, 15376, 15625, 15876, 16129, 16384, 16641, 16900, 17161, 17424, 17689, 17956,
    18225, 18496, 18769, 19044, 19321, 19600, 19881, 20164, 20449, 20736, 21025, 21316, 21609,
    21904, 22201, 22500, 22801, 23104, 23409, 23716, 24025, 24336, 24649, 24964, 25281, 25600,
    25921, 26244, 26569, 26896, 27225, 27556, 27889, 28224, 28561, 28900, 29241, 29584, 29929,
    30276, 30625, 30976, 31329, 31684, 32041, 32400, 32761, 33124, 33489, 33856, 34225, 34596,
    34969, 35344, 35721, 36100, 36481, 36864, 37249, 37636, 38025, 38416, 38809, 39204, 39601,
    40000, 40401, 40804, 41209, 41616, 42025, 42436, 42849, 43264, 43681, 44100, 44521, 44944,
    45369, 45796, 46225, 46656, 47089, 47524, 47961, 48400, 48841, 49284, 49729, 50176, 50625,
    51076, 51529, 51984, 52441, 52900, 53361, 53824, 54289, 54756, 55225, 55696, 56169, 56644,
    57121, 57600, 58081, 58564, 59049, 59536, 60025, 60516, 61009, 61504, 62001, 62500, 63001,
    63504, 64009, 64516, 65025, 65536, 66049, 66564, 67081, 67600, 68121, 68644, 69169, 69696,
    70225, 70756, 71289, 71824, 72361, 72900, 73441, 73984, 74529, 75076, 75625, 76176, 76729,
    77284, 77841, 78400, 78961, 79524, 80089, 80656, 81225, 81796, 82369, 82944, 83521, 84100,
    84681, 85264, 85849, 86436, 87025, 87616, 88209, 88804, 89401, 90000, 90601, 91204, 91809,
    92416, 93025, 93636, 94249, 94864, 95481, 96100, 96721, 97344, 97969, 98596, 99225, 99856,
    100489, 101124, 101761, 102400, 103041, 103684, 104329, 104976, 105625, 106276, 106929,
    107584, 108241, 108900, 109561, 110224, 110889, 111556, 112225, 112896, 113569, 114244,
    114921, 115600, 116281, 116964, 117649, 118336, 119025, 119716, 120409, 121104, 121801,
    122500, 123201, 123904, 124609, 125316, 126025, 126736, 127449, 128164, 128881, 129600,
    130321, 131044, 131769, 132496, 133225, 133956, 134689, 135424, 136161, 136900, 137641,
    138384, 139129, 139876, 140625, 141376, 142129, 142884, 143641, 144400, 145161, 145924,
    146689, 147456, 148225, 148996, 149769, 150544, 151321, 152100, 152881, 153664, 154449,
    155236, 156025, 156816, 157609, 158404, 159201, 160000, 160801, 161604, 162409, 163216,
    164025, 164836, 165649, 166464, 167281, 168100, 168921, 169744, 170569, 171396, 172225,
    173056, 173889, 174724, 175561, 176400, 177241, 178084, 178929, 179776, 180625, 181476,
    182329, 183184, 184041, 184900, 185761, 186624, 187489, 188356, 189225, 190096, 190969,
    191844, 192721, 193600, 194481, 195364, 196249, 197136, 198025, 198916, 199809, 200704,
    201601, 202500, 203401, 204304, 205209, 206116, 207025, 207936, 208849, 209764, 210681,
    211600, 212521, 213444, 214369, 215296, 216225, 217156, 218089, 219024, 219961, 220900,
    221841, 222784, 223729, 224676, 225625, 226576, 227529, 228484, 229441, 230400, 231361,
    232324, 233289, 234256, 235225, 236196, 237169, 238144, 239121, 240100, 241081, 242064,
    243049, 244036, 245025, 246016, 247009, 248004, 249001, 250000, 251001, 252004, 253009,
    254016, 255025, 256036, 257049, 258064, 259081, 260100 };
    
    #define SQR(x) pow2[x]
    
    uint16_t mul8b(uint8_t a, uint8_t b)
    {
      return (SQR((uint16_t)a+(uint16_t)b) - (SQR(a) + SQR(b))) >> 1;
    }
    
    int main(void)
    {
      uint8_t a = 255, b = 255;
      printf("%" PRIu8 " * " "%"PRIu8 " = "  "%"PRIu16, a, b, mul8b(a, b));
      return 0;
    }

    Мегаинновационный алгоритм умножения двух чисел на основе таблицы поиска с предвычисленными квадратами.
    По формуле ab = ((a+b)^2 - (a^2+b^2))/2
    Можно упихать в какой-нибудь дохлый контроллер без инструкций умножения

    j123123, 24 Сентября 2018

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

    −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
    int abs(int x)
    {
    	int a = x;
    	if(x >= 0) 
    	{
    		return a;
    	} 
    	else if(x < 0) 
    	{
    		a = a^2;
    		a = sqrt(a);
    		return a;
    	}
    }

    Поиск абсолютного значения числа.

    DeScWD, 11 Февраля 2016

    Комментарии (86)
  10. Java / Говнокод #15629

    +74

    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
    OutputStream stream = openOutputStream();
    Throwable mainThrowable = null;
    
    try {
        // что-то делаем со stream
    } catch (Throwable t) {
        // сохраняем исключение
        mainThrowable = t;
        // и тут же выбрасываем его
        throw t;
    } finally {
         if (mainThrowable == null) {
             // основного исключения не было. Просто вызываем close()
             stream.close();
         }
         else {
             try {
                stream.close();
             } catch (Throwable unused) {
                 // игнорируем, так как есть основное исключение
                 // можно добавить лог исключения (по желанию)
             }
         }
    }

    КВА КВА ГЦ РЕШАЕТ ВСЕ ПРОБЛЕМЫ
    АВТОДЕСТРУКТОРЫ ЧТО ЭТО ТАКОЕ
    http://habrahabr.ru/post/178405/

    TarasB, 31 Марта 2014

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

    +3

    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
    #include <cstdlib>
    #include <iostream>
    #include <time.h>
    
    using namespace std;
    
    const int n=20;
    int mass[20];
    
    void massiv(int x[])
    {
    srand(time(NULL));
    for(int i=0;i<20;i++) mass[i]=rand()%100;
    return 0;
    }
    
    void vivod(int x[])
    {
    for(int i=0;i<20;i++) cout<<mas[i]<<"\n";
    return 0;
    }
    
    
    void sort (int x[])
    {
    int i,j,b;
    for(j=1;j<=n-1;j++)
    for(i=0;i<=n-1-j;i++)
    if (mass[i]>mass[i+1])
    {
    b=mass[i];
    mass[i]=mass[i+1];
    mass[i+1]=b;
    }
    }
    return 0;
    }
    
    int main(int argc, char *argv[])
    {
        zapolneniemassiva(mass[20]);
        pokaz(mass[20]);
    	sort(mass[20]);
    	variant3(mass[20]);
    	
        system("PAUSE");
        return EXIT_SUCCESS;
    }

    Одногруппник сделал лабу на C++, программа сортирует массив по возрастанию и выводит, ну, по крайней мере, должна.

    TBoolean, 28 Марта 2013

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