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

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

    +35

    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
    // стоит простая задача: удалить все узлы из списка
    // чувак думает, как же ему это реализовать через задницу?
    // и получилось же!
    
    if (link * root = list.get_root()) {
        link * next;
        do {
            next = root->next();
            list.remove(next);
        } while (root = next);
    }
    
    // неужели нельзя вот так, по-простому?
    
    link * node = list.get_root();
    while (node) {
        link * next = node->next();
        list.remove(node);
        node = next;
    }

    alexzak, 11 Сентября 2012

    Комментарии (48)
  3. Куча / Говнокод #11599

    +141

    1. 1
    2. 2
    3. 3
    4. 4
    http://www.ubuntu.com/download/desktop
    1. Открыть страницу в Firefox/Google-Chrome.
    2. Сверху над кнопкой "Download" сменить с 32 бит на 64 бит.
    3. Посмотреть внимательно на URL, откуда будет загружатся имидж.

    Код, который это делает трудно понять без контекста.

    wvxvw, 16 Августа 2012

    Комментарии (48)
  4. Си / Говнокод #11435

    +118

    1. 1
    2. 2
    3. 3
    4. 4
    filename_size = strlen(dest_dir) + strlen(basename) + 6;
        ctx.mtl_file = (char *) malloc(filename_size);
        ctx.obj_file = (char *) malloc(filename_size);
        sprintf(ctx.mtl_file, "%s/%s.mtl", dest_dir, basename);

    Долго соображали, почему вылезает сегфолт во free...

    someone, 18 Июля 2012

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

    +103

    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
    digits n  = reverse $ map (`mod` 10) (takeWhile (/= 0) (iterate (`div` 10) n))
    
    fromDigits l = sum $ zipWith (*) (reverse l) (map (10^) [0..])
    
    isPalindromic x = digits x == (reverse $ digits x)
    
    
    f :: Integer -> [[Integer]] -> [Integer] -> Int -> [[Integer]]
    f x founded lookedup niter 
                      | niter > 50 = [notlychers, [x] ++ lychers ++ lookedup, zs]
                      | nextX `elem` notlychers = [[x] ++ notlychers ++ lookedup, lychers, zs]
                      | nextX `elem` lychers = [notlychers, [x] ++ lychers ++ lookedup, zs]
                      | isPalindromic nextX = [[x] ++ notlychers ++ lookedup, lychers, zs]
                      | otherwise = f nextX founded (x : lookedup) (niter+1)
       where nextX = x + fromDigits (reverse $ digits x)
             notlychers = founded !! 0
             lychers = founded !! 1
             zs = founded !! 2
    
    g :: [[Integer]] -> [[Integer]]
    g founded = f (x-1) [xs, ys, [x-1]] [] 0
     where x  = zs !! 0
           xs = founded !! 0
           ys = founded !! 1
           zs = founded !! 2
    
    gg n = g [[],[],[n+1]]
    
    isLycher n = null $ (gg n) !! 0

    http://projecteuler.net/problem=55
    http://projecteuler.net/thread=55


    >i even haven't understood why it works :(

    TheHamstertamer, 23 Апреля 2012

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

    +1002

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    template<class _CharType>
    bool check_arith(const _CharType* str)
    {
       for(; *str ; ++str)
          for(unsigned long long j = 0x6165696F7579ull; j; j >>= 8)
            if(((j & 0xFF) | 0x20) == (*str | 0x20))
               return true;
       return false; 
    }

    Функция, которая проверяет, есть ли в слове гласные буквы латинского алфавита с учетом регистра.

    gooseim, 15 Марта 2012

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

    +961

    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
    private class LinkedAction
    {
        public Action<Action<bool>> Action { get; set; }
    
        public LinkedAction Next { get; set; }
    
        public void Execute()
        {
            Action(s =>
                {
                    if (s && Next != null) Next.Execute();
                });
        }
    }
    
    private static LinkedAction NewLinkedAction(LinkedAction link, Action<Action<bool>> action)
    {
        return new LinkedAction
        {
            Action = action,
            Next = link
        };
    }
    
    var action = GetCopytoTestActions(parameter)
        .Reverse()
        .Aggregate<Action<Action<bool>>, LinkedAction>(null, NewLinkedAction);
    action.Execute();

    abatishchev, 12 Марта 2012

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

    +1006

    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
    class Worker
    {
        private:
            char name[15];
            double salary;
            ...
            
        public:
        
            Worker(char* n, double s)
            {
                ...
                
                if (s < 0)
                    salary = verSal(s);
                else
                    salary = s;
                
                ...
            }
        
            char* getName()
            {
                char* t = new char[15];
                strcpy(t, name);
                return t;
            }
            
        private:
            double verSal(double s)
            {
                do
                {
                    cout << "Ошибка при вводе зарплаты. Введите зарплату: ";
                    cin >> s;
                }
                while (s < 0);
                return s;
            }
    }

    Вот ещё один пример из конспекта (это уже от другого преподавателя). Он, заявил, что в getName() о t "позаботится сборщик мусора". Просто он Java тоже читает...

    vovams, 01 Февраля 2012

    Комментарии (48)
  9. ActionScript / Говнокод #9195

    −116

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    /*
    Часть библиотеки MathUtilsLib  (c) Sergey ( FlexMaster ), 2008
    */
    function shuffle( a:Array ):void{
       if( a ){
           a.map( function ( val:*, index:int, o:Array ){ o[index] = {v:val, r:int( 1000*Math.random())} }, a );
           a.sortOn( 'r');
           a.map(  function ( val:*, index:int, o:Array ){ o[index] = val['v']} );
       }
    }

    К сожалению, в Actionscript нет функции, которая позволила бы получить случайным образом перестановку массива. Иногда это бывает очень нужно.
    функция shuffle перемешивает содержимое исходного массива случайным образом.

    kyzi007, 22 Января 2012

    Комментарии (48)
  10. Ruby / Говнокод #9067

    −102

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    / _jquery.haml
    
    - unless Rails.env.development?
      / Require jQuery
      = javascript_include_tag 'http://yandex.st/jquery/1.7.1/jquery.min.js'
      / Require Google's jQuery if Yandex is down
      :javascript
        window.jQuery || document.write('<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js">\x3C/script>')
    / Require local jQuery if Google is down / is development env
    :javascript
      window.jQuery || document.write('<script src="#{asset_path('jquery.js')}">\x3C/script>')

    Отсюда: https://gist.github.com/1543189

    loststy, 10 Января 2012

    Комментарии (48)
  11. ActionScript / Говнокод #8754

    −119

    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
    public function checkDrop (pos: Array): Array
     {
     	checkItem ();
     	var res: Array = [];
     	var item: Array
     	var mc: MovieClip
     	for (var i: int = 0; i < pos.length; i++)
     	{
       item = pos[i];
       if (itemList[item[0]])mc = itemList[item[0]][item[1]] as MovieClip;
       if (mc)
       {
       	if (mc.blcd != 0 && ((item[2] == 2 && mc.blcd == 2) || (item[2] == 1 && mc.blcd == 2) || (item[2] == 2 && mc.blcd == 1))) res[i] = 1;
       }
     	}
     	return res;
     }

    Проверка проходимости сетки. И, да, эти мувики не в дисплейлисте, они просто хранят информацию.

    kyzi007, 06 Декабря 2011

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