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

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

    +18

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    template <class TBitMap, int MMCROffset>
    class TControllerMemoryMappedRegister: public TBaseControllerMemoryMappedRegister<MMCROffset>
    {
    public:
    	static void set(TBitMap::E Bit) { setBit(Bit); }
    	static void reset(TBitMap::E Bit) { resetBit(Bit); }
    };

    Говногость, 29 Октября 2012

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

    +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
    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
    private static T GetElementValue<T>(this XmlElement elm, string elementName, T defaultValue = default(T), bool throwIfError = false, bool throwIfMissing = false)
    			where T : IConvertible
    {
    	string val = GetElementValue(elm, elementName);
    	if (string.IsNullOrEmpty(val) == false)
    	{
    		if (typeof(T) == typeof(string))
    		{
    			return (T)(object)val;
    		}
    
    		if (typeof(T) == typeof(bool))
    		{
    			return (T)(object)(val == "1");
    		}
    
    		try
    		{
    			if (typeof(T) == typeof(DateTime))
    			{
    				return (T)(object)DateTime.Parse(val, System.Globalization.CultureInfo.InvariantCulture); ;
    			}
    
    
    			return (T)Convert.ChangeType(val, typeof(T), CultureInfo.InvariantCulture);
    		}
    		catch (Exception exc)
    		{
    			if (throwIfError)
    				throw exc;
    		}
    	}
    	if (throwIfMissing)
    		throw new ArgumentNullException("The parameter '" + elementName + "' is missing");
    
    	return defaultValue;
    }

    Используем Generics по-фэншую!

    Eugene, 05 Октября 2012

    Комментарии (32)
  4. Куча / Говнокод #11755

    +125

    1. 1
    2. 2
    3. 3
    4. 4
    #include <beer>
    #include <autopilot>
    
    // C праздничком, говнокодеры

    istem, 12 Сентября 2012

    Комментарии (32)
  5. JavaScript / Говнокод #11734

    +160

    1. 1
    2. 2
    3. 3
    4. 4
    if(h&&c-L<0)return y^=8,G--,L;
    
    // Toledo просрал оптимизацию на 2 байта ;)
    if(h&&c<L)return y^=8,G--,L;

    В общем-то этот пост не про говнокод, а про обещанную попытку привести в понятный вид шахматы,
    упомянутые в http://govnokod.ru/11704.

    https://github.com/bormand/nanochess
    Читаем, играем, обсираемкомментируем...

    bormand, 09 Сентября 2012

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

    +70

    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
    97. 97
    <?php
    $nodata = 'nodata';
    $A60    = doubleval(@$HTTP_POST_VARS['A60']);
    $B60    = doubleval(@$HTTP_POST_VARS['B60']);
    $C60    = doubleval(@$HTTP_POST_VARS['C60']);
    $D60    = doubleval(@$HTTP_POST_VARS['D60']);
    $F60    = doubleval(@$HTTP_POST_VARS['F60']);
    $G60    = doubleval(@$HTTP_POST_VARS['G60']);
    $H60    = doubleval(@$HTTP_POST_VARS['H60']);
    $I60    = doubleval(@$HTTP_POST_VARS['I60']);
    $J60    = doubleval(@$HTTP_POST_VARS['J60']);
    $K60    = doubleval(@$HTTP_POST_VARS['K60']);
    $L60    = doubleval(@$HTTP_POST_VARS['L60']);
    $M60    = doubleval(@$HTTP_POST_VARS['M60']);
    echo $A60;
    if (($A60 < 0) || ($B60 < 0) || ($C60 < 0) || ($D60 < 0) || ($F60 < 0) || ($G60 < 0) || ($H60 < 0) || ($I60 < 0) || ($J60 < 0) || ($K60 < 0) || ($L60 < 0) || ($M60 < 0)) {
        readfile("cerror.html"); exit; }
    if (($A60 == 0) && ($B60 == 0) && ($C60 == 0) && ($D60 == 0) && ($F60 == 0) && ($G60 == 0) && ($H60 == 0) && ($I60 == 0) && ($J60 == 0) && ($K60 == 0) && ($L60 == 0) && ($M60 == 0)) {
      readfile("cerror.html"); exit;}
    $D1  = @($A60);
    $A2  = @(405.2);
    $B2  = @((0.9 + 0.8) / 2);
    $C2  = @(8);
    $D2  = @($A60 / 3);
    $E2  = @(0.00000012);
    $F2  = @(exp(-1.60978 + 0.021845 * ($A2 / exp(3 * $B2)) - 0.000186 * pow($A2 / exp(3 * $B2), 2) + 0.0000011 * pow($A2 / exp(3 * $B2), 3)) * exp($B2 * (0.674 + 0.2 * $B2 + 0.007577 * ($A2 / exp(3 * $B2)) + 0.0084248753 * ($A2 / exp(3 * $B2)) * $B2 + 0.0000224434 * pow($A2 / exp(3 * $B2), 2))) * $E2 * $D2);
    $I2  = @(0.37);
    $J2  = @(0.24);
    $K2  = @(0.22);
    $A3  = @(368.7);
    $B3  = @((0.9 + 0.8) / 2);
    $C3  = @(20);
    $D3  = @($A60 / 3);
    $E3  = @(0.000000013);
    $F3  = @(exp(-1.60978 + 0.021845 * ($A3 / exp(2.5 * $B3)) - 0.000186 * pow($A3 / exp(2.5 * $B3), 2) + 0.0000011 * pow($A3 / exp(2.5 * $B3), 3)) * exp($B3 * (0.674 + 0.2 * $B3 + 0.007577 * ($A3 / exp(2.5 * $B3)) + 0.0084248753 * ($A3 / exp(2.5 * $B3)) * $B3 + 0.0000224434 * pow($A3 / exp(2.5 * $B3), 2))) * $E3 * $D3);
    $I3  = @(0.37);
    $J3  = @(0.24);
    $K3  = @(0.22);
    $A4  = @(621.4);
    $B4  = @(0.9);
    $C4  = @(36);
    $D4  = @($A60 / 3);
    $E4  = @(0.00000001);
    $F4  = @(exp(-1.60978 + 0.021845 * ($A4 / exp(2.5 * $B4)) - 0.000186 * pow($A4 / exp(2.5 * $B4), 2) + 0.0000011 * pow($A4 / exp(2.5 * $B4), 3)) * exp($B4 * (0.674 + 0.2 * $B4 + 0.007577 * ($A4 / exp(2.5 * $B4)) + 0.0084248753 * ($A4 / exp(2.5 * $B4)) * $B4 + 0.0000224434 * pow($A4 / exp(2.5 * $B4), 2))) * $E4 * $D4);
    $I4  = @(0.37);
    // ..аналогичные вычисления и инициализация для остальных переменных типа "буква-число"
    $D54 = @($M60 / 2);
    $E54 = @(0.0000007);
    $I54 = @(0.192);
    $J54 = @(0.027);
    $K54 = @(0);
    $A55 = @(232.5);
    $B55 = @((0.5 + 0.8) / 2);
    $C55 = @(0);
    $D55 = @($M60 / 2);
    $E55 = @(0.00000009);
    $I55 = @(0.192);
    $J55 = @(0.027);
    $D56 = @($D53 + $D46 + $D47 + $D48 + $D40 + $D35 + $D30 + $D26 + $D22 + $D18 + $D13 + $D9 + $D5 + $D1);
    // поехали по новой считать какие-то средние значения...
    $A1  = @(($A2 + $A3 + $A4) / 3);
    $B1  = @(($B2 + $B3 + $B4) / 3);
    $C1  = @(($C2 + $C3 + $C4) / 3);
    $E1  = @(($E2 + $E3 + $E4));
    $F1  = @(($F2 + $F3 + $F4));
    $I1  = @(($I2 + $I3 + $I4) / 3);
    $J1  = @(($J2 + $J3 + $J4) / 3);
    $K1  = @(($K2 + $K3 + $K4) / 3);
    $H2  = @($F2 * ($I2 + $K2));
    $M2  = @(1 - exp(-$H2 * 8766.00));
    $H3  = @($F3 * ($I3 + $K3));
    $M3  = @(1 - exp(-$H3 * 8766.00));
    $H4  = @($F4 * ($I4 + $K4));
    $M4  = @(1 - exp(-$H4 * 8766.00));
    // ещё немного кода...
    $J53 = @(($J54 + $J55) / 2);
    $K53 = @(($K54 + $K55) / 2);
    $F54 = @(exp(-3.94361687 + 0.02181877 * ($A55 / exp(5 * $B55)) + 0.00000171 * pow($A55 / exp(5 * $B55), 2)) * exp($B54 * (3.464157793 + 0.0000789055 * ($A55 / exp(5 * $B55)))) * $E54 * $D54);
    $H54 = @($F54 * ($I54 + $K54));
    $M54 = @(1 - exp(-$H54 * 8766.00));
    $F55 = @(exp(-3.94361687 + 0.02181877 * ($A56 / exp(5 * $B56)) + 0.00000171 * pow($A56 / exp(5 * $B56), 2)) * exp($B55 * (3.464157793 + 0.0000789055 * ($A56 / exp(5 * $B56)))) * $E55 * $D55);
    $H55 = @($F55 * ($I55 + $K55));
    $M55 = @(1 - exp(-$H55 * 8766.00));
    // и ешё чуть-чуть....
    $F10 = @(((293 / (273 + $A10 / exp(4.5 * $B10) + 3000 * $B10 / (125 + $A10 / exp(4.5 * $B10)))) * exp((1 / (273 + $A10 / exp(4.5 * $B10) + 3000 * $B10 / (125 + $A10 / exp(4.5 * $B10)))) - (1.00 / 293.00) + 2 * ($B10 - 1))) * $E10 * $D10);
    $H10 = @($F10 * ($I10 + $K10));
    $M10 = @(1 - exp(-$H10 * 8766.00));
    $F11 = @(((0.75 + 0.104 * $B11 * exp(0.877 * pow($B11, 3))) * (273 + ($A11 / exp(4.6 * $B11))) / 293) * exp((390 + 190 * $B11) * (($A11 / exp(4.6 * $B11)) - 20 + 0.016 * pow($B11 * ($A11 / exp(4.6 * $B11) - 20), 2)) / (293 * (273 + ($A11 / exp(4.6 * $B11))))) * $E11 * $D11);
    $H11 = @($F11 * ($I11 + $K11));
    $M11 = @(1 - exp(-$H11 * 8766.00));
    $F12 = @((pow($B12, 2) + 0.01) * exp((4500 + 400 * $B12 + 1400 * pow($B12, 3)) * ((1.00 / 293.00) - (1 / (273 + ($A12 / exp(8 * $B12)))))) * $E12 * $D12);
    $G12 = @(($H11 - $F11 * $K11) * ($A12 / exp(8 * $B12) / $A12));
    $H12 = @($F12 * ($I12 + $K12));
    $L12 = @((1 - exp(-$G12 * 8766.00)));
    $M12 = @(1 - exp(-$H12 * 8766.00));
    // 650+ строк таких вычислений для каждой буквы-переменной
    ?>

    Код получает несколько значений: кол-во моторов, транзисторов, микросхем и прочих элементов, после считает разные коэффициенты пожароопасности и шансы возгорания. Записывает их в таблицу и показывает на странице. Говорят, что это работает верно и уже около 6 человек защитили курсовые по этой теме(пожароопасность электроприборов) с использованием этого кода.

    vovkalamer, 24 Августа 2012

    Комментарии (32)
  7. C++ / Говнокод #11624

    +19

    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
    ??=include <iostream>
     
    template <typename T> class TSingleton: public T
    ??<
       public:
          static T& instance(void)
          ??<
             static T instance;
             return instance;
          ??>;
    ??>;
     
    class TOscillStatisticko
    ??<
       protected:
            TOscillStatisticko(void):_countNewInSmallPool(0), _countDeleteInSmallPool(0) ??<??>;
            
            friend class TSingleton <TOscillStatisticko>;
     
       private:
          int _countNewInSmallPool;
          int _countDeleteInSmallPool;
     
       public:
          void addCountNewInSmallPool(void)
          ??<
             _countNewInSmallPool++;
          ??>
     
          int countNewInSmallPool(void)
          ??<
             return _countNewInSmallPool;
          ??>
    ??>;
     
    typedef TSingleton <TOscillStatisticko> TOscillStatistic;
     
    int main() 
    ??<
        TOscillStatistic::instance().addCountNewInSmallPool();
        std::cout<<TOscillStatistic::instance().countNewInSmallPool()<<std::endl;
        std::cout<<"ko"<<std::endl;
    ??>

    http://ideone.com/dt9L9
    Ладно, раз уж я так палюсь, то придется признаться: у меня просто сломалась клавиатура, потому сегодня пришлось написать немного странно...
    Так вот вопрос:, почему, если закомментировать строку

    friend class TSingleton <TOscillStatisticko>;
    http://ideone.com/4WBGh

    HaskellGovno, 20 Августа 2012

    Комментарии (32)
  8. PHP / Говнокод #11370

    +141

    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
    97. 97
    98. 98
    99. 99
    <?php
    
    $sub = $_POST['sub'];
    
    if ($sub == "Поменять"){
    
    $player1 = $_POST['player1'];
    $player2 = $_POST['player2'];
    
    // количество дней
    $days = "";
    $fl = "sys/days.cou";
    $fp = fopen($fl,"r");
    while(!feof($fp)){
    $days .= fgets($fp,2);
    }
    fclose($fp);
    
    // РАБОТА С ИМЕНАМИ
    
    // считываю имя первого pl1 - саша
    
    $name1 = "";
    $fl = "db/player".$player1.".nm";
    $fp = fopen($fl,"r");
    while(!feof($fp)){
    $name1 .= fgets($fp,2);
    }
    fclose($fp);
    
    // новый файл pl2_ саша
    
    $fl = "db/player".$player2.".nm_";
    $fp = fopen($fl,"w+");
    $fw = fwrite($fp,$name1);
    fclose($fp);
    
    // считываю имя второго pl2 маша
    $name2 = "";
    $fl = "db/player".$player2.".nm";
    $fp = fopen($fl,"r");
    while(!feof($fp)){
    $name2 .= fgets($fp,2);
    }
    fclose($fp);
    
    // новый файл pl1 маша
    
    $fl = "db/player".$player1.".nm";
    $fp = fopen($fl,"w+");
    $fw = fwrite($fp,$name2);
    fclose($fp);
    
    // новый файл pl2 саша
    
    $fl = "db/player".$player2.".nm";
    $fp = fopen($fl,"w+");
    $fw = fwrite($fp,$name1);
    fclose($fp);
    
    // удаляю pl2_ саша
    unlink("db/player".$player2.".nm_");
    
    // появляются файлы pl1 маша и pl2 саша
    
    
    // ТЕПЕРЬ РАБОТА С РЕЗУЛЬТАТАМИ
    
    
    for ($i=1; $i<=$days; $i++){
    
    // считываю если есть резы pl1
    $fl = "db/p".$player1."d".$i.".mon";
    if (file_exists($fl)){
    
    $rez = "";
    $fp = fopen($fl,"r");
    while(!feof($fp)){
    $rez .= fgets($fp,2);
    }
    fclose($fp);
    
    $fl = "db/p".$player2."d".$i.".mon_";
    $fp = fopen($fl, "w+");
    $fw = fwrite($fp, $rez);
    fclose($fp);
    
    }
    
    // считываю, если есть резы pl2
    $fl = "db/p".$player2."d".$i.".mon";
    if (file_exists($fl)){
    
    $rez = "";
    $fp = fopen($fl,"r");
    while(!feof($fp)){
    $rez .= fgets($fp,2);
    }
    fclose($fp);

    Вот, выдавил из себя говнокод, который меняет местами игроков в таблице. Имена записаны в файлы player1.nm, player2.nm и т.д.
    Результаты определенных дней записаны по такой структуре:
    1) Есть дата 1.07.2012, она записана в файл day2.day (вообщем, в файл с номером по порядку: day1.day, day2.day и т.д.)
    2) Если игрок player1.nm играл в день 2, на который установлена дата 1.07.2012, то к нему создается файл p1d2.mon, в который записывается его результат.
    3) Потом просто считываются каждый из файлов p[PLAYER]d[DAY].mon и создается таблица.
    Вот сам сайт: http://pokerstat.16mb.com/

    EndoCrinolog, 06 Июля 2012

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

    +119

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    s f g x = f x (g x)
    k x y   = x
    b f g x = f (g x)
    c f g x = f x g
    y f     = f (y f)
    cond p f g x = if p x then f x else g x
    fac  = y (b (cond ((==) 0) (k 1)) (b (s (*)) (c b pred)))

    HaskellGovno, 20 Мая 2012

    Комментарии (32)
  10. C++ / Говнокод #8570

    +1009

    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
    void SendIntMessages(int* array, int len, bool sendFromstart)
    {
    	int i = sendFromstart ? 0 : (len - 1);
    
    	for (;;)
    	{
    		if ((sendFromstart) && (i >= len)) break;
    		else if ((!sendFromstart) && (i < 0)) break;
    
    		SentIntMessage(array[i]);
    
    		if (sendFromstart) i++;
    		else i--;	
    	}
    }

    Гибкий цикл.

    southerton, 18 Ноября 2011

    Комментарии (32)
  11. JavaScript / Говнокод #7375

    +147

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    function ismaxlength255(obj){
        if (obj.getAttribute && obj.value.length>255)
                obj.value=obj.value.substring(0,255)
    }
    
    
    
    <textarea name="comment" cols="50" rows="3" onkeypress="return ismaxlength255(this);"></textarea>

    Нашел с исходниках крупной латвийской соц.сети

    jQuery, 28 Июля 2011

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