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

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

    +72

    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
    @Entity
    public class MyObject {
        @Column
        private int type;
    
        @Id
        private long id;
    
        @Column
        private String name;
    
        // и ещё другие поля, а также геттеры-сеттеры для них, в общем, обычная сущность
    }
    
    // managed bean в jsp 1.2 (legacy проект)
    public class MyList {
        private List<MyObject> oList;
        private SimpleDateFormat filterDateFormat;
    
        public MyList() {
            filterDateFormat = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
        }
    
        public List<MyObject> getMyList() {
            if (oList == null) {
                oList = DAO.getDAO().findAllMyObjects();
                String name = ...; // берётся из формы
                if (name != null && name != "") {
                    oList = getObjectsByName(name, oList);
                }
                Integer type = ...; // тоже берётся из формы
                if (type != null) {
                    oList = getObjectsByType(type, oList);
                }
                // и здесь ещё четыре куска такого же говнокода для других свойств MyObject
            }
            return oList;
        }
    
        private List<MyObject> getObjectsByType(Integer type, List<MyObject> oList) {
            List<MyObject> queriesByType = new ArrayList<MyObject>();
            for (MyObject o : oList) {
                if (o.getType() == type) {
                    queriesByType.add(o);
                }
            }
            return queriesByType;
        }
    
        private List<MyObject> getObjectsByName(String name, List<MyObject> oList) {
            List<MyObject> queriesByName = new ArrayList<MyObject>();
            for (MyObject o : oList) {
                if (o.getName() == name) {
                    queriesByName.add(o);
                }
            }
            return queriesByName;
        }
    
        // и ещё четыре таких же говнометода для других свойств MyObject
    }

    Наглядное руководство, как не надо работать с JPA

    evg_ever, 28 Января 2014

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

    +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
    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
    align.h: 
    #pragma once
    #include "stdint.h"
    namespace tblib 
    {
      template <typename T>
      struct check_align
      {
        uint8_t c;
        T t;
        check_align();
        check_align(const check_align&);
        check_align&operator=(const check_align&);
      };
    
      template <typename T>
      struct align_value
      {
        enum { value = sizeof(check_align<T>)-sizeof(T) };
      };
    
      template <int N>
      struct align_by_size;
    
      template <> 
      struct align_by_size<1> { uint8_t guts; };
    
      template <> 
      struct align_by_size<2> { uint16_t  guts; };
    
      template <> 
      struct align_by_size<4> { uint32_t guts; };
    
      template <> 
      struct align_by_size<8> { uint64_t guts; };
    
      template <typename T>
      struct align
      {
        align_by_size<align_value<T>::value> guts;
      };
    };
     класс массива (начало), файл tbarr.h: 
    #pragma once
    
    #include "stdint.h"
    #include "assert.h"
    #include <algorithm>
    #include "tbslice.h"
    #include "align.h"
    
    // FUCK THE EXCEPTIONS
    
    template <typename T>
    void construct (T* first, T* last) {
      while (first!=last)  {
        new(first) T;
        ++first;
      }
    }
    
    template <typename T>
    void destroy (T* first, T* last)  {
      while (last!=first)  {
        --last;
        last->~T();
      }
    }
    
    namespace tblib
    {  
      template <typename T, int N>
      class base_array
      {
        union
        {
          uint8_t memory [sizeof(T[N])];
          align<T> aligner;
        };
      public :

    мой выравниватель
    намного красивее бустовского, не так ли?

    TarasB, 27 Января 2014

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

    +137

    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
    if (!string.IsNullOrEmpty(date))
    			{
    				var result = date.Split('.');
    				filter.TenderDate.Start = new DateTime(
    					Convert.ToInt16(result[2]),
    					Convert.ToInt16(result[1]),
    					Convert.ToInt16(result[0]),
    					0,
    					0,
    					0);
    				filter.TenderDate.End = new DateTime(
    					Convert.ToInt16(result[2]),
    					Convert.ToInt16(result[1]),
    					Convert.ToInt16(result[0]),
    					23,
    					59,
    					59);
    			}

    Парсинг дат? Не, не слышал.

    xumix, 14 Декабря 2013

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

    −162

    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
    С'шная либа: http://fossies.org/dox/imlib2-1.4.5/image_8c_source.html
    
    смотрим код сохраняющий картинку:
    
     1241 __imlib_SaveImage(ImlibImage * im, const char *file,
     1242                   ImlibProgressFunction progress, char progress_granularity,
     1243                   ImlibLoadError * er)
    ..........................................
    ..........................................
    
     1290         *er = IMLIB_LOAD_ERROR_UNKNOWN;
     1291         if (errno == EEXIST)
     1292            *er = IMLIB_LOAD_ERROR_FILE_DOES_NOT_EXIST;
     1293         else if (errno == EISDIR)
     1294            *er = IMLIB_LOAD_ERROR_FILE_IS_DIRECTORY;
     1295         else if (errno == EISDIR)
     1296            *er = IMLIB_LOAD_ERROR_FILE_IS_DIRECTORY;
     1297         else if (errno == EACCES)
     1298            *er = IMLIB_LOAD_ERROR_PERMISSION_DENIED_TO_WRITE;
     1299         else if (errno == ENAMETOOLONG)
     1300            *er = IMLIB_LOAD_ERROR_PATH_TOO_LONG;
     1301         else if (errno == ENOENT)
     1302            *er = IMLIB_LOAD_ERROR_PATH_COMPONENT_NON_EXISTANT;
     1303         else if (errno == ENOTDIR)
     1304            *er = IMLIB_LOAD_ERROR_PATH_COMPONENT_NOT_DIRECTORY;
     1305         else if (errno == EFAULT)
     1306            *er = IMLIB_LOAD_ERROR_PATH_POINTS_OUTSIDE_ADDRESS_SPACE;
     1307         else if (errno == ELOOP)
     1308            *er = IMLIB_LOAD_ERROR_TOO_MANY_SYMBOLIC_LINKS;
     1309         else if (errno == ENOMEM)
     1310            *er = IMLIB_LOAD_ERROR_OUT_OF_MEMORY;
     1311         else if (errno == EMFILE)
     1312            *er = IMLIB_LOAD_ERROR_OUT_OF_FILE_DESCRIPTORS;
     1313         else if (errno == ENOSPC)
     1314            *er = IMLIB_LOAD_ERROR_OUT_OF_DISK_SPACE;
     1315         else if (errno == EROFS)
     1316            *er = IMLIB_LOAD_ERROR_PERMISSION_DENIED_TO_WRITE;
    
    обращаем внимание на строки *er =
    в них записываются разные типы ошибок, обращаем внимаение на то, сколько типов используется
    
    теперь берем перловую обертку: Image::Imlib2 (http://search.cpan.org/~lbrocard/Image-Imlib2-2.03/lib/Image/Imlib2.pm)
    находим метод сохранения картинки, он в xs части lib/Image/Imlib2.xs
    
    void
    Imlib2_save(image, filename)
        Image::Imlib2   image
        char * filename
    
        PROTOTYPE: $$
    
            CODE:
        {
                    Imlib_Load_Error err;
    
            imlib_context_set_image(image);
            imlib_save_image_with_error_return(filename, &err);
    
                    if (err != IMLIB_LOAD_ERROR_NONE) {
                      Perl_croak(aTHX_ "Image::Imlib2 save error: Unknown error");
                    }
        }
    
    
    imlib_save_image_with_error_return вызывает в конечном итоге __imlib_SaveImage из C'шной либы
    обращаем внимание на то, как теперь подробно можно узнать о том, почему не удалось сохранить картинку
    
    пример вывода такого кода в случае ошибки:
    
    Image::Imlib2 save error: Unknown error at BL/Class/Image.pm line 608.
    
    до тех пор, пока есть такие гении, я не беспокоюсь о своем хлебе

    m0r1k, 18 Октября 2013

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

    +77

    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
    #include <iostream>
    using namespace std;
    
    int binsearch(int* arr, int s, int r, int l, int t){
        int m=(l+r)/2;
        if (*(arr+m) == s) return m; // t - искомое
        if (m == l || m == r) return 0;
        if (*(arr+m) < s) binsearch(arr, s, m, r, t);
        else binsearch(arr, s, l, m, t);
        }
    
    int main()
    {
        int n, k;
        cin >> k;
        cin >> n;
        int A[n-1];
        for (int i = 0; i < n; i++){
            cin >> A[i];
        }
        cout << binsearch(A, k, n-1, 0, 0);
    }

    Требуется найти число K в упорядоченном массиве из N элементов и
    определить чему равен номер соответствующего элемента массива.
    Если элемент не найден, то вывести 0.

    Входные данные
    В первой строке расположено искомое число К.
    Во второй - количество элементов в массиве N <= 10000.
    Далее расположены N целых чисел, упорядоченных по возрастанию.

    Выходные данные
    Выведите наименьший номер найденного значения, или 0, если элемент не найден.

    Проблема у меня в том, что не получается найти минимальный из подходящих ( Помогите пофиксить!

    aesc_smirnov, 03 Октября 2013

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

    +133

    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
    private bool IsSubscriptionFree()
    {
        try
        {
            if (AccountManager.CurrentManager.CurrentSubscription != null)
            {
                if (AccountManager.CurrentManager.CurrentSubscription.IsValid)
                {
                    if (AccountManager.CurrentManager.CurrentSubscription.Name.ToLower().Contains("free") ||
                        AccountManager.CurrentManager.CurrentSubscription.Name.ToLower().Contains("trial")
                    )
                    {
                        return true;
                    }
                }
                return false;
            }
            return false;
        }
        catch (Exception)
        {
            return false;
        }
    }

    Eugene, 25 Июня 2013

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

    +18

    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
    std::tuple<std::vector<long double> , std::vector<std::vector<long double> > , std::vector<long double> >
    inline
    training(const std::size_t hidden_neurons,
             const long double hlr,
             const std::size_t epochs,
             const std::vector< long double > train_ou,
             const std::vector< std::vector< long double > >& train_in,
             volatile bool * reset)
    {
    
    
        auto train_inp = train_in;
        auto train_out = train_ou;
    //    std::cerr << "hidden_neurons: " << hidden_neurons << std::endl;
    //    std::cerr << "hlr: " << hlr << std::endl;
    //    std::cerr << "epochs: " << epochs << std::endl;
    //    std::cerr << "train_inp: " << train_inp << std::endl;
    //    std::cerr << "train_out: " << train_out << std::endl;
    
        const auto mu_inp = mean( train_inp );
        const auto sigma_inp = stand( train_inp );
        train_inp = ( train_inp - mu_inp[ 0 ] ) / sigma_inp[ 0 ];
        const auto mu_out = mean( train_out );
        const auto sigma_out = stand( train_out );
        train_out = ( train_out - mu_out ) / sigma_out;
        const auto patterns = size( train_inp ).first;
    
        std::cout << "patterns: " << patterns << std::endl;
        auto bias = ones( patterns );
        train_inp = merge( train_inp, bias );
        const auto inputs = size( train_inp ).second;
    
        std::vector< long double > err( epochs );
    
        auto weight_input_hidden = ( randn( inputs, hidden_neurons) - 0.5l ) / 10.0l;
        auto weight_hidden_output = ( randn( hidden_neurons ) - 0.5l ) / 10.0l;
    
        for( std::size_t i = 0; i < epochs; ++i ) {
            if ( *reset ) {
                break;
            }
            const auto alr = hlr;
            const auto blr = alr / 10.0;
            for( std::size_t j = 0; j < patterns; ++j ){
                const auto patnum = ( static_cast<std::size_t>( round( randd() * patterns + 0.5 ) ) - 1 ) % patterns;
                const auto this_pat = train_inp[ patnum ];
                const auto act = train_out[ patnum ];
                const auto hval = feval( []( const long double & v ){ return std::tanh( v ); }, this_pat * weight_input_hidden );
                const auto pred = hval * weight_hidden_output;
                const auto error = pred - act;
                const auto delta_HO = hval * error * blr;
                weight_hidden_output = weight_hidden_output - delta_HO;
                const auto m1 = weight_hidden_output * alr * error;
                const auto m2 = 1.0l - (hval^2);
                const auto m3 = dot_operator( m1, m2, std::multiplies< long double >());
                const auto m4 = vec_to_vecvec( m3 );
                const auto delta_IH = m4 * this_pat;
                weight_input_hidden = weight_input_hidden - trans( delta_IH );
            }
            const auto p1 = feval( []( const long double& v ){ return std::tanh( v ); }, train_inp * weight_input_hidden );
            const auto pred = weight_hidden_output * trans( p1 );
            const auto error = pred - train_out;
            const auto error_sq = error ^ 2;
            err[ i ] = std::sqrt( std::accumulate( error_sq.cbegin(), error_sq.cend(), 0.0, std::plus<long double> () ) );
            std::cerr << "err[ i ]: " << err[ i ] << ' ' << i <<  std::endl;
        }
        return std::move(std::make_tuple(weight_hidden_output, weight_input_hidden, err));
    }

    Велосипедостроение

    Abbath, 19 Июня 2013

    Комментарии (31)
  9. SQL / Говнокод #13156

    −162

    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
    96. 96
    97. 97
    RIGHT(
      CAST( LTRIM(STR(cast(trip_no&(2*2*2*2*2*2*2*2*2*2*2*2*2) as bit)))
    +LTRIM(STR(CAST(TRIP_NO&(2*2*2*2*2*2*2*2*2*2*2*2) AS BIT)))
     +LTRIM(STR(CAST(TRIP_NO&(2*2*2*2*2*2*2*2*2*2*2) AS BIT))) 
    +LTRIM(STR(CAST(TRIP_NO&(2*2*2*2*2*2*2*2*2*2) AS BIT)))
     +LTRIM(STR(CAST(TRIP_NO&(2*2*2*2*2*2*2*2*2) AS BIT)))
     +LTRIM(STR(CAST(TRIP_NO&(2*2*2*2*2*2*2*2) AS BIT))) 
    +LTRIM(STR(CAST(TRIP_NO&(2*2*2*2*2*2*2) AS BIT)))
    +LTRIM(STR(CAST(TRIP_NO&(2*2*2*2*2*2) AS BIT)))
     +LTRIM(STR(CAST(TRIP_NO&(2*2*2*2*2) AS BIT)))
     +LTRIM(STR(CAST(TRIP_NO&(2*2*2*2) AS BIT)))
     +LTRIM(STR(CAST(TRIP_NO&(2*2*2) AS BIT)))
     +LTRIM(STR(CAST(TRIP_NO&(2*2) AS BIT)))
     +LTRIM(STR(CAST(TRIP_NO&(2) AS BIT))) +LTRIM(STR(CAST(TRIP_NO&1 AS BIT))) AS VARCHAR ),
        
    len(
    
    CAST( LTRIM(STR(cast(trip_no&(2*2*2*2*2*2*2*2*2*2*2*2*2) as bit)))
    +LTRIM(STR(CAST(TRIP_NO&(2*2*2*2*2*2*2*2*2*2*2*2) AS BIT))) 
    +LTRIM(STR(CAST(TRIP_NO&(2*2*2*2*2*2*2*2*2*2*2) AS BIT))) 
    +LTRIM(STR(CAST(TRIP_NO&(2*2*2*2*2*2*2*2*2*2) AS BIT)))
    +LTRIM(STR(CAST(TRIP_NO&(2*2*2*2*2*2*2*2*2) AS BIT)))
     +LTRIM(STR(CAST(TRIP_NO&(2*2*2*2*2*2*2*2) AS BIT)))
    +LTRIM(STR(CAST(TRIP_NO&(2*2*2*2*2*2*2) AS BIT))) 
    +LTRIM(STR(CAST(TRIP_NO&(2*2*2*2*2*2) AS BIT)))
     +LTRIM(STR(CAST(TRIP_NO&(2*2*2*2*2) AS BIT))) 
    +LTRIM(STR(CAST(TRIP_NO&(2*2*2*2) AS BIT)))
     +LTRIM(STR(CAST(TRIP_NO&(2*2*2) AS BIT))) 
    +LTRIM(STR(CAST(TRIP_NO&(2*2) AS BIT))) 
    +LTRIM(STR(CAST(TRIP_NO&(2) AS BIT))) +LTRIM(STR(CAST(TRIP_NO&1 AS BIT))) AS VARCHAR )
    )
    -
    cast(
    CHARINDEX('1',
    CAST(
    LTRIM(STR(cast(trip_no&(2*2*2*2*2*2*2*2*2*2*2*2*2) as bit)))+
    LTRIM(STR(cast(trip_no&(2*2*2*2*2*2*2*2*2*2*2*2) as bit)))
    +LTRIM(STR(cast(trip_no&(2*2*2*2*2*2*2*2*2*2*2) as bit)))
    +LTRIM(STR(cast(trip_no&(2*2*2*2*2*2*2*2*2*2) as bit)))
    +LTRIM(STR(cast(trip_no&(2*2*2*2*2*2*2*2*2) as bit)))
    ..................................................................................................................................................................................
              +    2*t02.bin
              +    4*t03.bin
              +    8*t04.bin
              +   16*t05.bin
              +   32*t06.bin
              +   64*t07.bin
              +  128*t08.bin
              +  256*t09.bin
              +  512*t10.bin
              + 1024*t11.bin
              + 2048*t12.bin
              + 4096*t13.bin
              + 8192*t14.bin
              +16384*t15.bin
              +32768*t16.bin
             ) AS n_10
           , (
              CAST(t16.bin AS CHAR(1))
             +CAST(t15.bin AS CHAR(1))
             +CAST(t14.bin AS CHAR(1))
             +CAST(t13.bin AS CHAR(1))
             +CAST(t12.bin AS CHAR(1))
             +CAST(t11.bin AS CHAR(1))
             +CAST(t10.bin AS CHAR(1))
             +CAST(t09.bin AS CHAR(1))
             +CAST(t08.bin AS CHAR(1))
             +CAST(t07.bin AS CHAR(1))
             +CAST(t06.bin AS CHAR(1))
             +CAST(t05.bin AS CHAR(1))
             +CAST(t04.bin AS CHAR(1))
    ......................................................................................................................................................................
    100000000000000*        (trip_no/2/2/2/2/2         /2/2/2/2/2/2/2/2/2%2)+
      10000000000000*      (trip_no/2/2/2/2/2/2       /2/2/2/2/2/2/2%2)+
      1000000000000*     (trip_no/2/2/2/2/2/2/      2/2/2/2/2/2%2)+
      100000000000*     (trip_no  /2/2/2/2/2/      2/2/2/2/2/2%2)+
       10000000000*   (trip_no    /2/2/2/2/2/     2/2/2/2/2%2)+
       1000000000*   (trip_no      /2/2/2/2/     2/2/2/2/2%2)+
        100000000*  (trip_no        /2/2/2/2    /2/2/2/2%2)+
        10000000*  (trip_no          /2/2/2/    2/2/2/2%2)+
         1000000* (trip_no           /2/2/2/   2/2/2%2)+
          100000* (trip_no            /2/2/2/  2/2%2)+
           10000* (trip_no              /2/2/  2/2%2)+
             1000*(trip_no               /2/2/ 2%2)+
              100*(trip_no                  /2/2%2)+
               10*(trip_no                     /2%2)+
                  1*(trip_no                       %2)
    ..................................................................................................................................................................
    		CASE WHEN trip_no/32768>0 		THEN CAST((trip_no & 32768)/32768	AS varchar)ELSE '' END +
    		CASE WHEN trip_no/16384>0 		THEN CAST((trip_no & 16384)/16384   AS varchar)ELSE '' END +
    		CASE WHEN trip_no/8192>0 		THEN CAST((trip_no & 8192)/8192		AS varchar)ELSE ''END+
    		CASE WHEN trip_no/4096>0 		THEN CAST((trip_no & 4096)/4096		AS varchar)ELSE ''END+
    		CASE WHEN trip_no/2048>0 		THEN CAST((trip_no & 2048)/2048		AS varchar)ELSE ''END+
    		CASE WHEN trip_no/1024>0 		THEN CAST((trip_no & 1024)/1024		AS varchar)ELSE ''END+
    		CASE WHEN trip_no/512>0 		THEN CAST((trip_no & 512)/512		AS varchar)ELSE ''END+
    ..............................................................................................................................
    --И еще с десяток таких же

    Еще выдержки из вариатов с sql-ex.
    Задача:Предполагая, что не существует номера рейса большего 65535, вывести номер рейса и его представление в двоичной системе счисления (без ведущих нулей)

    Как всегда обращаю внимание, что выложенны только части вариантов решения и они не могут быть поданы за свои кем-либо.

    crastinus, 11 Июня 2013

    Комментарии (31)
  10. C++ / Говнокод #12843

    +16

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    for (;!pool.isEmpty() || started;) {
                for (;!pool.isEmpty();) {
                    GramophoneEvent event = pool.poll();
                    event.apply(handler);
                }

    while для слабаков!

    ArtFeel, 02 Апреля 2013

    Комментарии (31)
  11. C# / Говнокод #12776

    +136

    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
    private void StatusMsg(string message, int delay = 1000)
     {
          lock (_msgQueue)
          {
            if (_msgQueue.ContainsKey(message))
            {
              int i = 1;
              message = String.Format("{0} {1}", message, i);
              while (_msgQueue.ContainsKey(message))
              {
                message = String.Format("{0} {1}", message.Substring(0, message.LastIndexOf(' ')), i++);
              }
            }
            _msgQueue.Add(message, delay);
          }
     }

    Чёто я не понимаю

    taburetka, 21 Марта 2013

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