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

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

    +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
    91. 91
    92. 92
    93. 93
    94. 94
    95. 95
    {- This code intentionally was made slightly cryptic -}
    {-# LANGUAGE GADTs, StandaloneDeriving, UnicodeSyntax, KindSignatures, FlexibleInstances, LambdaCase, CPP, BangPatterns #-}
    import System.Exit
    import Data.Functor
    import Control.Monad.IO.Class
    import Control.Monad.Trans.Cont
    import System.Random
    import System.Posix.Signals
    import System.Environment
    import Control.Concurrent.MVar
    
    instance Eq (Int → Int) where
      _ == _ = True -- It's a hack
    
    infixl 7 :.
    
    data T ∷ * where {J, Â, Â', S, K ∷ T; (:.) ∷ T → T → T; Ψ ∷ {σ ∷ String} → T
                     ;F ∷ (Int → Int) → T; N ∷ Int → T; Ø ∷ String → T}
    
    parse ∷ String → [T] → T
    parse ('f':'u':c) t = parse c (J:t)
    parse ('b':'a':'r':c) t = parse c (Â:t)
    parse ('~':c) (a:b:t) = parse c (b:.a:t)
    parse ('~':_) _ = error "Parse error: missing operand(s)"
    parse (_:c) t = parse c t
    parse [] (h:_) = h :. Ψ []
    parse [] [] = error "Parse error: empty program"
    
    s ∷ T → T
    s (J :. x) = (x :. S) :. K
    s (K :. x :. _) = x
    s (S :. x :. y :. z) = (x :. z) :. (y :. z)
    s (F f :. N i) = N $ f i
    s (F f :. F g) = F $ f . g
    s (Â' :. N i :. ψ @ (Ψ {})) = ψ {σ = toEnum i : σ ψ}
    s (Â :. n :. ψ @ (Ψ {})) = Â' :. (n :. F (+1) :. N 0) :. ψ
    -- Other cases
    s (a :. b) = (s a) :. (s b)
    s x = x
    
    eval ∷ (T → t) → (T → t) → T → t
    eval fp done t | t == t'   = done t
                   | otherwise = fp t'
        where t' = s t
    
    ψs a@Ψ{σ=s} = [(a, s)]
    ψs (a:.b) = ψs a ++ ψs b
    ψs _ = []
    
    r' ∷ T → [(T, String)]   -- Very inefficient; should be rewritten
    r' a | null t = [(a, s)] where ((_, s):t) = ψs a
    r' (a :. b) = r' a ++ r' b
    r' _ = []
    
    r ∷ T → IO (Maybe T)
    r t = case r' t of
            [] → return Nothing
            t' → ((t' !!) <$> randomRIO (0, length t' - 1)) >>= \case
               (Ψ{}, s) → putStrLn (reverse s) >> return Nothing
               (t'', s) → putStrLn (reverse s) >> return (Just t'')
    
    setMVar v = (tryTakeMVar v >>) . putMVar v
    
    loop v f n = callCC $ \done → loop1 done (\fp → f fp done) n
      where loop2 interrupt f' n = do
              n' ← liftIO (readMVar v) >>= \case
                0 → f' interrupt n
                _ → callCC $ \fp → f' fp n
              liftIO $ modifyMVar_ v $ (\k → return $ k-1)
              loop2 interrupt f' n'
            loop1 done f' n = do
              n' ← callCC $ \int → loop2 int f' n
              liftIO $ putStrLn "Measure (m) Abort (a) Continue (c) Run steps (number)"
              (liftIO getLine) >>= \case
                "a" → f' done n' >> return ()
                "c" → liftIO $ setMVar v (-1)
                "m" → liftIO (r n') >>= \case
                  Nothing → liftIO exitSuccess
                  Just n'' → loop1 done f' n'' >> return ()
                a → case readsPrec 0 a of
                       (n,_):_ → liftIO $ setMVar v n
                       _ → liftIO $ putStrLn "Not understood."
              loop1 done f' n'
    
    main ∷ IO ()
    main = do
      (file, n) ← getArgs >>= \case
        [f] → return (f, -1)
        ["-s", n, f] → case readsPrec 0 n of
                        (n',_):_ → return (f, n')
                        _ → error "Argument of -s should be a number"
        _ → error "Insufficient arguments. Expected [-s NUMBER_OF_STEPS] FILE"
      cnt ← newMVar n
      installHandler keyboardSignal (Catch $ setMVar cnt 0) Nothing
      void $ (r =<<) (evalContT $ loop cnt eval =<< (parse <$> readFile file))

    больше трясин богу тьюринг-полноты
    1) литературное программирование
    2) зайчатки REPL
    3) чисто функциональное IO без манад и uniq-types
    4) "квантовые" вычисления
    5) только два комбинатора

    CHayT, 18 Марта 2016

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

    −146

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    n = 0
    for i in range(n):
        pass
    print i
    
    NameError: name 'i' is not defined

    3_14dar, 25 Июня 2015

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

    +9

    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
    template<...many params...>
    class Foo
    {
      template <typename T>
      class __Bar 
      {
        T t;
      public :
        __Bar(T t) : t(t) {}  
      };
    
    public :
      template <typename T>
      __Bar<T> Bar(T t)
      {
        return __Bar<T>(t); // просто __Bar(t) нельзя, вывод не сработает
      }
    
      template <typename T>
      void Buzz (T t)
      {
      }
    };
    
    ...
    Foo f;
    f.Buzz(Bar(5));

    А как вы выкручиваетесь из неумения определять тип результата по типу параметров конструктора?

    TarasB, 15 Апреля 2014

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

    −139

    1. 1
    2. 2
    >> # HTML/4.01 says that line breaks are represented as "CR LF" pairs (i.e., `%0D%0A')
    >> $content =~ s/(?<!%0D)%0A/%0D%0A/g if defined($content);

    HTTP::Request::Common 6.04, строка 86
    http://cpansearch.perl.org/src/GAAS/HTTP-Message-6.04/lib/HTTP/Request/Common.pm

    Оно просто берёт и изменяет передаваемый контент. Любой. В том числе просто бинарные данные.

    kainwinterheart, 13 Августа 2013

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

    +32

    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
    // *.h
    class MyClass {
    
    public:
    	MyClass ();
    	~MyClass ();
    	// ..etc
    
    };
    
    // *.cpp
    #include "*.h"
    
    MyClass *mycl;
    
    MyClass::MyClass ()
    {
    	mycl=this; // эту строчку не удалять без нее не работает, точнее не всегда работает иногда сбоит
    }
    
    MyClass::~MyClass ()
    {
    }

    Простите меня пожалуйста. Я уныл чуть мене чем полностью, но почему человек которые это написал хороший программист. Это писал не я. Извините пожалуйста за беспокойство :( ..

    neudachnik, 25 Января 2013

    Комментарии (87)
  7. PHP / Говнокод #9862

    +170

    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
    <?
    if (!$_SESSION['signed_id_user'] || $_SESSION['signed_id_group'] != 1) {
    	$pagetitle = 'Необходима авторизация';
    
    	$pagecontent .= "<p>&nbsp;<p>\n";
    	$pagecontent .= "<p>&nbsp;<p>\n";
    	$pagecontent .= "<p>&nbsp;<p>\n";
    	$pagecontent .= "<p>&nbsp;<p>\n";
    	$pagecontent .= "<div align=\"center\" style=\"width: 400px;\">\n";
    	$pagecontent .= "<form action=\"login.php\" method=\"post\">\n";
    	$pagecontent .= "<fieldset class=\"bw\">\n";
    	$pagecontent .= "	<legend class=\"bw\">авторизация пользователя</legend>\n";
    	$pagecontent .= "	<p>Поля, помеченные <span class=\"required\">*</span> являются обязательными для заполнения</p>\n";
    	$pagecontent .= "	<table border=\"0\" cellpadding=\"2\" cellspacing=\"0\" width=\"300\" align=\"center\">\n";
    	$pagecontent .= "	<tr>\n";
    	$pagecontent .= "		<td width=\"160\" align=\"right\">имя пользователя:</td>\n";
    	$pagecontent .= "		<td width=\"120\"><input type=\"text\" size=\"20\" class=\"baseinput\" name=\"username\" id=\"username\" /></td>\n";
    	$pagecontent .= "		<td><div id=\"msgUsername\" class=\"required\">*</div></td>\n";
    	$pagecontent .= "	</tr>\n";
    	$pagecontent .= "	<tr>\n";
    	$pagecontent .= "		<td width=\"160\" align=\"right\">пароль:</td>\n";
    	$pagecontent .= "		<td width=\"120\"><input type=\"password\" size=\"20\" class=\"baseinput\" name=\"password\" id=\"password\" /></td>\n";
    	$pagecontent .= "		<td><div id=\"msgPassword\" class=\"required\">*</div></td>\n";
    	$pagecontent .= "	</tr>\n";
    	$pagecontent .= "	<tr>\n";
    	$pagecontent .= "		<td width=\"160\">&nbsp;</td>\n";
    	$pagecontent .= "		<td width=\"120\"><input type=\"submit\" class=\"button\" name=\"posted\" value=\"Войти\" /></td>\n";
    	$pagecontent .= "		<td>&nbsp;</td>\n";
    	$pagecontent .= "	</tr>\n";
    	$pagecontent .= "	</table>\n";
    	$pagecontent .= "</fieldset>\n";
    	$pagecontent .= "</form>\n";
    	$pagecontent .= "</div>\n";
    	$pagecontent .= "<p>&nbsp;<p>\n";
    	$pagecontent .= "<p>&nbsp;<p>\n";
    	$pagecontent .= "<p>&nbsp;<p>\n";
    	$pagecontent .= "<p>&nbsp;<p>\n";
    
    
    	$tpl = new Template();
    	$tpl->set_file('tpl/e-con_bw.tpl');
    	$tpl->add_var('PAGETITLE', $pagetitle);
    	$tpl->add_var('PAGECONTENT', $pagecontent);
    	echo $tpl->output();
    	$tpl = NULL;
        exit();
    }
    ?>

    Подскажите, пожалуйста, нахер с таким стилем кодинга вообще шаблонизатор надо?..

    Anderson, 04 Апреля 2012

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

    +148

    1. 1
    2. 2
    3. 3
    4. 4
    int getGKnumber()
    {
       return 7000;
    }

    просто гет :)

    absolut, 19 Июня 2011

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

    +163

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

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

    miraage, 19 Мая 2011

    Комментарии (87)
  10. 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)
  11. 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)