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

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

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    Ent := 0.0;
      for I := Low(Freq) to High(Freq) do
        Ent := Ent + Freq[I];
      Ent := Ln(FileSize(Input)) / Ln(2) * Ent;
      for I := Low(Freq) to High(Freq) do
      begin
        if Freq[I] > 0 then
          Ent := Ent - Freq[I] * Ln(Freq[I]) / Ln(2);
      end;
      Ent := Ent / FileSize(Input);

    Скучно, девочки!

    Increment_Excrement, 23 Марта 2019

    Комментарии (66)
  3. Pascal / Говнокод #24872

    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
    procedure TMainForm.FormCreate(Sender: TObject);
    var
      s : String;
      reg : TRegistry;
    begin
      SetLength (s, Max_Path);
      SHGetSpecialFolderPath (0, PChar(s), CSIDL_COMMON_APPDATA, false);
      AppDataPath := s + '\Test\';
      ShowMessage (AppDATAPath);
    end;
    
    , где AppDataPath : string;
    Только вот в AppDataPath находиться только S, а должно быть s + '\Test\'
    Вопрос: Почему?
    Заранее благодарен
    
    
    
    Потому что нельзя передавать паскалевскую строку в виде PChar в функцию, которая будет её там модифицировать. Нужно делать так:
    
    Код:
    var
      s : array[ 0..MAX_PATH ] of Char;
      reg : TRegistry;
    begin
      s[ 0 ] := #0;
      SHGetSpecialFolderPath (0, s, CSIDL_COMMON_APPDATA, false);
      AppDataPath := s + '\Test\';
      ShowMessage (AppDATAPath);
    end;
    
    http://www.programmersforum.ru/showthread.php?t=84319

    @Потому что нельзя передавать паскалевскую строку в виде PChar в функцию, которая будет её там модифицировать.
    Ахуенно крутой спец по строкам.

    Кстати, https://primechaniya.ru/home/news/oktyabr-2018/v-tatarstane-18-podrostkov-otravilis-kitajskimi-duhami/

    BagorCtretora, 08 Октября 2018

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

    +3

    1. 001
    2. 002
    3. 003
    4. 004
    5. 005
    6. 006
    7. 007
    8. 008
    9. 009
    10. 010
    11. 011
    12. 012
    13. 013
    14. 014
    15. 015
    16. 016
    17. 017
    18. 018
    19. 019
    20. 020
    21. 021
    22. 022
    23. 023
    24. 024
    25. 025
    26. 026
    27. 027
    28. 028
    29. 029
    30. 030
    31. 031
    32. 032
    33. 033
    34. 034
    35. 035
    36. 036
    37. 037
    38. 038
    39. 039
    40. 040
    41. 041
    42. 042
    43. 043
    44. 044
    45. 045
    46. 046
    47. 047
    48. 048
    49. 049
    50. 050
    51. 051
    52. 052
    53. 053
    54. 054
    55. 055
    56. 056
    57. 057
    58. 058
    59. 059
    60. 060
    61. 061
    62. 062
    63. 063
    64. 064
    65. 065
    66. 066
    67. 067
    68. 068
    69. 069
    70. 070
    71. 071
    72. 072
    73. 073
    74. 074
    75. 075
    76. 076
    77. 077
    78. 078
    79. 079
    80. 080
    81. 081
    82. 082
    83. 083
    84. 084
    85. 085
    86. 086
    87. 087
    88. 088
    89. 089
    90. 090
    91. 091
    92. 092
    93. 093
    94. 094
    95. 095
    96. 096
    97. 097
    98. 098
    99. 099
    100. 100
    using namespace std;
    #include <typeinfo>
    #include <stdlib.h>
    #include <stdio.h>
    #include <string>
    #include <math.h>
    #include <stdarg.h>
    
    template <unsigned FRA,unsigned EXP>
    struct F {
        union{
            float     f;
            unsigned ui;
            unsigned ef : FRA+EXP;	    
            struct
            {
    	        unsigned f : FRA;
    	        unsigned e : EXP;
    	        unsigned s : 1;
            } s;
        };
        F (double x){f=x;}
        F operator =(const double x) { 
            f=x; return *this;
        }    
        
    #define NOOP ;
    #define  UN(OP,BODY, RET)   float    operator OP(	) { BODY; return RET;}
    #define BIN(OP,BODY, RET)   F    operator OP(F other	) { BODY; return RET;}
    #define BINF(OP,BODY,RET)   F    operator OP(const float other) { BODY; } BIN(OP,BODY,RET)
    #define CMP(OP)        bool operator OP(const F& other) 
    
        UN ( -  ,   s.s^=1   ,     (f)       )
        BIN( += , f+=other.f , (  *this  )   )
        BIN( +  , NOOP       , { f+other.f}   )
        BIN( -  ,++other.s.s , {*this+other} )
        BIN( *  ,   NOOP    ,   fmul(f,{other})        )
        BIN( /  , div(other), (  *this  ) )
        BINF(*=, ui=fmul(*this   ,{other}).ui, (  *this  )   )  
        BINF(/=, ui=fmul(*this,rcp(other)).ui, (  *this  )   )  
    
    
        CMP(==){
            return other.ui==ui;
        }    
    
        F out(string s) const{
            printf("> %s%f\n",s.c_str(),f);
        }
        F plus(F other)
        {
            f+=other.f;
            return *this;        
        }    
        
        F div(F other)
        {
            ui=fmul(rcp(other),{f}).ui;
            return *this;        
        }    
        F sqrt()
        {
            s.e-=127;
            ui>>=1; 
            s.f-=(s.f>>4);
            s.e+=127;        
            return *this;        
        }
        F pow(int n)
        {
            s.e-=127;
            ui*=n; 
            ef+=(ef>>4);
            ef-=(ef>>9);
            s.e+=127;
            return *this;
        }    
    
    private:    
        static F rcp(F f) {
            f.s.e=(~f.s.e-2);
            f.s.f=(~f.s.f-2);
            return f;
        }
        
        static F fmul(F r,F b)
        {
            r.s.s   ^= b.s.s;
            r.ef += ((r.s.f&b.s.f)>>4);
            r.ef += b.ef ;
            r.s.e+= 129;
            return r;
        }
    
     
    };
    
    using F32 = F<23,8>;
    
    static F32 of32(float x)

    Царь был прав. Во всём.
    Патамучто это плавающий питух, который априори говно. И чем вы быстрее это поймёте, чем будет лучше.

    В соответствии со своим пониманием сделал мммаксимально простую реализацию плавающих питухов произвольного размера.
    Строго на интах.


    Пример здесь:
    uhttps://ideone.com/dDrj7s

    3.14159265, 16 Мая 2018

    Комментарии (66)
  5. Куча / Говнокод #21074

    0

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    #!/bin/apple/huyapple
    
    #
    # Почему, блять, в эппловских push-уведомлениях установлено ограничение в 256 байт на одно сообщение, 
    # при этом мета-данные пакуются (хоть как-то), а полезная, блять, нагрузка - ни хуя?
    # Для полезной нагрузки, блять, используется JSON формат.
    #
    # Блять, либо ограничение снять, либо не JSON использовать. Заебали.

    goo.gl/4c2ntb

    bot, 02 Сентября 2016

    Комментарии (66)
  6. C++ / Говнокод #20095

    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
    //...
          /* See if this is something like X * C - X or vice versa or
    	 if the multiplication is written as a shift.  If so, we can
    	 distribute and make a new multiply, shift, or maybe just
    	 have X (if C is 2 in the example above).  But don't make
    	 something more expensive than we had before.  */
    
          if (SCALAR_INT_MODE_P (mode))
    	{
    	  rtx lhs = op0, rhs = op1;
    
    	  wide_int coeff0 = wi::one (GET_MODE_PRECISION (mode));
    	  wide_int coeff1 = wi::one (GET_MODE_PRECISION (mode));
    
    	  if (GET_CODE (lhs) == NEG)
    	    {
    	      coeff0 = wi::minus_one (GET_MODE_PRECISION (mode));
    	      lhs = XEXP (lhs, 0);
    	    }
    	  else if (GET_CODE (lhs) == MULT
    		   && CONST_SCALAR_INT_P (XEXP (lhs, 1)))
    	    {
    	      coeff0 = std::make_pair (XEXP (lhs, 1), mode);
    	      lhs = XEXP (lhs, 0);
    	    }
    	  else if (GET_CODE (lhs) == ASHIFT
    		   && CONST_INT_P (XEXP (lhs, 1))
                       && INTVAL (XEXP (lhs, 1)) >= 0
    		   && INTVAL (XEXP (lhs, 1)) < GET_MODE_PRECISION (mode))
    	    {
    	      coeff0 = wi::set_bit_in_zero (INTVAL (XEXP (lhs, 1)),
    					    GET_MODE_PRECISION (mode));
    	      lhs = XEXP (lhs, 0);
    	    }
    
    	  if (GET_CODE (rhs) == NEG)
    	    {
    	      coeff1 = wi::minus_one (GET_MODE_PRECISION (mode));
    	      rhs = XEXP (rhs, 0);
    	    }
    	  else if (GET_CODE (rhs) == MULT
    		   && CONST_INT_P (XEXP (rhs, 1)))
    	    {
    	      coeff1 = std::make_pair (XEXP (rhs, 1), mode);
    	      rhs = XEXP (rhs, 0);
    	    }
    	  else if (GET_CODE (rhs) == ASHIFT
    		   && CONST_INT_P (XEXP (rhs, 1))
    		   && INTVAL (XEXP (rhs, 1)) >= 0
    		   && INTVAL (XEXP (rhs, 1)) < GET_MODE_PRECISION (mode))
    	    {
    	      coeff1 = wi::set_bit_in_zero (INTVAL (XEXP (rhs, 1)),
    					    GET_MODE_PRECISION (mode));
    	      rhs = XEXP (rhs, 0);
    	    }
    
    	  if (rtx_equal_p (lhs, rhs))
    	    {
    	      rtx orig = gen_rtx_PLUS (mode, op0, op1);
    	      rtx coeff;
    	      bool speed = optimize_function_for_speed_p (cfun);
    
    	      coeff = immed_wide_int_const (coeff0 + coeff1, mode);
    
    	      tem = simplify_gen_binary (MULT, mode, lhs, coeff);
    	      return (set_src_cost (tem, mode, speed)
    		      <= set_src_cost (orig, mode, speed) ? tem : 0);
    	    }
    	}

    https://gcc.gnu.org/viewcvs/gcc/trunk/gcc/simplify-rtx.c?view=markup&pathrev=232689#l2062 здоровенная такая функция из недр GCC, в которой делаются оптимизации, это сродни символьным вычислениям вообще говоря
    https://godbolt.org/g/vcEqe7 но похоже эта хрень работает плохо, не смогло оно выявить тождественность умножения сдвигами и обычного умножения, сведя операции к return 1 в случае функции test1. Но я естественно находил и примеры кода, которые GCC смог успешно "редуцировать" своим оптимизатором, а clang тупил. Говно тут в том, что вместо того, чтобы впилить нормальную систему символьных вычислений, там нагородили какого-то ебучего говна... Хотя может быть я чего-то не понимаю в компиляторах. Надо будет дракона почитать

    j123123, 30 Мая 2016

    Комментарии (66)
  7. Python / Говнокод #17927

    −118

    1. 1
    name = name.replace(u'c', u'с') # this is magia

    kyzi007, 03 Апреля 2015

    Комментарии (66)
  8. Куча / Говнокод #17379

    +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
    19. 19
    20. 20
    21. 21
    *            *     ,MMM8&&&.            *
                      MMMM88&&&&&    .
                     MMMM88&&&&&&&
         *           MMM88&&&&&&&&
                     MMM88&&&&&&&&
                     'MMM88&&&&&&'
                       'MMM8&&&'      *    _
              |\___/|                      \\
             =) ^Y^ (=   |\_/|              ||    '
              \  ^  /    )a a '._.-""""-.  //
               )=*=(    =\T_= /    ~  ~  \//
              /     \     `"`\   ~   / ~  /
              |     |         |~   \ |  ~/
             /| | | |\         \  ~/- \ ~\
             \| | |_|/|        || |  // /`
      jgs_/\_//_// __//\_/\_/\_((_|\((_//\_/\_/\_
      |  |  |  | \_) |  |  |  |  |  |  |  |  |  |
      |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
      |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
      |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
      |  |  |  |  |  |  |  |  |  |  |  |  |  |  |

    katze, 27 Декабря 2014

    Комментарии (66)
  9. PHP / Говнокод #16857

    +157

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    /* Код невлазит, т.к. весит около 1MB и происходит 413 Request Entity Too Large .
    Читайте по ссылке - http://m.uploadedit.com/b041/1413367407745.txt
    Код универсален, включает в себя PHP, HTML, CSS, JS, SQL и, возможно, силу земли.
    Полностью работоспособен.
    Наслаждайтесь.
    */

    см. внутри

    afwbkbc, 15 Октября 2014

    Комментарии (66)
  10. 1C / Говнокод #16570

    −158

    1. 1
    2. 2
    3. 3
    4. 4
    Если Переменная1 <> 0 Тогда
    Иначе
       Переменная1 = 0;
    КонецЕсли;

    Пять минут пытался убедить нашу "программистку" с десятилетним стажем, что этот высер ничего не делает! Сошлись на том, что она "всё таки удалит его, но если появятся ошибки - она здесь не при чем"!
    Этот кусок я бы и не заметил, если бы не бросился в глаза пустой блок "Тогда" при использовании блока "Иначе"

    doom2good, 20 Августа 2014

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

    +136

    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
    public int GetModuleId(int userId)
    {
        return moduleIdGet(userId);
    }
    
    protected int moduleIdGet(int userId)
    {
        int moduleId;
        // calculate moduleId
        // ...
    
        return moduleId;
    }

    Дал открытый доступ, но в то же время как бы сохранил защищённый.

    wissenstein, 29 Января 2014

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