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

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

    −90

    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
    /**
     * better,faster OLD SCHOOL HACKS ^^
     * **/
    public static function compareObject(obj1:Object, obj2:Object):Boolean {
    	var buffer1:ByteArray = new ByteArray();
    	buffer1.writeObject(obj1);
    	var buffer2:ByteArray = new ByteArray();
    	buffer2.writeObject(obj2);
    
    	// compare the lengths
    	var size:uint = buffer1.length;
    	if (buffer1.length == buffer2.length) {
    		buffer1.position = 0;
    		buffer2.position = 0;
    
    		// then the bits
    		while (buffer1.position < size) {
    			var v1:int = buffer1.readByte();
    			if (v1 != buffer2.readByte()) {
    				return false;
    			}
    		}
    		return true;
    	}
    	return false;
    }

    Сравнение объектов сериализацией, по моему такого тут еще не было...

    kostoprav, 02 Апреля 2013

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

    −45

    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
    #include <iostream>
    #include <conio.h>
     
    using namespace std;
     
    void iswap(int &n1, int &n2)
    {
        int temp = n1;
        n1 = n2;
        n2 = temp;
    }
     
    int main()
    {
        int const n = 100;
        int a[n];
        for ( int i = 0; i < n; ++i ) { a[i] = n - i; cout << a[i] << " "; }
            //заполняем массив для наглядности.
            //-----------сортировка------------// 
            //сортирует по-возрастанию. чтобы настроить по-убыванию, 
            //поменяйте знаки сравнения в строчках, помеченных /*(знак)*/
        int sh = 0; //смещение
        bool b = false;
        for(;;)
        {
            b = false;
            for ( int i = 0; i < n; i++ )
            {
                if( i * 2 + 2 + sh < n )
                {
                    if( ( a[i + sh] > /*<*/ a[i * 2 + 1 + sh] ) || ( a[i + sh] > /*<*/ a[i * 2 + 2 + sh] ) )
                    {
                        if ( a[i * 2 + 1 + sh] < /*>*/ a[i * 2 + 2 + sh] ) 
                        {
                            iswap( a[i + sh], a[i * 2 + 1 + sh] );
                            b = true;
                        }
                        else if ( a[i * 2 + 2 + sh] < /*>*/ a[ i * 2 + 1 + sh]) 
                             {
                                 iswap( a[ i + sh], a[i * 2 + 2 + sh]);
                                 b = true;
                             }
                    }
                }
                else if( i * 2 + 1 + sh < n )
                     {
                         if( a[i + sh] > /*<*/ a[ i * 2 + 1 + sh] )
                         {
                             iswap( a[i + sh], a[i * 2 + 1 + sh] );
                             b = true;
                         }
                     }
            }
            if (!b) sh++; //смещение увеличивается, когда на текущем этапе 
                          //сортировать больше нечего
            if ( sh + 2 == n ) break; 
        }  //конец сортировки
     
     
        cout << endl << endl;
        for ( int i = 0; i < n; ++i ) cout << a[i] << " "; 
     
     
        _getch();
        return 0;
    }

    Запостил как-то на вики как более короткая реализация с++, более понятная и главное - рабочая. Не признали. Сам смотрю - не понимаю че там написано )))

    idec, 23 Июня 2012

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

    −40

    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
    #include <stdio.h>
    #include <unistd.h> 
    #include <stdlib.h> 
    #include <string.h>
    #include <iostream>
    #include <string>
    using namespace std;
    
    static char ifnm[100];
    string *tags = new string [100];
    int tags_init(string stag[]){
      int i=0;
      stag[i++]="root";
      stag[i++]="word";
      stag[i++]="english";
      stag[i++]="russian";
      stag[i++]="russian2";
    //  stag[i++]="id";
      return i;
    };
    int main(int argc,char *argv[]){
    FILE *fp;
    if(argc=0){printf("No file name\n");exit(0);}
    strcpy(ifnm,argv[1]);
    fp = fopen(ifnm, "r");
    if (fp == NULL)exit(-1);
      //Error;
    char str[180];
    int tn=tags_init(tags);
    cout<<"<"<<tags[0]<<">"<<endl;
    while(fgets(str, 180,fp))
    {
      fgets(str,180, fp);
      //cout<<str<<endl;
      char *pname;
        pname = strtok (str,"-");
        int ti=0;
        cout<<"<"<<tags[1]<<">"<<endl;
        ti=1;
      while (pname != NULL && ti<=tn)
      {
        ti++;
        cout<<"<"<<tags[ti]<<">"<<endl;
        printf ("\t%s\n",pname);
        cout<<"</"<<tags[ti]<<">"<<endl;
        pname = strtok (NULL, "-");
      }
    cout<<"</"<<tags[1]<<">"<<endl;
    }
    cout<<"</"<<tags[0]<<">"<<endl;
    
    fclose(fp);
    }

    Преобразует текстовый файл в xml формат

    AliceGoth, 21 Июня 2012

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

    +964

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    [Flags]
        public enum ColumnState
        {
            Exist = 1,
            NotExist = 2
        }

    Большинство енумов у нас помечено именно так.

    Irdis, 07 Октября 2011

    Комментарии (58)
  6. Куча / Говнокод #7892

    +74

    1. 1
    Ваш пароль должен состоять из 6-12 букв или цифр нормальной толщины шрифта.

    Не говнокод, но...

    7ion, 18 Сентября 2011

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

    +165

    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
    // header
    
        struct TMWFeatureSet
        {        
            TMWFeatureSet();
            ~TMWFeatureSet();
            
            enum TFeatureSetBitMask
            {
                EBackUpBitMask = 1, 
                ERestoreBitMask = 1 << 1, 
                EWipeBitMask = 1 << 2, 
                ELockBitMask = 1 << 3, 
                ELocateBitMask = 1 << 4, 
                EMessageBitMask = 1 << 5, 
                EScreamBitMask = 1 << 6, 
                EPrintBitMask = 1 << 7, 
                EShareBitMask = 1 << 8
            };
            
            enum TFeatureSet
            {
                EBackUp = 0, 
                ERestore, 
                EWipe, 
                ELock, 
                ELocate, 
                EMessage, 
                EScream,
                EPrint, 
                EShare,
                         
                ECount
            };
            
            
            void SetFeatureAttr( TInt iIndex, TBool aValue );
            
            void Reset( void );
             
            void ExternalizeL( RWriteStream & aOutputStream );
            
            void InternalizeL( RReadStream & aInputStream );
            
            RArray<TFeatureSetBitMask> iBitMasks;
            
            TFixedArray<TBool,ECount> iFeatureSetArr;       
        };        
    
    // implementation
    
        TMWFeatureSet::TMWFeatureSet()
        {
            iBitMasks.Append( EBackUpBitMask );
            iBitMasks.Append( ERestoreBitMask );
            iBitMasks.Append( EWipeBitMask );
            iBitMasks.Append( ELockBitMask );
            iBitMasks.Append( ELocateBitMask );
            iBitMasks.Append( EMessageBitMask );
            iBitMasks.Append( EScreamBitMask );
            iBitMasks.Append( EPrintBitMask );
            iBitMasks.Append( EShareBitMask );         
        }
        
        TMWFeatureSet::~TMWFeatureSet()
        {
            iBitMasks.Close();
        }
        
        void TMWFeatureSet::SetFeatureAttr( TInt iIndex, TBool aValue )
        {
            iFeatureSetArr[ iIndex ] = aValue;
        }
    
        void TMWFeatureSet::Reset( void )
        {
            for( TInt i = ( TInt ) TMWFeatureSet::EBackUp; i < ( TInt ) TMWFeatureSet::ECount; i++ )
            {
                SetFeatureAttr( i, EFalse );
            }
        }
    
        void TMWFeatureSet::ExternalizeL( RWriteStream & aOutputStream )
        {
            for( TInt i = ( TInt ) TMWFeatureSet::EBackUp; i < ( TInt ) TMWFeatureSet::ECount; i++ )
            {
                aOutputStream.WriteUint8L((TUint)iFeatureSetArr[ i ]);
            }
        }
    
        void TMWFeatureSet::InternalizeL( RReadStream & aInputStream )
        {
            for( TInt i = ( TInt ) TMWFeatureSet::EBackUp; i < ( TInt ) TMWFeatureSet::ECount; i++ )
            {
                iFeatureSetArr[ i ] = (TBool) aInputStream.ReadUint8L();
            }
        }

    Это реализация битовой маски и по шаблону Simpleton: реализация простейшей функциональности самым сложным способом известным разработчику.
    По идее надо было как то так:
    int mask;
    .....
    bool IsFeatureAvailable( feature )
    {
    return ( ( mask & feature ) == feature );
    }

    zurg, 12 Мая 2011

    Комментарии (58)
  8. Куча / Говнокод #5120

    +62

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    Уважаемые коллеги!
    Вот и наступает Новый Год!
    Пускай в новом году у каждого будет как можно меньше сбоев и багов!
    Пусть будет профессиональный рост идти по экспоненте! 
    А тем, кто уже профессионалы своего дела - не останавливаться на достигнутом!
    Желаю меньше говнокода в программах, пусть даже с бодуна и на больную голову будет писаться код!
    
    Всех с наступающим, хорошего настроения и веселого празднования!

    1_and_0, 31 Декабря 2010

    Комментарии (58)
  9. PHP / Говнокод #4959

    +163

    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
    <?php
    // Заменить значния, выделенные жирным на действительные
    // Соединяемся с "Мускулом"
     define("MYSQL_HOST","myhost.ru",true);
     define("MYSQL_USER","username",true);
     define("MYSQL_PASS","userpass",true);
     define("MYSQL_DB_N","userdb",true);
     define("MYSQL_DB_N","userstable",true);
     $_MYSQL_CONNECT = false; $_MYSQL_ERROR = -1;
     if ($_MYSQL_CONNECT = @mysql_connect(MYSQL_HOST,MYSQL_USER,MYSQL_PASS))
     {
      if (mysql_select_db(MYSQL_DB_N,$_connect))
      {
       $_MYSQL_ERROR = 0; define("MYSQL_CONNECTED",true,true);
      } else { $_MYSQL_ERROR = 2; define("MYSQL_CONNECTED",false,true); }
     } else { $_MYSQL_ERROR = 1; define("MYSQL_CONNECTED",false,true); }
    // Проверяем значение
    // Определяем список разрешённых неалфавитноцифровых символов
     $_SRCH[0] = '.'; $_SRCH[1] = '_'; $_SRCH[2] = '-'; $_SRCH[3] = ' ';
     if (isset($_POST['user']))
     {
      $_tmp = iconv("UTF-8","CP1251//IGNORE",urldecode($_POST['user']));
      if (ctype_alnum(str_replace($_SRCH,'',$_tmp)) && (strlen($_tmp) < 33))
      {
       if (MYSQL_CONNECTED)
       {
        $_query = 'SELECT * FROM '.MYSQL_US_N." WHERE nick='".$_tmp."'";
        if ($_result = mysql_query($_query,$_MYSQL_CONNECT))
        {
         if ($_row = mysql_fetch_assoc($_result))
         {
          define("_RESULT","RES_EX",true);
         } else { define("_RESULT","RES_OK",true); }
        } else { define("_RESULT","RES_MYSQL_BQ",true); }
       } else { define("_RESULT","RES_MYSQL_NC",true); }
      } else { define("_RESULT","POST_IN",true); }
     } else { define("_RESULT","POST_NS",true); }

    qbasic, 17 Декабря 2010

    Комментарии (58)
  10. Perl / Говнокод #4506

    −126

    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
    sub Tgetent {
        local($TERM) = @_;
        local($TERMCAP,$_,$entry,$loop,$field);
    
        # warn "Tgetent: no ospeed set" unless $ospeed;
        foreach $key (keys %TC) {
    	delete $TC{$key};
        }
        $TERM = $ENV{'TERM'} unless $TERM;
        $TERM =~ s/(\W)/\\$1/g;
        $TERMCAP = $ENV{'TERMCAP'};
        $TERMCAP = '/etc/termcap' unless $TERMCAP;
        if ($TERMCAP !~ m:^/:) {
    	if ($TERMCAP !~ /(^|\|)$TERM[:\|]/) {
    	    $TERMCAP = '/etc/termcap';
    	}
        }
        if ($TERMCAP =~ m:^/:) {
    	$entry = '';
    	do {
    	    $loop = "
    	    open(TERMCAP,'<$TERMCAP') || die \"Can't open $TERMCAP\";
    	    while (<TERMCAP>) {
    		next if /^#/;
    		next if /^\t/;
    		if (/(^|\\|)${TERM}[:\\|]/) {
    		    chop;
    		    while (chop eq '\\\\') {
    			\$_ .= <TERMCAP>;
    			chop;
    		    }
    		    \$_ .= ':';
    		    last;
    		}
    	    }
    	    close TERMCAP;
    	    \$entry .= \$_;
    	    ";
    	    eval $loop;
    	} while s/:tc=([^:]+):/:/ && ($TERM = $1);
    	$TERMCAP = $entry;
        }
    
        foreach $field (split(/:[\s:\\]*/,$TERMCAP)) {
    	if ($field =~ /^\w\w$/) {
    	    $TC{$field} = 1;
    	}
    	elsif ($field =~ /^(\w\w)#(.*)/) {
    	    $TC{$1} = $2 if $TC{$1} eq '';
    	}
    	elsif ($field =~ /^(\w\w)=(.*)/) {
    	    $entry = $1;
    	    $_ = $2;
    	    s/\\E/\033/g;
    	    s/\\(200)/pack('c',0)/eg;			# NUL character
    	    s/\\(0\d\d)/pack('c',oct($1))/eg;	# octal
    	    s/\\(0x[0-9A-Fa-f][0-9A-Fa-f])/pack('c',hex($1))/eg;	# hex
    	    s/\\(\d\d\d)/pack('c',$1 & 0177)/eg;
    	    s/\\n/\n/g;
    	    s/\\r/\r/g;
    	    s/\\t/\t/g;
    	    s/\\b/\b/g;
    	    s/\\f/\f/g;
    	    s/\\\^/\377/g;
    	    s/\^\?/\177/g;
    	    s/\^(.)/pack('c',ord($1) & 31)/eg;
    	    s/\\(.)/$1/g;
    	    s/\377/^/g;
    	    $TC{$entry} = $_ if $TC{$entry} eq '';
    	}
        }
        $TC{'pc'} = "\0" if $TC{'pc'} eq '';
        $TC{'bc'} = "\b" if $TC{'bc'} eq '';
    }

    Гениальный код.

    Arigato, 01 Ноября 2010

    Комментарии (58)
  11. Си / Говнокод #4029

    +144

    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
    #include <stdio.h>
    
    main()
    {
        char old[1000];
        char new[1000];
        int i;                      /*счетчик цикла длинны массива */
        int z;                      /*счетчик нового массива */
        int l;                      /*длинна массива */
        int c;                      /*член массива */
        l = 0;
        z = 0;
    
        printf
            ("программа удаления повторяющихся символов\n");
        printf
            ("введите последовательности символов, из которых нужно удалить повторяющиеся, по окончании вводна нажмите Ctrl+D \n");
    
    
        while ((c = getchar()) != EOF) {
            old[l] = c;
            l++;
        }
        old[l] = 0;
    
        printf
            ("Введите символ, который нужно удадить как повторяющийся\n");
        c = getchar();
    
    
        for (i = 0; i < l; i++) {
    
            if (old[i] != c) {
                new[z] = old[i];
                z++;
            } else if (old[i] == c && old[i + 1] != c) {    /*один символ из повторяющихся */
                new[z] = old[i];
                z++;
            }
    
        }
        new[z] = 0;
        printf("%s\n", new);
        printf("*end");
    }

    Сорри за флуд, но тут форматирование полутше.

    killer1804, 19 Августа 2010

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