1. C++ / Говнокод #14388

    +16

    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
    QVector<Line> Converter::convert(QImage &image, Modes mode/*, int left, int top, int right, int bottom*/){
        QVector<Line> result;
        /* if(left < 0) left = 0;
        if(top < 0) top = 0;
        //if(right > image.width()) right = image.width();
        //if(bottom > image.height()) bottom = image.height();
        //points.clear();
        //pix.fill(Qt::black);
        if(left > right){
            left ^= right;
            right ^= left;
            left ^= right;
        }
        if(top > bottom){
            top ^= bottom;
            bottom ^= top;
            top ^= bottom;
        }*/
        int left = 0,top = 0,right = image.width(),bottom = image.height();
        for( int i = left; i < right; ++i){
            for( int j = top; j < bottom; ++j){
                Line p;
                p.x1 = p.x2 = i;
                p.y1 = p.y2 = j;
                p.z1 = qGray(image.pixel(i,j));
                p.c = p.z1;
                QVector<int> v;
                if(i!=left) v.push_back(qGray(image.pixel(i-1,j)));
                if(i < right-1) v.push_back(qGray(image.pixel(i+1,j)));
                if(j!=top) v.push_back(qGray(image.pixel(i,j-1)));
                if(j < bottom-1) v.push_back(qGray(image.pixel(i,j+1)));
                if(i!=left && j!= top) v.push_back(qGray(image.pixel(i-1,j-1)));
                if(i < right-1 && j!=top) v.push_back(qGray(image.pixel(i+1,j-1)));
                if(j < bottom-1 && i!=left) v.push_back(qGray(image.pixel(i-1,j+1)));
                if(i < right-1 && j < bottom-1) v.push_back(qGray(image.pixel(i+1,j+1)));
                int min = *(std::min_element(v.begin(),v.end()));
                if(min < qGray(image.pixel(i,j))){
                    /* for( unsigned k = 0; k < p.c-min; ++k){
                        Point p0;
                        p0.x = i;
                        p0.y = j;
                        p0.z = qGray(image.pixel(i,j))-(k+1);
                        p0.c = qGray(image.pixel(i,j));
                        points.push_back(p0);
                    }*/
                    p.z2 = p.z1 - min;
                }else{
                    p.z2 = p.z1;
                }
                result.push_back(p);
            }
        }
        /*origin.x = 0;
        origin.y = 0;
        origin.z = 0.0;*/
        switch (mode) {
        case ISO:
            rotate(result, 3.1415/180*35.2,3.1415/4,-3.1415/4);
            //rotate(result, 0,,0);
            //rotate(result, 0,0,-3.1415/4);
            break;
        case BOTTOM:
            rotate(result, 3.1415/180*90,0,0);
            break;
        case LEFT:
            rotate(result, 3.1415/180*90,0,0);
            rotate(result, 0, 3.1415/180*90,0);
            break;
        case RIGHT:
            rotate(result, 3.1415/180*90,0,0);
            rotate(result, 0, -3.1415/180*90,0);
            break;
        default:
            break;
        }
        return result;
    }

    Картинка превращается, превращается...

    Abbath, 20 Января 2014

    Комментарии (66)
  2. C++ / Говнокод #14387

    +17

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    #include <iostream>
    
    int main(){
        int std = 10;
        std::cout << std << std::endl;
    }

    crastinus, 19 Января 2014

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

    +13

    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
    #include <iostream>
    using namespace std;
    
    // -- robot`s internal closed implementation --
    int  data1[] = { 0, 1, 2 }; char data2[] = { 42 };
    
    // -- robot`s API 
    const int *GetMechaData1() { return data1; }
    size_t GetMechaData1Size() { return 3; }
    const char *GetMechaData2(){ return data2; }
    size_t GetMechaData2Size() { return 1; }
    
    // -- pentagon`s internal closed implementation --
    //--------------------если T равно U, то результат будет D, а иначе - G------------//
    template<class T, class U, class D, class G> struct SelectIF     { typedef G type; };
    template<class T, class D, class G>  struct SelectIF<T, T, D, G> { typedef D type; };
    
    // -- pentagon`s API 
    enum { eMAXBUFER = 200 * sizeof(int) };
    template<class T, size_t N>void AcceptData(const T(&src)[N])
    {
        typedef typename SelectIF<T, char, int, T>::type Cast;
        enum { is_char = std::is_same<T,char>::value };
    
        cout << "received data:\n";
        const size_t num = (N<eMAXBUFER) ? N : eMAXBUFER;
    
        if (is_char)
            for (size_t n = 0; n < num; ++n)
                cout << "char code = " << (Cast)src[n] << " : char = '" << src[n] << "'\n";
        else
            for (size_t n = 0; n<num; ++n)
                cout << "item = " << src[n] << endl;
    }
    
    // client code
    template<class T, size_t N> struct Adapter
    {
        typedef Adapter<T, N + 1> Next;
        void Pass(const T* data, const size_t num)
        {
            if (N < num)
            {
                Next().Pass(data, num);
                return;
            }
    
            T(&arr)[N] = reinterpret_cast<  T(&)[N] > (mBuf);
            for (size_t n = 0; n< N; ++n) arr[n] = data[n];
            AcceptData(arr);
        }
    
        size_t mLen;
        T mBuf[eMAXBUFER];
    };
    
    template<class T> struct Adapter<T, eMAXBUFER>
    {
        void Pass(const T* data, const size_t)
        {
            for (size_t n = 0; n< eMAXBUFER; ++n)  mBuf[n] = data[n];
            AcceptData(mBuf);
        }
    
        size_t mLen;
        T mBuf[eMAXBUFER];
    };
    
    
    Adapter<int,  1> adapter1;
    Adapter<char, 1> adapter2;
    
    int main()
    {
        {
            const auto data = GetMechaData1();
            const auto num = GetMechaData1Size();
            adapter1.Pass(data, num);
        }
        {
            const auto data = GetMechaData2();
            const auto num = GetMechaData2Size();
            adapter2.Pass(data, num);
        }
    }

    Крестушки раскрестушились, а подраться не решились.
    Под катом ещё несколько вариантов.

    LispGovno, 19 Января 2014

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

    +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
    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
    static class FuncExtention
        {
            public static Func<T1, Func<T2, T3>> Carry<T1, T2, T3>(this Func<T1, T2, T3> func)
            {
                return t1 => t2 => func(t1, t2);
            }
    
            public static Func<T1, Func<T2, Func<T3, T4>>> Carry<T1, T2, T3, T4>(this Func<T1, T2, T3, T4> func)
            {
                return t1 => t2 => t3 => func(t1, t2, t3);
            }
    
            public static Func<T1, Func<T2, Func<T3, Func<T4, T5>>>> Carry<T1, T2, T3, T4, T5>(this Func<T1, T2, T3, T4, T5> func)
            {
                return t1 => t2 => t3 => t4 => func(t1, t2, t3, t4);
            }
    
            public static Func<T1, Func<T2, Func<T3, Func<T4, Func<T5, T6>>>>> Carry<T1, T2, T3, T4, T5, T6>(this Func<T1, T2, T3, T4, T5, T6> func)
            {
                return t1 => t2 => t3 => t4 => t5 => func(t1, t2, t3, t4, t5);
            }
    
            public static Func<T1, Func<T2, Func<T3, Func<T4, Func<T5, Func<T6, T7>>>>>> Carry<T1, T2, T3, T4, T5, T6, T7>(this Func<T1, T2, T3, T4, T5, T6, T7> func)
            {
                return t1 => t2 => t3 => t4 => t5 => t6 => func(t1, t2, t3, t4, t5, t6);
            }
    
            public static Func<T1, Func<T2, Func<T3, Func<T4, Func<T5, Func<T6, Func<T7, T8>>>>>>> Carry<T1, T2, T3, T4, T5, T6, T7, T8>(this Func<T1, T2, T3, T4, T5, T6, T7, T8> func)
            {
                return t1 => t2 => t3 => t4 => t5 => t6 => t7 => func(t1, t2, t3, t4, t5, t6, t7);
            }
    
            public static Func<T1, Func<T2, Func<T3, Func<T4, Func<T5, Func<T6, Func<T7, Func<T8, T9>>>>>>>> Carry<T1, T2, T3, T4, T5, T6, T7, T8, T9>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9> func)
            {
                return t1 => t2 => t3 => t4 => t5 => t6 => t7 => t8 => func(t1, t2, t3, t4, t5, t6, t7, t8);
            }
    
            public static Func<T1, Func<T2, Func<T3, Func<T4, Func<T5, Func<T6, Func<T7, Func<T8, Func<T9, T10>>>>>>>>> Carry<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> func)
            {
                return t1 => t2 => t3 => t4 => t5 => t6 => t7 => t8 => t9 => func(t1, t2, t3, t4, t5, t6, t7, t8, t9);
            }
    
            public static Func<T1, Func<T2, Func<T3, Func<T4, Func<T5, Func<T6, Func<T7, Func<T8, Func<T9, Func<T10, T11>>>>>>>>>> Carry<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> func)
            {
                return t1 => t2 => t3 => t4 => t5 => t6 => t7 => t8 => t9 => t10 => func(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10);
            }
    
            public static Func<T1, Func<T2, Func<T3, Func<T4, Func<T5, Func<T6, Func<T7, Func<T8, Func<T9, Func<T10, Func<T11, T12>>>>>>>>>>> Carry<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> func)
            {
                return t1 => t2 => t3 => t4 => t5 => t6 => t7 => t8 => t9 => t10 => t11 => func(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11);
            }
    
            public static Func<T1, Func<T2, Func<T3, Func<T4, Func<T5, Func<T6, Func<T7, Func<T8, Func<T9, Func<T10, Func<T11, Func<T12, T13>>>>>>>>>>>> Carry<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> func)
            {
                return t1 => t2 => t3 => t4 => t5 => t6 => t7 => t8 => t9 => t10 => t11 => t12 => func(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12);
            }
    
            public static Func<T1, Func<T2, Func<T3, Func<T4, Func<T5, Func<T6, Func<T7, Func<T8, Func<T9, Func<T10, Func<T11, Func<T12, Func<T13, T14>>>>>>>>>>>>> Carry<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> func)
            {
                return t1 => t2 => t3 => t4 => t5 => t6 => t7 => t8 => t9 => t10 => t11 => t12 => t13 => func(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13);
            }
    
            public static Func<T1, Func<T2, Func<T3, Func<T4, Func<T5, Func<T6, Func<T7, Func<T8, Func<T9, Func<T10, Func<T11, Func<T12, Func<T13, Func<T14, T15>>>>>>>>>>>>>> Carry<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> func)
            {
                return t1 => t2 => t3 => t4 => t5 => t6 => t7 => t8 => t9 => t10 => t11 => t12 => t13 => t14 => func(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14);
            }
    
            public static Func<T1, Func<T2, Func<T3, Func<T4, Func<T5, Func<T6, Func<T7, Func<T8, Func<T9, Func<T10, Func<T11, Func<T12, Func<T13, Func<T14, Func<T15, T16>>>>>>>>>>>>>>> Carry<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> func)
            {
                return t1 => t2 => t3 => t4 => t5 => t6 => t7 => t8 => t9 => t10 => t11 => t12 => t13 => t14 => t15 => func(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15);
            }
    
            public static Func<T1, Func<T2, Func<T3, Func<T4, Func<T5, Func<T6, Func<T7, Func<T8, Func<T9, Func<T10, Func<T11, Func<T12, Func<T13, Func<T14, Func<T15, Func<T16, T17>>>>>>>>>>>>>>>> Carry<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17>(this Func<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17> func)
            {
                return t1 => t2 => t3 => t4 => t5 => t6 => t7 => t8 => t9 => t10 => t11 => t12 => t13 => t14 => t15 => t16 => func(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16);
            }
        }

    А что поделать то....

    kegdan, 18 Января 2014

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

    +7

    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
    #include <iostream>
    #include <alloca.h>
    #include <stdlib.h>
    #include <new>
    using namespace std;
    
    int main(void) {
      const size_t N = 5+rand()%4;
      char* arr = ::new (alloca(N)) char[N]{1,2,3,4};
      for(size_t i=0; i<N; ++i)
        cout<<(int)arr[i]<<endl;
      cout<<"ok";
      return 0;
    }

    http://ideone.com/pax1TF

    LispGovno, 18 Января 2014

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

    +5

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    auto q = db.exec("select name from sqlite_master where type='table'");
    QStringList tables;
    while(q.next()) {
        tables.append(q.value(0).toString());
    }
    if(tables.contains("searchIndex")) {
        types.insert(name, DASH);
    } else {
        types.insert(name, ZDASH);
    }

    Табличек в sqlite скорее всего мало и код должен работать довольно шустро.
    Но сам подход достоен QHP

    https://github.com/jkozera/zeal/blob/master/zeal/zealdocsetsregistry.cpp#L27

    roman-kashitsyn, 18 Января 2014

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

    +15

    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
    #include <vector>
    #include <iostream>
    using namespace std;
    
    // -- tools
    
    // макет времени компиляции определяет количество элементов массива указанного в аргументе
    template<class T, size_t N> char (&Size(  T (&arr)[N] ) )[N];
    
    
    // -- internal closed implementation --
    int data1[] = {0, 1, 2};
    char data2[] = {42};
    
    const int (  &GetMechaData1()  ) [ sizeof( Size(data1) )  ] { return data1; }
    const char(  &GetMechaData2()  ) [ sizeof( Size(data2) )  ] { return data2; }
              
    // -- API
    
    //--- функции возвращают ссылки на массивы: например такого: const int[ sizeof( Size(data1) ]
    const int (  &GetMechaData1()  ) [ sizeof( Size(data1) )  ];
    const char(  &GetMechaData2()  ) [ sizeof( Size(data2) )  ];
    
    
    // client code
    template<class T, size_t N> void ViewArray(const T (&arr)[N])
    {
        cout<<"data stored: \n";
        for( auto& item: arr )
            cout<< "item : "<<item<<endl;
    }
    
    int main()
    {
        ViewArray( GetMechaData1() );
        ViewArray( GetMechaData2() );
        
       return 0;
    }

    http://rextester.com/AEINWM88529

    LispGovno, 18 Января 2014

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

    +64

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    #include <iostream>
    #include <typeinfo>
    
    struct Test {};
    
    int main()
    {
    	std::cout << typeid(int).name() << ", " << typeid(Test).name() << std::endl;
    }

    Очередные КРЕСТОПРОБЛЕМЫ.

    MSVC: int, struct Test
    GCC: i, 4Test

    http://ideone.com/KPsIlP

    Вот что говорит стандарт:

    The class type_info describes type information generated by the implementation. Objects of this class effectively store a pointer to a name for the type, and an encoded value suitable for comparing two types for equality or collating order. The names, encoding rule, and collating sequence for types are all unspecified and may differ between programs.

    RTTI ещё бесполезнее, чем я думала.

    someone, 18 Января 2014

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

    +125

    1. 1
    http://coliru.stacked-crooked.com/a/a5ba510a2075393f

    Под другим ником опубликовал чуть раньше:
    http://govnokod.ru/12937

    crastinus, 18 Января 2014

    Комментарии (42)
  10. Си / Говнокод #14379

    +132

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    rc = system
       (
       "test "
       "`ls -1 $WORKDIR/somedir/ | wc -l` = 1"
       " -a "
       "`ls -1 $WORKDIR/somedir/*/somefiles.* | wc -l` = 1"
       );
    ASSERTM( rc != -1, "check for number of <dirs>" );
    ASSERTM( rc == 0, "number of <some> files is greater than 1" );

    по мотивам http://govnokod.ru/14374

    из теста. да, можно было на С написать. да, мне было просто лень.

    Dummy00001, 17 Января 2014

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