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

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

    +354

    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
    private ChessField Recognize()
            {
                var output = new ChessField();
                for (int x = 0; x < 8; x++)
                {
                    for (int y = 0; y < 8; y++)
                    {
                        var xs = x*50;
                        var ys = y*50;
    
                        if (IsNeutral(bitmap.GetPixel(xs + 25, ys + 33)) && IsNeutral(bitmap.GetPixel(xs + 8, ys + 40)))
                        {
                            output.figures[y,x].kindOfFigure = Figure.KindOfFigure.Empty;
                        }
                        else
                        {
                            if ((IsWhite(bitmap.GetPixel(xs + 25, ys + 34)) ||
                                IsWhite(bitmap.GetPixel(xs + 30, ys + 25))) && !IsBlack(bitmap.GetPixel(xs + 9, ys + 42)))
                            {
                                output.figures[y, x].color = Figure.Color.White;
                                //white rec
    
                                
                                if (IsBlack(bitmap.GetPixel(xs + 25, ys + 7)))
                                {
                                    output.figures[y, x].kindOfFigure = Figure.KindOfFigure.King;
                                    continue;
                                }
                                if (!IsWhite(bitmap.GetPixel(xs + 25, ys + 32)))
                                {
                                    output.figures[y, x].kindOfFigure = Figure.KindOfFigure.Queen;
                                    continue;
                                }
                                if (IsBlack(bitmap.GetPixel(xs + 25, ys + 22)))
                                {
                                    output.figures[y, x].kindOfFigure = Figure.KindOfFigure.Bishop;
                                    continue;
                                }
                                if (IsBlack(bitmap.GetPixel(xs + 25, ys + 27)))
                                {
                                    output.figures[y, x].kindOfFigure = Figure.KindOfFigure.Knight;
                                    continue;
                                }
                                if (IsWhite(bitmap.GetPixel(xs + 15, ys + 15)))
                                {
                                    output.figures[y, x].kindOfFigure = Figure.KindOfFigure.Rook;
                                    continue;
                                }
                                output.figures[y, x].kindOfFigure = Figure.KindOfFigure.Pawn;
    
                            }
                            else
                            {
                                output.figures[y, x].color = Figure.Color.Black;
                                //black rec
                                if (!IsBlack(bitmap.GetPixel(xs + 25, ys + 25)))
                                {
                                    output.figures[y, x].kindOfFigure = Figure.KindOfFigure.Bishop;
                                    continue;
                                }
                                if (!IsBlack(bitmap.GetPixel(xs + 25, ys + 28))||
                                    !IsBlack(bitmap.GetPixel(xs + 25, ys + 29)))
                                {
                                    output.figures[y, x].kindOfFigure = Figure.KindOfFigure.Knight;
                                    continue;
                                }
                                if (!IsBlack(bitmap.GetPixel(xs + 25, ys + 36)))
                                {
                                    output.figures[y, x].kindOfFigure = Figure.KindOfFigure.Rook;
                                    continue;
                                }
                                if (!IsBlack(bitmap.GetPixel(xs + 25, ys + 31)))
                                {
                                    output.figures[y, x].kindOfFigure = Figure.KindOfFigure.King;
                                    continue;
                                }
                                if (!IsBlack(bitmap.GetPixel(xs + 25, ys + 33)))
                                {
                                    output.figures[y, x].kindOfFigure = Figure.KindOfFigure.Queen;
                                    continue;
                                }
                                output.figures[y, x].kindOfFigure = Figure.KindOfFigure.Pawn;
                            }
                        }
    
                    }
                }
                return output;
            }

    4 часа ночи, вино, кофе, чужой курсач, распознание шахматных фигур со скриншота типа этого

    http://download.hdd.tomsk.ru/preview/xjntlwtz.jpg

    естесно поле уже вырезано и поджато под 400 на 400 пикселей

    kegdan, 20 Марта 2015

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

    +352

    1. 1
    15000 гет!

    Багровые войны гетам не помеха.

    15k_user_get, 19 Августа 2016

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

    +349.7

    1. 1
    define("_WINDOWS_",file_exists("c:\autoexec.bat") ? TRUE : FALSE);

    :)

    guest, 31 Марта 2009

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

    +341

    1. 1
    2. 2
    $dom = new DOMDocument;
    $dom->loadHTML('<?xml encoding="UTF-8">' . $document);

    Выжал самое интересное.

    Кто угадает, зачем к документу прилепляется строка '<?xml encoding="UTF-8">', тому ничего. Но без неё не работает. Точнее, работает, но неправильно.

    inkanus-gray, 13 Августа 2016

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

    +339.8

    1. 1
    2. 2
    3. 3
    4. 4
    if (result == true)
      return true;
    else
     return result;

    этпипец... из разряда индокода, только в реале

    guest, 04 Декабря 2008

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

    +322

    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
    void worker(int id)
    {
        while (true) {
            std::unique_lock<std::mutex> lock(connPoolMutex);
            connPoolCond.wait(lock, [] { return !connectionsPool.empty(); });
    
            ClientConnection conn = connectionsPool.front();
            connectionsPool.pop();
            lock.unlock();
    
            TCPSocket sock(conn);
            sock.setReadTimeout(READ_TIMEOUT);
    
            char buffer[MAX_PACKET_LEN] = {};
            int sz = sock.recv(buffer, sizeof(buffer));
    
            // [...]
        }
    }
    
    // [...]
    
    int main()
    {
        // [...]
        TCPSocket server("0.0.0.0:1234");
        server.bind();
        server.listen(1000);
    
        while (true) {
            ClientConnection conn = server.accept();
    
            std::unique_lock<std::mutex> l(connPoolMutex);
            connectionsPool.push(conn);
    
            connPoolCond.notify_one();
        }
    }

    Современный, многопоточный и масштабируемый сервер на C++!

    TCPSocket - очень тонкая обёртка над голым сокетом.

    gost, 17 Августа 2016

    Комментарии (87)
  8. Java / Говнокод #20821

    +320

    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
    import java.io.*;
    public class word {
    	static int count = 0;
    public static void main (String[] args)throws IOException{
    	BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
    	String word = reader.readLine();
    	reader.close();
    	String r = word.replaceAll("\\d|\\s|\\\\|/|\\]|\\[|\\`|\\~|\\.|\\>|\\<|\\,|\\;|\\:|\\\"|\\'|\\||\\?|\\!|\\@|\\#|\\№|\\$|\\%|\\^|\\&|\\*|\\)|\\(|\\-|\\_|\\+|\\=|\\}|\\{","");
    	char[] letters = r.toCharArray();
    	
    	for(int i = 0;i<letters.length;i++){
    		count++;
    	
    	}
    	System.out.println("Кол-во букв:" + count);
    }
    }

    программа считывает кол-во букв в слове, которое вводит юзер

    TopCodeMonkey, 17 Августа 2016

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

    +319

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    if (("/dir/" + TXT_FILE_NAME).equals(fileName))
    	processTxtFiles(TXT_FILE_NAME);
    else if (fileName.endsWith(TXT_FILE_NAME))
    	processTxtFiles(TXT_FILE_NAME);
    else if ...

    Зачем первые две строки?

    -EZ-, 16 Августа 2016

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

    +319

    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
    template<typename OpeningBracketRange,
    	typename ClosingBracketRange,
    	typename StopTokenRange,
    	typename CommentBlockRangePairRange,
    	typename RecursiveCommentBlockRangePairRange>
    
    Meta::EnableIf<
    	IsFiniteForwardRange<OpeningBracketRange>::_ &&
    	IsFiniteForwardRange<ClosingBracketRange>::_ &&
    	IsFiniteForwardRange<StopTokenRange>::_ &&
    	IsFiniteForwardRange<CommentBlockRangePairRange>::_ &&
    	IsFiniteForwardRange<RecursiveCommentBlockRangePairRange>::_,
    
    decltype(Meta::Val<R>().Take(0))> ReadRecursiveBlock(int& counter, size_t* ioIndex,
    	OpeningBracketRange openingBracket, ClosingBracketRange closingBracket, StopTokenRange stopToken,
    	CommentBlockRangePairRange commentBlocks, RecursiveCommentBlockRangePairRange recursiveCommentBlocks)
    {
    	R start = me();
    	size_t index = 0;
    	const size_t openingBracketLen = openingBracket.Count();
    	const size_t closingBracketLen = closingBracket.Count();
    	const size_t stopTokenLen = stopToken.Count();
    	while(!me().Empty() && counter!=0)
    	{
    		if(openingBracketLen!=0 && me().StartsWith(openingBracket))
    		{
    			counter++;
    			me().PopFrontExactly(openingBracketLen);
    			index += openingBracketLen;
    			continue;
    		}
    
    		if(closingBracketLen!=0 && me().StartsWith(closingBracket))
    		{
    			counter--;
    			me().PopFrontExactly(closingBracketLen);
    			index += closingBracketLen;
    			continue;
    		}
    
    		if(stopTokenLen!=0 && me().StartsWith(stopToken))
    		{
    			me().PopFrontExactly(stopTokenLen);
    			index += stopTokenLen;
    			break;
    		}
    
    		bool commentFound = false;
    		for(auto& commentBlock: commentBlocks)
    		{
    			commentFound = me().StartsWith(commentBlock.Get<0>());
    			if(!commentFound) continue;
    
    			const size_t commentBlockOpeningLen = commentBlock.Get<0>().Count();
    			const size_t commentBlockClosingLen = commentBlock.Get<1>().Count();
    			me().PopFrontN(commentBlockOpeningLen);
    			index += commentBlockOpeningLen;
    			me().FindAdvance(commentBlock.Get<1>(), &index);
    			me().PopFrontN(commentBlockClosingLen);
    			index += commentBlockClosingLen;
    			break;
    		}
    		if(commentFound) continue;
    
    		for(auto& commentBlock: recursiveCommentBlocks)
    		{
    			commentFound = me().StartsWith(commentBlock.Get<0>());
    			if(!commentFound) continue;
    
    			int commentCounter = 1;
    			ReadRecursiveBlock(commentCounter, &index, commentBlock.Get<0>(), commentBlock.Get<1>(), null, null);
    			break;
    		}
    		if(commentFound) continue;
    
    		me().PopFront();
    	}
    	if(ioIndex!=null) (*ioIndex) += index;
    	return start.Take(index);
    }

    Это мои последние достижения в написании сверх универсального обобщённого кода.
    Начиналось всё с функции, которая парсила блок кода до закрывающей фигурной скобки, учитывая встречающиеся открывающие скобки. Затем появилась поддержка комментариев и строк. Позже я решил, что нечего привязываться к какому-то конкретному языку, ведь можно же таким же образом парсить другой язык, где вместо скобок begin end и комментарии по-другому оформляются.
    А потом я подумал, зачем вообще привязывать типы параметров к строкам и массивам строк? И почему код, который парсится, вообще должен быть строкой, хранящейся в памяти непрерывно? В итоге мои размышления привели к такой реализации, которая способна парсить всё подряд, в том числе и связные списки, причём необязательно состоящие из символов. При этом открывающуюся скобку можно передать связным списком, закрывающуюся - массивом, а блоки комментариев передавать как массивом кортежей, так и хеш-таблицей.

    При этом эта функция относится к классу примеси и наследованием её можно подмешать к любому классу, имеющему нужные методы.

    gammaker, 15 Августа 2016

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

    +318

    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
    template<typename Char, typename Allocator> struct CommonTypeRef<GenericStringView<Char>, GenericString<Char, Allocator>> {typedef GenericString<Char, Allocator> _;};
    template<typename Char, typename Allocator> struct CommonTypeRef<GenericStringView<Char>&, GenericString<Char, Allocator>> {typedef GenericString<Char, Allocator> _;};
    template<typename Char, typename Allocator> struct CommonTypeRef<GenericStringView<Char>&&, GenericString<Char, Allocator>> {typedef GenericString<Char, Allocator> _;};
    template<typename Char, typename Allocator> struct CommonTypeRef<const GenericStringView<Char>&, GenericString<Char, Allocator>> {typedef GenericString<Char, Allocator> _;};
    
    template<typename Char, typename Allocator> struct CommonTypeRef<GenericStringView<Char>, GenericString<Char, Allocator>&> {typedef GenericString<Char, Allocator> _;};
    template<typename Char, typename Allocator> struct CommonTypeRef<GenericStringView<Char>&, GenericString<Char, Allocator>&> {typedef GenericString<Char, Allocator> _;};
    template<typename Char, typename Allocator> struct CommonTypeRef<GenericStringView<Char>&&, GenericString<Char, Allocator>&> {typedef GenericString<Char, Allocator> _;};
    template<typename Char, typename Allocator> struct CommonTypeRef<const GenericStringView<Char>&, GenericString<Char, Allocator>&> {typedef GenericString<Char, Allocator> _;};
    
    template<typename Char, typename Allocator> struct CommonTypeRef<GenericStringView<Char>, GenericString<Char, Allocator>&&> {typedef GenericString<Char, Allocator> _;};
    template<typename Char, typename Allocator> struct CommonTypeRef<GenericStringView<Char>&, GenericString<Char, Allocator>&&> {typedef GenericString<Char, Allocator> _;};
    template<typename Char, typename Allocator> struct CommonTypeRef<GenericStringView<Char>&&, GenericString<Char, Allocator>&&> {typedef GenericString<Char, Allocator> _;};
    template<typename Char, typename Allocator> struct CommonTypeRef<const GenericStringView<Char>&, GenericString<Char, Allocator>&&> {typedef GenericString<Char, Allocator> _;};
    
    template<typename Char, typename Allocator> struct CommonTypeRef<GenericStringView<Char>, const GenericString<Char, Allocator>&> {typedef GenericString<Char, Allocator> _;};
    template<typename Char, typename Allocator> struct CommonTypeRef<GenericStringView<Char>&, const GenericString<Char, Allocator>&> {typedef GenericString<Char, Allocator> _;};
    template<typename Char, typename Allocator> struct CommonTypeRef<GenericStringView<Char>&&, const GenericString<Char, Allocator>&> {typedef GenericString<Char, Allocator> _;};
    template<typename Char, typename Allocator> struct CommonTypeRef<const GenericStringView<Char>&, const GenericString<Char, Allocator>&> {typedef GenericString<Char, Allocator> _;};
    
    
    
    template<typename Char, typename Allocator> struct CommonTypeRef<GenericString<Char, Allocator>, GenericStringView<Char>> {typedef GenericString<Char, Allocator> _;};
    template<typename Char, typename Allocator> struct CommonTypeRef<GenericString<Char, Allocator>, GenericStringView<Char>&> {typedef GenericString<Char, Allocator> _;};
    template<typename Char, typename Allocator> struct CommonTypeRef<GenericString<Char, Allocator>, GenericStringView<Char>&&> {typedef GenericString<Char, Allocator> _;};
    template<typename Char, typename Allocator> struct CommonTypeRef<GenericString<Char, Allocator>, const GenericStringView<Char>&> {typedef GenericString<Char, Allocator> _;};
    
    template<typename Char, typename Allocator> struct CommonTypeRef<GenericString<Char, Allocator>&, GenericStringView<Char>> {typedef GenericString<Char, Allocator> _;};
    template<typename Char, typename Allocator> struct CommonTypeRef<GenericString<Char, Allocator>&, GenericStringView<Char>&> {typedef GenericString<Char, Allocator> _;};
    template<typename Char, typename Allocator> struct CommonTypeRef<GenericString<Char, Allocator>&, GenericStringView<Char>&&> {typedef GenericString<Char, Allocator> _;};
    template<typename Char, typename Allocator> struct CommonTypeRef<GenericString<Char, Allocator>&, const GenericStringView<Char>&> {typedef GenericString<Char, Allocator> _;};
    
    template<typename Char, typename Allocator> struct CommonTypeRef<GenericString<Char, Allocator>&&, GenericStringView<Char>> {typedef GenericString<Char, Allocator> _;};
    template<typename Char, typename Allocator> struct CommonTypeRef<GenericString<Char, Allocator>&&, GenericStringView<Char>&> {typedef GenericString<Char, Allocator> _;};
    template<typename Char, typename Allocator> struct CommonTypeRef<GenericString<Char, Allocator>&&, GenericStringView<Char>&&> {typedef GenericString<Char, Allocator> _;};
    template<typename Char, typename Allocator> struct CommonTypeRef<GenericString<Char, Allocator>&&, const GenericStringView<Char>&> {typedef GenericString<Char, Allocator> _;};
    
    template<typename Char, typename Allocator> struct CommonTypeRef<const GenericString<Char, Allocator>&, GenericStringView<Char>> {typedef GenericString<Char, Allocator> _;};
    template<typename Char, typename Allocator> struct CommonTypeRef<const GenericString<Char, Allocator>&, GenericStringView<Char>&> {typedef GenericString<Char, Allocator> _;};
    template<typename Char, typename Allocator> struct CommonTypeRef<const GenericString<Char, Allocator>&, GenericStringView<Char>&&> {typedef GenericString<Char, Allocator> _;};
    template<typename Char, typename Allocator> struct CommonTypeRef<const GenericString<Char, Allocator>&, const GenericStringView<Char>&> {typedef GenericString<Char, Allocator> _;};

    Кто-нибудь знает, как сократить этот комбинаторный взрыв частичных специализаций без макросов?

    gammaker, 18 Августа 2016

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