1. Куча / Говнокод #12193

    +124

    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
    samples = [(1,14),(2,-66),(3,-414),(4,-1180),(5,-2370),(6,-3726),(7,-4606),(8,-3864),(9,270)]
     
    -- Бесконечная система уравнений для МНК
    system s = zip (matrix s) (column s) where
        matrix = iterate tail . foldr1 (zipWith (+)) . map (\(x,y) -> iterate (*x) 1)
        column = foldr1 (zipWith (+)) . map (\(x,y) -> iterate (*x) y)
     
    -- Сведение бесконечной системы к треугольному виду (первый шаг гаусса)
    triangle (eq:eqs) = (eq : triangle (map (sub eq) eqs)) where
        sub eq1@(a1:as, ae) eq2@(b1:bs, be) = (zipWith f as bs, f ae be) where
            f a b = b - a * b1 / a1
     
    -- Вычисление иксов (второй шаг гаусса)
    calcX n = foldr calc [] . take n where
        calc (a:as, b) xs = ((b - sum (zipWith (*) as xs)) / a : xs)
     
    -- метод наименьших квадратов
    mnk n = reverse . calcX n . triangle . system

    Метод наименьших квадратов.

    http://ideone.com/CsD0ku

    bormand, 25 Ноября 2012

    Комментарии (52)
  2. Куча / Говнокод #12192

    +125

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    splitOn :: (a -> Bool) -> [a] -> [[a]]
    splitOn _ [] = []
    splitOn f xs = removeEmpty $ takeWhile (not . f) xs: splitOn f (dropWhile (f) $ dropWhile (not . f) xs) where
    	removeEmpty [] 	= []
    	removeEmpty (x:xs) 
    		| null x 	= removeEmpty xs 
    		| otherwise = x: removeEmpty xs
    
    words' :: String -> [String]
    words' = splitOn (flip elem " \n\r\f\t\v\160")

    Еще один words'

    Fai, 25 Ноября 2012

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

    −100

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    size = 3
    lines = ["___", "bcd", "___"]
    board = [[None]*size]*size
    for x in range(0, size):
      for y in range(0, size):
        if lines[x][y] != '_':
          board[x][y] = lines[x][y]
    print(board)

    я бы, очевидно, хотел видеть результат:
    [[None, None, None], ['b', 'c', 'd'], [None, None, None]]
    но питоша выводит:
    [['b', 'c', 'd'], ['b', 'c', 'd'], ['b', 'c', 'd']]

    serpinski, 24 Ноября 2012

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

    +133

    1. 1
    2. 2
    3. 3
    #include <math.h>
     ...
    result = (thisCos ? cos : sin)(3.140);

    Коллега занимается инновациями в Сколково, так они там изобрели операцию NOT на континууме.

    serpinski, 24 Ноября 2012

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

    +161

    1. 1
    2. 2
    3. 3
    function toInt(number) {
        return number && + number | 0 || 0;
    }

    http://ideone.com/igo7ag

    Минут 10 назад меня ошарашили фразой о методе toInt(), который, якобы, есть в javascript. Гугл выдал всего одну ссылочку, в которой говорится о нем: http://javascript.ru/forum/misc/22100-funkciya-toint-razyasnite-pozhalujjsta-neskolko-momentov.html. Увидев данный код, я просто не мог не выложить его сюда.

    bormand, 23 Ноября 2012

    Комментарии (28)
  6. Python / Говнокод #12188

    −94

    1. 1
    $class = (preg_match("/^[0-9]+$/", $i/2)) ? "cssBgHex0F0F0F" : "cssBgHexAFAFAF";

    ПХП-коллега выдал: подсветка чётных номеров строк :)

    serpinski, 23 Ноября 2012

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

    +77

    1. 1
    delete[] Memory, leak; //Унарные операторы, такие уринарные.

    Былинный отказ.

    igumnovf, 23 Ноября 2012

    Комментарии (1)
  8. Pascal / Говнокод #12185

    +67

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    function IntToHex(N: integer): string;
    const
      S = '0123456789ABCDEF';
    var
      i: integer;
    begin
      SetLength(Result, 8);
      for i := 0 to 7 do Result[8 - i] := S[N shr (i shl 2) and $0F + 1];
    end;

    Носки менял, ноги мыл, все равно воняет хаккирством.

    И оно почему-то в модуле WinAPI.pas у Тараса лежит о_О

    PascalGovno, 23 Ноября 2012

    Комментарии (52)
  9. C# / Говнокод #12184

    +105

    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
    protected override void WndProc(ref Message m)
                {
                    base.WndProc(ref m);
    
                    //All mouse messages have to be passed to the Master Edit Control
                    //because the panel intercepts them.  
                    if (m.Msg == PUtils.WM_MOUSEMOVE)
                        PUtils.SendMessageToMaster(m.Msg, m.WParam, m.LParam, -1);
                    else
                        if (m.Msg == PUtils.WM_LBUTTONDOWN)
                            PUtils.SendMessageToMaster(m.Msg, m.WParam, m.LParam, -1);
                        else
                            if (m.Msg == PUtils.WM_LBUTTONUP)
                                PUtils.SendMessageToMaster(m.Msg, m.WParam, m.LParam, -1);
                            else
                                if (m.Msg == PUtils.WM_LBUTTONDBLCLK)
                                    PUtils.SendMessageToMaster(m.Msg, m.WParam, m.LParam, -1);
                                else
                                    if (m.Msg == PUtils.WM_MOUSELEAVE)
                                        PUtils.SendMessageToMaster(m.Msg, m.WParam, m.LParam, -1);
                                    else
                                        if (m.Msg == PUtils.WM_RBUTTONDOWN)
                                            PUtils.SendMessageToMaster(m.Msg, m.WParam, m.LParam, -1);
                                        else
                                            if (m.Msg == PUtils.WM_MOUSEACTIVATE)
                                                PUtils.SendMessageToMaster(m.Msg, m.WParam, m.LParam, -1);
                }//Override WndProc

    паубивав бы !!!

    63F45EF45RB65R6VR, 23 Ноября 2012

    Комментарии (15)
  10. Java / Говнокод #12183

    +74

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    private static class NullReader extends Reader {
        public int read(char[] cbuf, int off, int len) {
            return 0;
        }
        public void close() {}
    }

    Однажды понадобилось работать с модулем, который что-то читает с помощью StreamTokenizer, но вместо реального файла подсовывать ему что-то своё, генерируемое на ходу, и при этом быть в курсе, какое место он сейчас читает. Решил пронаследоваться от StreamTokenizer и переопределить ему nextToken(). Оказалось, что у StreamTokenizer нет пустого конструктора, надо обязательно вызвать super и передать туда какой-нибудь Reader. Попробовал передавать null - оказалось, что в его конструкторе стоит проверка, которая сразу кидает NullPointerException. Блин, зачем ему Reader, если он к этому Reader никогда не обратится, ведь я nextToken переопределил! Пришлось сделать свой Reader-заглушку. Но чтобы пронаследоваться от абстрактного Reader, нужно обязательно определить методы read и close. Вот такая шняга в итоге получилась. Недавно случайно открыл код на этом месте и долго на неё пялился :-)

    GoblinAlchemist, 23 Ноября 2012

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