1. Список говнокодов пользователя bormand

    Всего: 159

  2. C++ / Говнокод #27029

    +5

    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
    #include <iostream>
    #include <set>
    #include <unicode/brkiter.h>
    #include <unicode/unistr.h>
    #include <unicode/coll.h>
    #include <unicode/sortkey.h>
    
    bool hasRepeatingCharacters(const icu::UnicodeString &word)
    {
        icu::Locale locale = icu::Locale::getDefault();
        UErrorCode status = U_ZERO_ERROR;
        std::unique_ptr<icu::BreakIterator> it{icu::BreakIterator::createCharacterInstance(locale, status)};
        if (U_FAILURE(status)) throw 42;
        it->setText(word);
    
        std::unique_ptr<icu::Collator> collator{icu::Collator::createInstance(status)};
        if (U_FAILURE(status)) throw 42;
        collator->setStrength(icu::Collator::SECONDARY);
    
        auto less = [](const icu::CollationKey &k1, const icu::CollationKey &k2){
            UErrorCode status = U_ZERO_ERROR;
            bool isLess = k1.compareTo(k2, status) == UCOL_LESS;
            if (U_FAILURE(status)) throw 42;
            return isLess;
        };
        std::set<icu::CollationKey, decltype(less)> cache(less);
    
        int32_t p = it->first();
        while (p != icu::BreakIterator::DONE) {
            int32_t q = it->next();
            if (q == icu::BreakIterator::DONE)
                break;
    
            icu::CollationKey key;
            collator->getCollationKey(word.tempSubStringBetween(p, q), key, status);
            if (U_FAILURE(status)) throw 42;
    
            if (cache.find(key) != cache.end())
                return true;
    
            cache.insert(key);
            p = q;
        }
    
        return false;
    }
    
    int main()
    {
        icu::UnicodeString words(u8"Example english Боб мир כוכב 民主主義語こんにちは", "utf-8");
    
        icu::Locale locale = icu::Locale::getDefault();
        UErrorCode status = U_ZERO_ERROR;
        std::unique_ptr<icu::BreakIterator> it{icu::BreakIterator::createWordInstance(locale, status)};
        if (U_FAILURE(status)) throw 42;
        it->setText(words);
    
        int32_t p = it->first();
        while (p != icu::BreakIterator::DONE) {
            int32_t q = it->next();
            if (q == icu::BreakIterator::DONE)
                break;
    
            if (it->getRuleStatus() != UBRK_WORD_NONE)
            {
                icu::UnicodeString word{words.tempSubStringBetween(p, q)};
                bool hasRepeats = hasRepeatingCharacters(word);
    
                std::string wordUtf8;
                word.toUTF8String(wordUtf8);
                std::cout << (hasRepeats ? "Has repeats: " : "No repeats: ") << wordUtf8 << std::endl;
            }
    
            p = q;
        }
    
        return 0;
    }

    По мотивам https://govnokod.ru/27025

    Сформировать строку из слов исходной строки, содержащих повторяющиеся буквы.

    В 60 строк, к сожалению, не уложился :(

    bormand, 14 Октября 2020

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

    +3

    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
    static int parse_num(const char *s, size_t *out) {
        if (s == NULL || *s == '\0')
            return -1;
    
        char *end = 0;
        errno = 0;
        uint64_t num = strtoull(s, &end, 0);
        if (errno != 0)
            return -1;
    
        if (*end != '\0')
            return -1;
    
        if (num > SIZE_MAX)
            return -1;
    
        *out = (size_t)num;
        return 0;
    }

    Какие же всё-таки удобные функции в стандартной няшколибе.

    bormand, 24 Сентября 2020

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

    +1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    int main()
    {
        + ! - ! -- -- ! + ! - - - ++ ~ - ! -- -- -- ~ ~ ~ ++ ++ ++ - ~ ++ - * - - -
        * ++ * * ++ * -- -- -- -- - * -- + * ++ ++ ++ ++ ++ * ++ * -- -- * -- - *
        
        BRAINFUCK;
        
        return 0;
    }

    https://ideone.com/EtK1J4

    Ответ на https://govnokod.ru/26910. Теперь с реальной конпеляцией в нативный код.

    bormand, 03 Сентября 2020

    Комментарии (13)
  5. Python / Говнокод #26847

    +2

    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
    def __gc(self, state):
        userdata = self.lib.luaL_testudata(self.state, 1, b'python.object')
        if userdata:
            obj_ptr = (c.cast(userdata, c.POINTER(c.py_object))).contents
            if obj_ptr:
                c.pythonapi.Py_DecRef(obj_ptr)
        return 0
    
    def push_object(self, obj):
        userdata = self.lib.lua_newuserdata(self.state, c.sizeof(c.py_object))
        (c.cast(userdata, c.POINTER(c.py_object)))[0] = c.py_object()
    
        if self.lib.luaL_newmetatable(self.state, b'python.object'):
            self.gc_thunk = c.CFUNCTYPE(c.c_int, c.c_void_p)(self.__gc)
            self.lib.lua_pushcclosure(self.state, self.gc_thunk, 0)
            self.lib.lua_setfield(self.state, -2, b'__gc')
            self.lib.lua_pushstring(self.state, b'protected')
            self.lib.lua_setfield(self.state, -2, b'__metatable')
    
        self.lib.lua_setmetatable(self.state, -2)
    
        obj_ptr = c.py_object(obj)
        c.pythonapi.Py_IncRef(obj_ptr)
        (c.cast(userdata, c.POINTER(c.py_object)))[0] = obj_ptr

    Как скрестить ужа с ежом.

    bormand, 07 Августа 2020

    Комментарии (13)
  6. Си / Говнокод #25296

    0

    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
    void decode_chunk(const char* s, uint8_t* out)
    {
        __m128i a = _mm_loadu_si128((const __m128i*)s);
    
        __m128i u = _mm_and_si128(a, _mm_set1_epi8(0x74));
        u = _mm_add_epi8(u, _mm_set1_epi8(0x04));
        u = _mm_srli_epi32(u, 0x03);
        u = _mm_and_si128(u, _mm_set1_epi8(0x0F));
        u = _mm_shuffle_epi8(_mm_set_epi32(0xB9B9B9B9, 0xBFBFBFBF, 0x04041013, 0x00000000), u);
        a = _mm_add_epi8(a, u);
    
        __m128i m1 = _mm_set1_epi32(0xFF00FF00);
        __m128i m2 = _mm_set1_epi32(0xFFFF0000);
        a = _mm_shuffle_epi8(a, _mm_set_epi32(0x00010203, 0x04050607, 0x08090A0B, 0x0C0D0E0F));
        a = _mm_or_si128(_mm_srli_epi32(_mm_and_si128(m1, a), 2), _mm_andnot_si128(m1, a));
        a = _mm_or_si128(_mm_srli_epi32(_mm_and_si128(m2, a), 4), _mm_andnot_si128(m2, a));
        a = _mm_shuffle_epi8(a, _mm_set_epi32(0x80808080, 0x00010204, 0x05060809, 0x0A0C0D0E));
    
        _mm_storeu_si128((__m128i*)out, a);
    }

    Байтоёбский парсинг base64 (16 символов → 12 байт).

    По мотивам http://govnokod.ru/12822#comment173404

    bormand, 09 Января 2019

    Комментарии (85)
  7. Python / Говнокод #24902

    +2

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    class Test(contextlib.ExitStack):
        def __init__(self):
            super().__init__()
            with contextlib.ExitStack() as s:
                self.foo = s.enter_context(Foo())
                self.bar = s.enter_context(Bar())
                self.enter_context(s.pop_all())

    Неужели в питоне нет более адекватного способа описать класс, который держит джва ресурса и корректно их освобождает во всех ситуациях? И эти люди ругают кресты за сложность управления памятью...

    bormand, 11 Октября 2018

    Комментарии (131)
  8. Си / Говнокод #23411

    +4

    1. 1
    2. 2
    3. 3
    int hcreate(size_t nel);
    ENTRY *hsearch(ENTRY item, ACTION action);
    void hdestroy(void);

    Using these functions, only one hash table can be used at a time.
    The argument nel specifies the maximum number of entries in the table. (This maximum cannot be changed later, so choose it wisely).
    Individual hash table entries can be added, but not deleted.

    Одной хеш таблицы хватит для всех, ресайзить её или удалять элементы - нинужная фича.

    bormand, 15 Октября 2017

    Комментарии (82)
  9. Python / Говнокод #23226

    +1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    bool retval = true;
    
    while (someting) {
        ...
        if (retval) retval = sendDataInternal(data);
        else sendDataInternal(data);
    }
    
    return retval;

    Ничто не остановит бульдозер.

    bormand, 30 Июля 2017

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

    −15

    1. 1
    2. 2
    3. 3
    operator void() {
        std::cout << "Cast to void!" << std::endl;
    }

    Выглядит заманчиво, даже компилится. Но никогда не вызывается, к сожалению.

    bormand, 24 Апреля 2017

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

    −101

    1. 1
    2. 2
    puts("Ня. Пока.");
    exit(0);

    bormand, 26 Февраля 2017

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