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

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

    +24

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    void sleep_in_qt_ms(unsigned millisec) {
        QMutex foo;
        foo.lock();
        foo.try_lock(millisec);
        foo.unlock();
    }

    sleep в Qt - что, серьезно, чтоли?

    особенно порадовало: Warning: Destroying a locked mutex may result in undefined behavior.
    действительно, накой нам деструкторы?

    defecate-plusplus, 29 Марта 2013

    Комментарии (73)
  3. PHP / Говнокод #12424

    +66

    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
    // генрация паролей
    function generatePassword($l = 8) {
    	function make_seed() {
    		list($usec, $sec) = explode(' ', microtime());
    		return (float) $sec + ((float) $usec * 100000);
    	}
    	$le = split('-', 'q-w-e-r-t-y-u-i-o-p-a-s-d-f-g-h-j-k-l-z-x-c-v-b-n-m-q-W-E-R-T-Y-U-I-O-P-A-S-D-F-G-H-J-K-L-Z-X-C-V-B-N-M-7-2-1-8-6-3-8-7-2-1-6-0-9-g-s-a-d-f-k-a-k-j-w-q-h-2-7-8-1-6-3-g-d-h-m-H-U-F-G-K-J-H-A-S-G-J-G');
    	$password = '';
    	while (strlen($password)<$l) {
    		srand(make_seed());
    		$rnd = rand(0, count($le)-1);
    		$password.=$le[$rnd];
    	}
    	return $password;
    }

    Крайне хардкорный генератор случайных паролей заданной длины. Особенно гениальна строчка №7. Всем говнокоду за мой счет!

    SunnyMagadan, 15 Января 2013

    Комментарии (73)
  4. C++ / Говнокод #8544

    +998

    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
    private static int[] p = {
            151,160,137,91,90,15,
            131,13,201,95,96,53,194,233,7,225,140,36,103,30,69,142,8,99,37,240,21,10,23,
            190, 6,148,247,120,234,75,0,26,197,62,94,252,219,203,117,35,11,32,57,177,33,
            88,237,149,56,87,174,20,125,136,171,168, 68,175,74,165,71,134,139,48,27,166,
            77,146,158,231,83,111,229,122,60,211,133,230,220,105,92,41,55,46,245,40,244,
            102,143,54, 65,25,63,161, 1,216,80,73,209,76,132,187,208, 89,18,169,200,196,
            135,130,116,188,159,86,164,100,109,198,173,186, 3,64,52,217,226,250,124,123,
            5,202,38,147,118,126,255,82,85,212,207,206,59,227,47,16,58,17,182,189,28,42,
            223,183,170,213,119,248,152, 2,44,154,163, 70,221,153,101,155,167, 43,172,9,
            129,22,39,253, 19,98,108,110,79,113,224,232,178,185, 112,104,218,246,97,228,
            251,34,242,193,238,210,144,12,191,179,162,241, 81,51,145,235,249,14,239,107,
            49,192,214, 31,181,199,106,157,184, 84,204,176,115,121,50,45,127, 4,150,254,
            138,236,205,93,222,114,67,29,24,72,243,141,128,195,78,66,215,61,156,180};

    Заполнение массива случайными числами от 0 до 360

    Torvald, 17 Ноября 2011

    Комментарии (73)
  5. ActionScript / Говнокод #8486

    −113

    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
    var _str = ""
    	var _a_=""
    	_a_ = KID_DANGER_pos.toString(16);	if (_a_.length < 2) { _str += "0" }; _str += _a_; _a_ = KID_DANGER_cnt.toString(16); if (_a_.length < 2) { _str += "0" };_str += _a_
    	_a_ = KID_EAT_pos.toString(16);	if (_a_.length < 2) { _str += "0" };_str += _a_;_a_ = KID_EAT_cnt.toString(16);	if (_a_.length < 2) { _str += "0" };_str += _a_
    	_a_ = KID_PLAY_pos.toString(16); if (_a_.length < 2) { _str += "0" }; _str += _a_; _a_ = KID_PLAY_cnt.toString(16); if (_a_.length < 2) { _str += "0" };_str += _a_
    	_a_ = KID_WASH_pos.toString(16); if (_a_.length < 2) { _str += "0" }; _str += _a_;	_a_ = KID_WASH_cnt.toString(16); if (_a_.length < 2) { _str += "0" };_str += _a_
    	_a_ = KID_SLEEP_pos.toString(16); if (_a_.length < 2) { _str += "0" }; _str += _a_; _a_ = KID_SLEEP_cnt.toString(16); if (_a_.length < 2) { _str += "0" };_str += _a_
    	_a_ = KID_EDU_pos.toString(16); if (_a_.length < 2) { _str += "0" }; _str += _a_; _a_ = KID_EDU_cnt.toString(16); if (_a_.length < 2) { _str += "0" };	_str += _a_
    	_a_ = KID_STREET_pos.toString(16); if (_a_.length < 2) { _str += "0" }; _str += _a_; _a_ = KID_STREET_cnt.toString(16); if (_a_.length < 2) { _str += "0" };	_str += _a_
    	_a_ = KID_CLEAN_pos.toString(16); if (_a_.length < 2) { _str += "0" }; _str += _a_;	_a_ = KID_CLEAN_cnt.toString(16);	if (_a_.length < 2) { _str += "0" };	_str += _a_
    	_a_ = KID_GARBAGE_pos.toString(16);	if (_a_.length < 2) { _str += "0" }; _str += _a_; _a_ = KID_GARBAGE_cnt.toString(16); if (_a_.length < 2) { _str += "0" };	_str += _a_
    	_a_ = KID_TOILET_pos.toString(16); if (_a_.length < 2) { _str += "0" }; _str += _a_; _a_ = KID_TOILET_cnt.toString(16); if (_a_.length < 2) { _str += "0" };	_str += _a_
    	_a_ = KID_HEALTH_pos.toString(16); if (_a_.length < 2) { _str += "0" };	_str += _a_; _a_ = KID_HEALTH_cnt.toString(16);	if (_a_.length < 2) { _str += "0" };	_str += _a_
    	_a_ = KAT_event_pos.toString(16); if (_a_.length < 2) { _str += "0" };	_str += _a_; _a_ = KAT_event_cnt.toString(16);	if (_a_.length < 2) { _str += "0" };	_str += _a_
    	_a_ = DOG_event_pos.toString(16); if (_a_.length < 2) { _str += "0" };	_str += _a_; _a_ = DOG_event_cnt.toString(16);	if (_a_.length < 2) { _str += "0" };	_str += _a_
    	_a_ = FISH_event_pos.toString(16);	if (_a_.length < 2) { _str += "0" }; _str += _a_; _a_ = FISH_event_cnt.toString(16); if (_a_.length < 2) { _str += "0" };	_str += _a_
    	_a_ = BIRD_event_pos.toString(16);	if (_a_.length < 2) { _str += "0" }; _str += _a_; _a_ = BIRD_event_cnt.toString(16);if (_a_.length <2) { _str+="0" };	_str += _a_

    Эмм, работа со строками...

    kyzi007, 11 Ноября 2011

    Комментарии (73)
  6. Куча / Говнокод #7746

    +146

    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
    я придумал отличную идею для нового языка программирования.
    это будут смешанные присваивания.
    можно будет писать например так:
    x <- y (тоже самое что и x = y)
    или
    x -> y ( y = x)
    также обмен значений:
    x <-> y
    паралельное присваивание (для обоих видов):
    a,b,c -> x,y,z (x = a,y =b, z =c)
    множественное присваивание:
    a -> b -> c ( b = a, c = a)
    a <- b <- c ( a = b, b = c)
    и их комбинации
    x, y, z <- a,b,c <- i,j,k <- 1,2,3 -> d,e,f
    правда круто?

    Последняя строчка кода как мне кажется будет пользоваться бешеной популярностью.
    Постоянно похожий код приходится писать.

    Fai, 02 Сентября 2011

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

    +67

    Адский пони

    Corpus edimus, sanguis bibumus!

    Lure Of Chaos, 14 Мая 2011

    Комментарии (73)
  8. JavaScript / Говнокод #4992

    +153

    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
    function checkTags(object, numberOfTags) {
        var tags = object.value.split(",");
        var k = tags.length;
        var tmp = new Array();
        for (var i = 0; i < k; ++i) {
            var temp = tags[i].replace(/(^\s+)|(\s+$)/g, '');
            temp = temp.replace(/[\s]{2,}/g, ' ');
            if (temp != '') { // отсеиваем пустые
                temp = temp.toLowerCase(); // переводим в нижний регистр
                // Первую букву в верхний регистр(захотелось мне так!!!)
                temp = temp.match(/(.{1})/g);
                temp[0] = temp[0].toUpperCase();
                temp = temp.join("");
                if (tmp.length > 0 && in_array(temp, tmp)) { // отсеиваем повторяющиеся
                    continue;
                }
                tmp.push(temp);
                if (tmp.length == numberOfTags) { // отсеиваем те что превышат лимит
                    break;
                }
            }
        }
        tags = tmp;
        $('entryTagsLeft').innerHTML = numberOfTags - tags.length;
        object.value = tags.join(', ');
    }

    Функция для проверки меток вводимых пользователем. Убираем лишние пробелы, переводить все символы в нижний регистр, переводит первую букву в верхний, удаляет повторы, отсеивает лишние метки(лимит на количество меток нужен так как они добавляются в цикле) в случае использования

    komprenda, 20 Декабря 2010

    Комментарии (73)
  9. Куча / Говнокод #28851

    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
    import std.stdio;
    
    interface Pethu {
        final void Say() {
            writeln("Hrueeee");
        }
    }
    
    void SayTwice(Pethu pethu) {
        pethu.Say();
        pethu.Say();
    }
    
    class PethuImpl : Pethu { }
    
    void main() {
        auto pethu = new PethuImpl();
        pethu.SayTwice();
    }

    Desktop, 19 Сентября 2023

    Комментарии (72)
  10. Куча / Говнокод #27379

    +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
    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
    (set-logic UF)
    ; https://smtlib.cs.uiowa.edu/logics.shtml
    ; UF for the extension allowing free sort and function symbols 
    
    (set-option :produce-proofs true)
    
    (declare-sort M_wff)
    
    
    ; AND2
    (declare-fun M_a2 (M_wff M_wff) M_wff)
    
    ; AND3
    (declare-fun M_a3 (M_wff M_wff M_wff) M_wff)
    
    
    
    ; (AND2 a b) <=> (AND2 b a)
    
    (assert 
      (forall ( (a M_wff) (b M_wff) )
        (=
          (M_a2 a b)
          (M_a2 b a)
        )
      )
    )
    
    
    
    ; (AND2 a a) <=> a
    
    (assert 
      (forall ( (a M_wff) )
        (=
          (M_a2 a a)
          a
        )
      )
    )
    
    
    
    ; (AND2 a (AND2 b c)) <=> (AND3 a b c)
    
    (assert 
      (forall ( (a M_wff) (b M_wff) (c M_wff) )
        (=
          (M_a2 a (M_a2 b c))
          (M_a3 a b c)
        )
      )
    )
    
    
    
    ; (AND3 a b c) <=> (AND3 b a c)
    
    (assert
      (forall ( (a M_wff) (b M_wff) (c M_wff) )
        (=
          (M_a3 a b c)
          (M_a3 b a c)
        )
      )
    )
    
    
    
    ; IMPL - implication
    (declare-fun M_impl (M_wff M_wff) M_wff)
    
    
    
    ; http://us.metamath.org/ileuni/ax-1.html
    ; Axiom Simp
    ; (IMPL a (IMPL b a)) <=> (AND2 a b)
    
    (assert
      (forall ( (a M_wff) (b M_wff) )
        (=
          (M_impl a (M_impl b a))
          (M_a2 a b)
        )
      )
    )
    
    ...

    Весь код не влазит.

    https://rise4fun.com/Z3/GnfIH
    https://paste.debian.net/hidden/38ef8493/ (запасная ссылка)

    Переписывал Metamath на язык из SMT солверов https://smtlib.cs.uiowa.edu/language.shtml
    Z3 даже умеет доказывать какую-то питушню там.

    j123123, 28 Апреля 2021

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

    +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
    int main()
    {
        using Human = NamedTuple<
            Field<"name", std::string>,
            Field<"age", int>
        >;
        using User = NamedTuple<
            Field<"login", std::string>,
            Field<"password", std::string>
        >;
    
        Human vasya{ "Vasya", 16 };
        vasya.get<"age">() = 17;
    
        User user{ "xXxBaCRHxXx", "p4ssword" };
    
        auto vasyaMerged = mergeNamedTuples(vasya, user);
    
        std::cout << vasyaMerged.get<"name">() << " is " << vasyaMerged.get<"age">() << " years old!" << std::endl;
        std::cout << "Login is " << vasyaMerged.get<"login">() << " and password is " << vasyaMerged.get<"password">() << std::endl;
    }

    Как похорошел C++ при C++20!

    https://wandbox.org/permlink/llpXuy7IOSugtxHo

    PolinaAksenova, 18 Апреля 2021

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