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

    +130

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    perft :: Int -> Position -> Int
    perft depth pos 
    	| depth <= 0 = 1
    	| otherwise  = sum . map (perft $ depth - 1) $ legalPositions where
    		legalPositions = filter isLegalPosition nextpositions
    		nextpositions = map (\move -> makeMove move pos) $ (moves pos)

    Fai, 28 Ноября 2012

    Комментарии (59)
  2. JavaScript / Говнокод #12213

    +146

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    Object.prototype.merge = function(objects){
        var newObj = this;
        for(var key in objects){
            key!='merge'?newObj[key] = objects[key]:void(0);
        }
        return newObj;
    };

    Выглядит ужасно, но ничего другого не придумал. Подскажите как правильно?)
    P.S. Если убрать проверку "key!='merge'?" то в объекте становится на 1 ключ больше('merge')

    Stud, 28 Ноября 2012

    Комментарии (10)
  3. PHP / Говнокод #12212

    +54

    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
    if($i!='0')
                {
                        $query="SELECT DATE_ADD(CURDATE(), INTERVAL ".$i." MONTH)";
                        $temp_date_array=mysql_fetch_row(mysql_query($query));
                        $temp_date_newmonth=$temp_date_array[0];
                       
                        $query="SELECT DAYOFMONTH('".$temp_date_newmonth."');";
                        $day=mysql_fetch_row(mysql_query($query));
                       
                        $query="SELECT DATE_ADD('".$temp_date_newmonth."', INTERVAL -".($day[0]-1)." DAY)";
                        $temp_date_array=mysql_fetch_row(mysql_query($query));
                        $temp_date=$temp_date_array[0];
                       
                        $query="SELECT DATE_ADD('".$temp_date."', INTERVAL 1 MONTH);";
                        $temp_date_array=mysql_fetch_row(mysql_query($query));
                        $temp_date_end=$temp_date_array[0];
                }
                else
                {
                        $query="SELECT CURDATE();";    
                        $temp_date_array=mysql_fetch_row(mysql_query($query));
                        $temp_date=$temp_date_array[0];
                       
                        $query="SELECT DAYOFMONTH('".$temp_date."');";
                        $day=mysql_fetch_row(mysql_query($query));
                       
                        $query="SELECT DATE_ADD(CURDATE(), INTERVAL 1 MONTH)";
                        $temp_date_array=mysql_fetch_row(mysql_query($query));
                        $temp_date_end_newmonth=$temp_date_array[0];
                       
                        $query="SELECT DATE_ADD('".$temp_date_end_newmonth."', INTERVAL -".($day[0]-1)." DAY)";
                        $temp_date_array=mysql_fetch_row(mysql_query($query));
                        $temp_date_end=$temp_date_array[0];
                }
                $query="SELECT MONTH('".$temp_date."');";

    http://forum.php.su/topic.php?forum=69&topic=50&v=#135410099 3

    sKaa, 28 Ноября 2012

    Комментарии (0)
  4. Java / Говнокод #12211

    +78

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    if ((act_type == 15) || (act_type == 24)) {
    } else {
                if (duration != null)
                dts.setDuration(dts.getDuration().add(duration));
    }

    Вся пунктуация сохранена и НИЧЕГО НЕ ВЫРЕЗАНО
    Волшебный if
    Пруф [[ скрыт ]]
    строка 112 - 116

    smpl, 28 Ноября 2012

    Комментарии (116)
  5. PHP / Говнокод #12210

    +51

    1. 1
    2. 2
    3. 3
    4. 4
    $needMoreDataWM = ($exchange->getSumTo()->getCurrency()->getSystem()->getModule() == 'WebMoney' || $exchange->getSumFrom()->getCurrency()->getSystem()->getModule() == 'WebMoney') || $this->getRequest()->request->get('user_wmid');
    $needMoreDataWM = $needMoreDataWM && !$user->getWmid();
    $needMoreDataBank = ($exchange->getSumTo()->getCurrency()->getSystem()->getClass() == 'bank') && !$user->getVat() || $this->getRequest()->request->get('user_vat');
    $needMoreData = $needMoreDataBank || $needMoreDataWM || !($user->getFullname() && $user->getPassport()) || $this->getRequest()->request->get('user_fullname') || $this->getRequest()->request->get('user_passport');

    А что поделаешь, Doctrine принуждает

    nick4fake, 28 Ноября 2012

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

    +12

    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
    #include <stdio.h>
    #include <type_traits>
    #include <string>
    struct hack_t{};
    template<class TYPE>static hack_t operator&(const TYPE&,hack_t){return hack_t();}
    int main()
    {
      struct type{};
      std::string var="win";
      #define get_meta(var)[&]()->bool{hack_t unnamed;hack_t foo(var&unnamed);return std::is_function<decltype(foo)>::value;}()
      bool result_0=get_meta(var);
      bool result_1=get_meta(type);
      #undef get_meta
      printf("get_meta(var) == %s\n",result_0?"true":"false");
      printf("get_meta(type) == %s\n",result_1?"true":"false");
      return 0;
    }

    Код отличает переменную от типа.
    http://ideone.com/t7BBO4
    Сами знаете откуда.

    LispGovno, 27 Ноября 2012

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

    +10

    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
    //В mathc.hpp:
    typedef float import (float);
    
    //В неком cpp функция:
    float cm() {
            import calcFpu;
           //...
            float src = //...
            float res = calcFpu(src);
            return res;
    }
    
    //В mathc.cpp:
    void calcFpu(float){
    //...
    void calcSSE(float){
    //...

    Мои глаза... В перлы.
    http://ideone.com/RBAMyv

    LispGovno, 27 Ноября 2012

    Комментарии (14)
  8. Си / Говнокод #12205

    +128

    1. 1
    "%s[@%s='%s']"

    Аццкий смайлик! Сборка запроса XPath для поиска элементов в XML DOM по значениям, переданным из другой функции.

    sprintf(str,"%s[@%s='%s']",elemPath,attrName,value);

    GoblinAlchemist, 27 Ноября 2012

    Комментарии (5)
  9. Си / Говнокод #12204

    +130

    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
    #include <stdlib.h>
     
    struct no_matter
    {
        int some_field;
    };
     
    struct matter *do_stuff(void)
    {
        struct no_matter *m = calloc(1, sizeof *m);
        return m;
    }
     
    int main(void)
    {
        struct no_matter *m = do_stuff();
        free(m);
        return 0;
    }

    Сегодня выполняю роль гумна. В сишке можно возвращать указатель на непонятно откуда взявшуюся необъявленную ранее структуру и код будет компиляться (ладно хоть пишет невнятные ворнинги, только благодаря им нашёл опечатку в одной букве в имени структуры в рабочем коде). Понятно, что все указатели одинаково числа, но всё равно как-то некрасиво. Хацкелисты негодуэ, даёшь монаду Ptr

    http://ideone.com/3SABHW

    roman-kashitsyn, 27 Ноября 2012

    Комментарии (39)
  10. Pascal / Говнокод #12202

    +75

    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
    procedure TForm1.RunCode(Code:String;A,B:Cardinal);
    var
    i,j:Cardinal;
    dpth:Word;
    itrCounter:Integer;
    ans:Integer;
    begin
     i:=A-1;
      repeat
       i:=i+1;
        if Code[i]='>' then
         if p=30000 then p:=1 else p:=p+1;
        if Code[i]='<' then
         if p=1 then p:=30000 else p:=p-1;
        if Code[i]='+' then allspace[p]:=allspace[p]+1;
        if Code[i]='-' then allspace[p]:=allspace[p]-1;
        if Code[i]='.' then Memo2.Lines.Text:=Memo2.Lines.Text + Chr(allspace[p]);
        if Code[i]='[' then
         begin
          dpth:=0;
          j:=i;
          repeat
           if (Code[j]=']') and (dpth>0) then dpth:=dpth-1;
           j:=j+1;
           if Code[j]='[' then dpth:=dpth+1;
           if j>B then
            begin
             ShowMessage('Обнаружен незакрытый цикл. Выполнение остановится');
             running:=False;
             Exit;
            end;
          until (Code[j]=']') and (dpth=0);
          itrCounter:=0;
          while allspace[p]<>0 Do
           begin
            if running=False then Exit;
            RunCode(Memo1.Text,i+1,j-1);
            itrCounter:=itrCounter+1;
            if itrCounter=10000000 then
             begin
              ans:=MessageDlg('Выполнение программы вероятно зациклилось (прошло уже 10 000 000 итераций). Возможно код содержит ошибки.' + #13 + 'Остановить выполнение?',mtConfirmation,[mbYes,mbNo],0);
              if ans=mrYes then running:=False;
              if ans=mrNo then itrCounter:=0;
             end;
           end;
          i:=j;
         end;
        if Code[i]=',' then EnterChar;
       Application.ProcessMessages;
      until (i>=B) or (running=False);
    end;

    Процедура интерпретации brainfuck кода

    SmseR, 27 Ноября 2012

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