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

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

    +20

    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
    class TCP1251ToUTF16StringConverter
    {
    public:
    	static WideChar convert(Char Source)
    	{
    		WideChar Result=static_cast<unsigned char>(Source);
    		const WideChar Russian_YO=static_cast<unsigned char>('Ё');
    		const WideChar Russian_yo=static_cast<unsigned char>('ё');
    		const WideChar RussianWide_YO=L'Ё';
    		const WideChar RussianWide_yo=L'ё';
    		const WideChar Russian_A=static_cast<unsigned char>('А');
    		const WideChar RussianWide_A=L'А';
    		const unsigned int AmountOfSymbols=0x40;
    		if(Result==Russian_YO)
    			return RussianWide_YO;
    		if(Result==Russian_yo)
    			return RussianWide_yo;
    		if(Result>=Russian_A&&Result<Russian_A+AmountOfSymbols)
    			return (Result-Russian_A+RussianWide_A);
    		return Result;
    	};
    	
    	static void convert(PwideChar UTF16StringDestination, PChar CP1251WinEngRusStringSource, const size_t TextLength)
    	{
    		assert(CP1251WinEngRusStringSource!=NULL);
    		size_t i=0;
    		for(;;)
    		{
    			if(i>=TextLength)
    				break;
    			assert(i<TextLength);
    			Char CP1251SourceChar=CP1251WinEngRusStringSource[i];
    			if(CP1251SourceChar=='\0')
    				break;
    			UTF16StringDestination[i]=convert(CP1251SourceChar);
    			++i;			
    		};
    		UTF16StringDestination[i]=L'\0';
    		assert(i<=TextLength);
    	};
    	
    	static std::wstring convert(const std::string& CP1251WinEngRusStringSource)
    	{
    		assert(CP1251WinEngRusStringSource.c_str()!=NULL);
    		std::wstring UTF16StringDestination;
    		std::transform(CP1251WinEngRusStringSource.begin(), CP1251WinEngRusStringSource.end(), std::inserter(UTF16StringDestination, UTF16StringDestination.end())/*std::back_inserter(UTF16StringDestination)*//*VC 6.0 compatible*/, makePointerToFunction(convertChar));
    		return UTF16StringDestination;
    	};
    	
    private:
    	static WideChar convertChar(char Source)
    	{
    		return convert(Source);
    	};
    };
    
    template<const size_t MaxAmountOfChar>
    class TCP1251ToUTF16StringInPlaceConverter
    {
    public:
    	TCP1251ToUTF16StringInPlaceConverter(PChar CP1251WinEngRusStringSource)
    	{
    		STATIC_ASSERT(MaxAmountOfChar>0, MaxAmountOfChar_must_be_above_zero);
    		TCP1251ToUTF16StringConverter::convert(&(_buffer[0]), CP1251WinEngRusStringSource, MaxAmountOfChar);
    	};
    	
    	TCP1251ToUTF16StringInPlaceConverter(PChar CP1251WinEngRusStringSource, const size_t TextLength)
    	{
    		STATIC_ASSERT(MaxAmountOfChar>0, MaxAmountOfChar_must_be_above_zero);
    		assert(TextLength<=MaxAmountOfChar);
    		TCP1251ToUTF16StringConverter::convert(&(_buffer[0]), CP1251WinEngRusStringSource, TextLength);
    	};
    	
    	void convert(PChar CP1251WinEngRusStringSource)
    	{
    		TCP1251ToUTF16StringConverter::convert(&(_buffer[0]), CP1251WinEngRusStringSource, MaxAmountOfChar);
    	};
    	
    	void convert(PChar CP1251WinEngRusStringSource, const size_t TextLength)
    	{
    		assert(TextLength<=MaxAmountOfChar);
    		TCP1251ToUTF16StringConverter::convert(&(_buffer[0]), CP1251WinEngRusStringSource, TextLength);
    	};
    	
    	PWideChar Get(void) const
    	{
    		return &(_buffer[0]);
    	};
    	
    	PwideChar Get(void)
    	{
    		return &(_buffer[0]);
    	};
    	
    	wideChar _buffer[MaxAmountOfChar+1];
    };

    USB, 02 Августа 2012

    Комментарии (43)
  3. Си / Говнокод #11347

    +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
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    int * lPtr=item;
    int * lPtrEnd = item + count;
    
    for (lPtr = item ; lPtr < lPtrEnd && *lPtr<fid ; lPtr+=4);
    if( lPtr >= lPtrEnd ) lPtr=lPtrEnd-1; // last element
    if(*lPtr != fid)
    {
            if(--lPtr >=item)
            {   
                    if(*lPtr!= fid)
                    {   
                            if(--lPtr >=item)
                            {   
                                    if(*lPtr!= fid)
                                    {   
                                            if(--lPtr >=item)
                                            {   
                                                    if(*lPtr!= fid)
                                                    {   
                                                            break; // value not found
                                                    }   
                                            } else break;
                                    }   
                            }  else break;
                    }   
            } else break;
    }
    
    
    if( lPtr > item)
    {
            while ( *(lPtr-1) == fid && lPtr > item) lPtr--; // first ocurence of fid
    }

    Быстрый алгоритм поиска

    wtfcode, 03 Июля 2012

    Комментарии (43)
  4. PHP / Говнокод #10944

    +53

    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
    <?php $args = array(  
            'type'                     => 'post'  
            ,'child_of'                 => 0  
            ,'parent'                   => ''  
            ,'orderby'                  => 'name'  
            ,'order'                    => 'ASC'  
            ,'hide_empty'               => 1  
            ,'hierarchical'             => 1  
            ,'exclude'                  => ''  
            ,'include'                  => ''  
            ,'number'                   => 0  
            ,'taxonomy'                 => 'category'  
            ,'pad_counts'               => false );?> 
    
    http://wp-kama.ru/function/get_categories

    взял тут: http://wp-kama.ru/function/get_categories

    Видимо у него в учебнике так было:

    У лукоморья дуб зелёный
    ;Златая цепь на дубе том
    :И днём и ночью кот учёный
    Всё ходит по цепи кругом
    ;Идёт направо - песнь заводит
    ,Налево - сказку говорит
    ...

    А.С. Пушкин

    irvis, 13 Июня 2012

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

    −122

    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
    #!/usr/bin/perl
    use strict;
    
    # немного настроек
    my $url = "http://govnokod.ru/comments";
    my $min_delay = 2*60;
    my $max_delay = 30*60;
    my $delay_slowdown = 2;
    
    # получение идентификатора последнего коммента
    sub get_last_comment_info {
        print STDERR "Checking for the new comments...\n";
        my @content = `curl "$url" 2>/dev/null`;
        my $s = join(' ', @content);
        if ($s =~ /<a href=".*?\/(\d+)#comment(\d+)"/) {
            print STDERR "Last comment id was $2 in the thread $1\n";
            return ("thread" => $1, "comment" => $2);
        }
        print "Can't get new comments\n";
        return ();
    }
    
    # отправка сообщения
    sub notify {
        my ($id) = @_;
        print STDERR "Sending notify about $id\n";
        `notify-send "Кто-то наложил в $id"`;
    }
    
    my $last_id = undef;
    my $delay = $min_delay;
    while (1) {
        # смотрим есть ли новый коммент
        if (my %r = get_last_comment_info()) {
            if (defined($last_id) && $r{"comment"} > $last_id) {
                $delay = $min_delay;
                notify($r{"thread"});
            }
            $last_id = $r{"comment"};
        }
        # спим
        print STDERR "Sleeping for $delay seconds...\n";
        sleep($delay);
        # пересчитываем задержку
        $delay = $delay * $delay_slowdown;
        $delay = $max_delay if ($delay > $max_delay);
    }

    Говноскрипт для мониторинга сточных вод.

    bormand, 27 Мая 2012

    Комментарии (43)
  6. JavaScript / Говнокод #9118

    +158

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    $(function()
    	{
    		$(function(){
    // что-то
    		});
    	}
    	);

    Lure Of Chaos, 15 Января 2012

    Комментарии (43)
  7. Pascal / Говнокод #9061

    +87

    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
    procedure GenerateMines; // Процедура генерации мин
    label
    again;
    var
    t,m:Integer; // Переменные для цикла
    i,j:Byte; // Координаты на поле
    bufer:String; // Вспомогательная переменная цикла. Хранит текущие сгенерированные координаты мины для записи в массив
    begin
    Randomize;
    for t:= 1 To mines Do
    begin
    again:
      i:=Round(Random*9+1);
      j:=Round(Random*9+1);
      bufer:=IntToStr(i) + ',' + IntToStr(j); // Создание строковой записи коордитаты мины
      for m:= 1 To 100 Do // Цикл для проверки, есть ли сгенерированная координата в массиве
      begin
        if bufer = mines_a[m] then goto again; // Если сгенерированная координата в массиве есть, то программа генерирует новые координаты
      end;
      mines_a[t]:=bufer; // Запись новой координаты в массив
      field[i,j]:=9; // Добавление мины на поле в сгенерированные координаты
    end;
    end;

    Процедура генерации мин в сапёре. Говно или не?

    SmseR, 10 Января 2012

    Комментарии (43)
  8. PHP / Говнокод #8225

    +165

    1. 1
    $idlink = rawurlencode(base64_encode($name . "||" . $email . "||" . md5( $password1 ) . "||" . $accountID_1 . "||" . $accountID_2 . "||" . $accountID_3 . "||" . $serverid_1 . "||" . $serverid_2 . "||" . $serverid_3 . "||" . md5( sha1( $name . $email . DBHOST . DBNAME . $config['key'] ) ) ) );

    Значит так, ребята. Готовьтесь воспринимать. Данные с регистрационной формы кодируются как только можно, потом с этим кодом генерируется ссылка и отправляется письмо с подтверждением регистрации. Когда новый пользователь переходит по ссылочке, данные берутся из базы, снова кодируются и сравниваются с кодом из ссылки.

    Пы.Сы. Код не мой

    kindofbear, 18 Октября 2011

    Комментарии (43)
  9. Java / Говнокод #8015

    +73

    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
    static class CheckBoxCellRenderer extends JCheckBox implements ListCellRenderer {
    
        public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
            if (value instanceof CheckBoxListElement) {
                CheckBoxListElement cblel = (CheckBoxListElement) value;
                if (isSelected) {
                    setBackground(list.getSelectionBackground());
                    setForeground(list.getSelectionForeground());
                }
                else {
                    setBackground(list.getBackground());
                    setForeground(list.getForeground());
                }
                setSelected(cblel.isSelected());
                setText(cblel.getText());
                return this;
            }
            else {
                throw new RuntimeException();
            }
        }
            
    }

    Модель просто не должна быть другой...

    dwinner, 28 Сентября 2011

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

    +146

    1. 1
    2. 2
    3. 3
    4. 4
    void crash()
    {
        (( void(*)() )0)();
    }

    Good crash :D

    petersvp, 11 Сентября 2011

    Комментарии (43)
  11. Java / Говнокод #7711

    +76

    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
    public class Sorting {  
    
        private static void swapElements(int[] arr, int index1, int index2) {
            int temp = arr[index1];
            arr[index1] = arr[index2];
            arr[index2] = temp;
        }
    
        public static void mergeSort(int[] arr) {
            if (arr.length == 1) {
                return;
            }        
            final int temp = (arr.length % 2 == 0) ? arr.length / 2 : (arr.length + 1) / 2;
    
            int[] left = new int[temp];
            int[] right = new int[arr.length / 2];
            System.arraycopy(arr, 0, left, 0, temp);
            System.arraycopy(arr, temp, right, 0, arr.length / 2);
    
            Sorting.mergeSort(left);
            Sorting.mergeSort(right);
            Sorting.mergeSortHelper(arr, left, right);
        }
    
        private static void mergeSortHelper(int[] arr, int[] left, int[] right) {
            int L = 0, R = 0;
            boolean Ltop = false, Rtop = false;
    
            for (int i = 0; i < arr.length; i++) {
                if (L < left.length - 1 && R < right.length - 1) {
                    if (left[L] <= right[R]) {
                        arr[i] = left[L];
                        L++;
                    } else {
                        arr[i] = right[R];
                        R++;
                    }
                } else if ((L == left.length - 1) ^ (R == right.length - 1)) {
                    if (L == left.length - 1) {
                        if ((left[L] <= right[R]) && !Ltop) {
                            arr[i] = left[L];
                            Ltop = true;
                        } else {                        
                            arr[i] = right[R];
                            R++;
                        }
                    } else {
                        if ((right[R] <= left[L]) && !Rtop) {
                            arr[i] = right[R];
                            Rtop = true;
                        } else {                        
                            arr[i] = left[L];
                            L++;
                        }
                    }
                } else {
                    if (i < arr.length - 1) {
                        arr[i] = (left[L] < right[R]) ? left[L] : right[R];                    
                    } else {                    
                        arr[i] = (left[L] > right[R]) ? left[L] : right[R];
                    }
                }
            }        
        }

    Реализация сортировки слиянием на Java

    kaspvar, 31 Августа 2011

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