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

    В номинации:
    За время:
  2. Куча / Говнокод #18572

    −2

    1. 1
    https://toster.ru/q/216153

    Бугурт пыхарей/1с-ников

    3_14dar, 04 Августа 2015

    Комментарии (149)
  3. Python / Говнокод #17962

    −115

    1. 1
    print 1 < 2 == 2 > 1 in [1,2,3] < [2,3,4,5] != 1

    Данный кусочек кода ( взял на одном из сайтов с тестами) навел меня на мысль - а может быть люди говнокодят потому, что языки программирования позволяют это делать? Взглянув на него первая моя мысль была - что это за хрень, она не будет работать. Оказалось я был не прав.

    Zuzik, 08 Апреля 2015

    Комментарии (149)
  4. Pascal / Говнокод #12107

    +99

    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
    Procedure TForm1.CreateObjects(Column, Row: Integer); // Процедура создания кнопок (ячеек).
    Var
      i, j, iLeft, iTop, iRow : Integer; // Переменные, отвечающие за расположение ячеек на форме. (Кроме iRow, она содержит номер ячейки по горизонтали.)
      SpeedButton : array of TSpeedButton; // Собственно, сам массив с ячейками.
      cColumn : Char; // Номер ячейки по вертикали.
      iMine : ShortInt; // Дополнительная переменная кол-ва бомб на поле.
    BEGIN
    {Присваиваем начальные значения переменным. :7:}
      iLeft := 0; // Начальная позиция по горизонтали.
      iTop := 5; // Начальная позиция по вертикали.
      iRow := 1; // Номер ячейки по горизонтали.
      iMine := MineCount; // Кол-во мин на поле.
      cColumn := 'A'; // Номер ячейки по вертикали.
      SetLength(SpeedButton, Row+1); // Массив с ячейками.
    {------------------------------------------ :7:}
    
    {Создаём новые списки. :8:}
      FObjectList := TObjectList.Create; // Список с объектами.
      Form2.FMineList := TStringList.Create(); // Список с номерами мин на поле.
    {--------------------- :8:}
    
    {Главный цикл создания игрового поля :9:}
      For i := 1 to Column do // Запускаем цикл создания по вертикали.
       Begin
        For j:=1 to Row do // Теперь тоже самое по горизонтали.
         bEgin
           SpeedButton[j] := TSpeedButton.Create(Self); // Создаём очередную ячейку на поле.
           SpeedButton[j].Parent := GamePanel; // Этим параметром указываем, что ячейка принадлежит первой форме.
           SpeedButton[j].Top := iTop; // Задаём расположение ячейки по вертикали.
           SpeedButton[j].Name := cColumn + IntToStr(iRow); // Задаём имя ячейки.
           SpeedButton[j].Flat := True; // Используем св-во кнопок не отображаться на рисунке.
           SpeedButton[j].Font.Color := clBlue; // Делаем цвет текста синим.
           SpeedButton[j].Font.Style := [fsBold]; // Делаем шрифт жирным.
           SpeedButton[j].OnClick := SpeedButton1.OnClick; // Указываем, какая процедура будет вызываться при клике на ячейку.
           SpeedButton[j].OnMouseDown := SpeedButton1.OnMouseDown; // Указываем, какая процедура будет вызываться при нажатии на ячейку.
           SpeedButton[j].Left := iLeft+8; // Задаём расположение ячейки по горизонтали, смещая её на 8 пикселей вправо.
           {Устанавливаем бомбу в ячейку. :10:}
             If (iMine <> 0) and (SpeedButton[j].Name <> 'A1') then // Если кол-во бомб не превышено, то...
              beGin
               Randomize; // Генерируем список ПСЧ.
               SpeedButton[j].Tag := Random(2); // Случайным образом задаём, будет ли бомба находится в ячейке.
               If SpeedButton[j].Tag = 1 then
                begin
                 Form2.FMineList.Add(SpeedButton[j].Name); // Добавляем новую запись в массив бомб.
                 Dec(iMine); // Уменьшаем счетчик мин на единицу.
                end;
              enD;
           {----------------------------- :10:}
             FObjectList.Add(SpeedButton[j]);// Добавляем новую запись в массив ячеек.
             iLeft := iLeft + 24; //Увеличиваем расстояние между ячейками.
             If iRow = Row then iRow := 1 // Если номер следующей ячейки по горизонтали неправильный, то меняем его на 1.
              Else Inc(iRow); // Иначе увеличиваем номер.
         eNd;
        cColumn := Char(Ord(cColumn) + 1); // Увеличиваем номер ячейки по вертикали.
        iTop := iTop + 24; // Увеличиваем положение ячейки по вертикали.
        iLeft := 0; // Обнуляем позицию ячейки по горизонтали.
       End;
    {----------------------------------- :9:}
    
      ImageList1.GetBitmap(0, (FindComponent('A1') as TSpeedButton).Glyph); // Загружаем спрайт в первую ячейку.
      Form2.FMineList.SaveToFile('OUTPUT.TXT'); // Сохраняем расположение мин в файл.
      MineCountLabel.Caption := IntToStr(Form2.FMineList.Count); // Показываем колво мин на поле.
    END;
    
    Function TForm1.CheckMove(X,Y : ShortString): Boolean; // Функция проверки валидности ячейки. Она должна находится рядом с текущей.
    Var
     iXod, iAlf : Integer; // Вспомогательные переменные.
    BEGIN
     result := false; // Презумпция вины :)
     iXod := Abs(StrToInt(Y) - StrToInt(dPos.yInt)); // Получаем расстояние до текущей ячейки по горизонтали.
     iAlf := Abs(Ord(dPos.xChr) - Ord(X[1])); // Получаем расстояние до текущей ячейки по вертикали.
     If ((iXod <= 1) and (iAlf <= 1)) and ((iXod <> 0) or (iAlf <> 0)) then result := true; // И если оно не больше одного, то разрешаем ход.
    END;
    
    Procedure TForm1.SpeedButton1Click(Sender: TObject); // Главная процедура нажатия на кнопку(ячейку).
    Var
      i : Integer; // Счётчик цикла.
      cObject : TSpeedButton; // Сам объект.
      Str, j : String; // Вспомогательная переменная имени ячейки.
      Count : Integer; // Вспомогательная переменная. (стр. 160)
    BEGIN
    {Подготавливаем переменные :1:}
      cObject := TSpeedButton(Sender); // Получаем ячейку, на которую кликнули.
      Str := cObject.Name; // Присваиваем вспомогательной переменной имя задействованной ячейки.
      dClick.xAlf := Str[1]; // Присваиваем переменной первый символ задействованной ячейки по вертикали.
      dClick.yFlt := Copy(Str, 2, Length(Str)); // Получаем номер ячейки по горизонтали.
    {------------------------- :1:}
    ...

    По просьбам желающих. Код некогда созданной мною игрушки Сапёр. Отдельный прикол, это как потом все эти кнопки удаляются.

    Govnocoder#0xFF, 12 Ноября 2012

    Комментарии (149)
  5. Java / Говнокод #7662

    +87

    1. 1
    return (o1.isRecomend()? "true":"false").compareTo(o2.isRecomend() ? "true" : "false");

    elfenit, 26 Августа 2011

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

    0

    1. 1
    Mi sidim v servernoy!

    Vse kto nas chitaet! Mi sidim v servernoy, v zaperty, mobillnyi ne beret! Pozovonite na ohrany po telefony на okrany 762-23-96 i skagite chtobi nas vypustili!

    3vservernoy, 19 Ноября 2020

    Комментарии (148)
  7. Си / Говнокод #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)
  8. Куча / Говнокод #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)
  9. Си / Говнокод #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)
  10. 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)
  11. 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)