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

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

    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
    interface Something {
        r: number;
        g: number;
        b: number;
        toString: () => string;
    }
    
    function main() {
        const something = {
            r: 11.0, g: 12.0, b: 13.0, toString() {
                return "Hello " + this.b;
            }
        };
    
        const iface = <Something>something;
        print(iface.toString());
    
        print("done.");
    }

    Интерфесы для абстрактых обьектов.. а ваш говно компилятор может так?

    ASD_77, 28 Октября 2021

    Комментарии (24)
  3. 1C / Говнокод #27447

    +1

    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
    Функция ОпределитьВидКонтрагента(Контрагент) Экспорт
    	
    	 Запрос = Новый Запрос;
    	 
    	 Запрос.УстановитьПараметр("Контрагент", Контрагент);
    	 
    	 ТекстЗапроса = "ВЫБРАТЬ
    		|	Контрагенты.Ссылка КАК Контрагент,
    		|	Контрагенты.Представление КАК Представление,
    		|	Контрагенты.ЮрФизЛицо КАК ЮрФизЛицо
    		|ИЗ
    		|	Справочник.Контрагенты КАК Контрагенты
    		|ГДЕ
    		|	Контрагенты.ЮрФизЛицо = ЗНАЧЕНИЕ(Перечисление.ЮрФизЛицо.ЮрЛицоНеРезидент)
    		|	И Контрагенты.Ссылка = &Контрагент";
    	 
    	 Запрос.Текст = ТекстЗапроса;
    	 	 
    	 РезультатЗапроса = Запрос.Выполнить();
    	 
    	 Если РезультатЗапроса.Пустой() Тогда
    		 Возврат Ложь;
    	 КонецЕсли;
    	 
    	 Выборка = РезультатЗапроса.Выбрать();
    	 
    	 Пока Выборка.Следующий() Цикл
    		 
    		 Если Контрагент = Выборка.Контрагент Тогда
    			 Возврат Истина;
    			 
    		 Иначе
    			 Возврат Ложь;
    			 
    		 КонецЕсли;
    		 
    	 КонецЦикла;
    	 
    КонецФункции

    cdpoma, 01 Июня 2021

    Комментарии (24)
  4. Python / Говнокод #27347

    −1

    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 karatsuba_multiplication(x : int, y : int) -> int:
        sx, sy = map(lambda x: '0' + str(x) if len(str(x)) % 2 != 0 else str(x), (x, y))
        return _karatsuba_multiplication(sx, sy, max(len(sx), len(sy)))
    
    def _prepend_nils(string : str, amount_of_nils : int) -> str:
        return ('0' * amount_of_nils + string)
    
    def _karatsuba_multiplication(x : str, y : str, n : int) -> int:
        x, y = map(lambda x: _prepend_nils(x, (n - len(x))), (x, y))
    
        if (n == 1):
            return (int(x) * int(y))
    
        mid = n // 2
        a, b = int(x[:mid]), int(x[mid:])
        c, d = int(y[:mid]), int(y[mid:])
    
        p = a + b
        q = c + d
        ac = _karatsuba_multiplication(str(a), str(c), max(len(str(a)), len(str(c))))
        bd = _karatsuba_multiplication(str(b), str(d), max(len(str(b)), len(str(d))))
        pq = _karatsuba_multiplication(str(p), str(q), max(len(str(p)), len(str(q))))
        adbc = pq - ac - bd
        return 10**n * ac + 10**(mid + n % 2) * adbc + bd

    Как-то не очень получилось...

    JloJle4Ka, 10 Апреля 2021

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

    +1

    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
    #include <stdio.h>
    #include <stdlib.h>
    
    #define SPLICE(a,b) SPLICE_1(a,b)
    #define SPLICE_1(a,b) SPLICE_2(a,b)
    #define SPLICE_2(a,b) a##b
    
    
    #define PP_ARG_N( \
              _1,  _2,  _3,  _4,  _5,  _6,  _7,  _8,  _9, _10, \
             _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, \
             _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, \
             _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, \
             _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, \
             _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, \
             _61, _62, _63, N, ...) N
    
    /* Note 63 is removed */
    #define PP_RSEQ_N()                                        \
             62, 61, 60,                                       \
             59, 58, 57, 56, 55, 54, 53, 52, 51, 50,           \
             49, 48, 47, 46, 45, 44, 43, 42, 41, 40,           \
             39, 38, 37, 36, 35, 34, 33, 32, 31, 30,           \
             29, 28, 27, 26, 25, 24, 23, 22, 21, 20,           \
             19, 18, 17, 16, 15, 14, 13, 12, 11, 10,           \
              9,  8,  7,  6,  5,  4,  3,  2,  1,  0
    
    #define PP_NARG_(...)    PP_ARG_N(__VA_ARGS__)    
    
    /* Note dummy first argument _ and ##__VA_ARGS__ instead of __VA_ARGS__ */
    #define PP_NARG(...)     PP_NARG_(_, ##__VA_ARGS__, PP_RSEQ_N())
    
    #define FIND_NONNULL_1(RES) \
      ((RES = (char *)(NULL)))
    
    #define FIND_NONNULL_2(RES, VAR) \
      ((RES = (char *)(VAR)))
    
    #define FIND_NONNULL_3(RES, VAR, ...) \
      (((RES = (char *)(VAR)) != NULL)?RES:FIND_NONNULL_2(RES,__VA_ARGS__))
    
    #define FIND_NONNULL_4(RES, VAR, ...) \
      (((RES = (char *)(VAR)) != NULL)?RES:FIND_NONNULL_3(RES,__VA_ARGS__))
    
    #define FIND_NONNULL_5(RES, VAR, ...) \
      (((RES = (char *)(VAR)) != NULL)?RES:FIND_NONNULL_4(RES,__VA_ARGS__))
    
    #define FIND_NONNULL_6(RES, VAR, ...) \
      (((RES = (char *)(VAR)) != NULL)?RES:FIND_NONNULL_5(RES,__VA_ARGS__))
    
    #define FIND_NONNULL_7(RES, VAR, ...) \
      (((RES = (char *)(VAR)) != NULL)?RES:FIND_NONNULL_6(RES,__VA_ARGS__))
    
    #define FIND_NONNULL_8(RES, VAR, ...) \
      (((RES = (char *)(VAR)) != NULL)?RES:FIND_NONNULL_7(RES,__VA_ARGS__))
    
    #define FIND_NONNULL_9(RES, VAR, ...) \
      (((RES = (char *)(VAR)) != NULL)?RES:FIND_NONNULL_8(RES,__VA_ARGS__))
    
    #define FIND_NONNULL_10(RES, VAR, ...) \
      (((RES = (char *)(VAR)) != NULL)?RES:FIND_NONNULL_9(RES,__VA_ARGS__))
    
    #define FIND_NONNULL_11(RES, VAR, ...) \
      (((RES = (char *)(VAR)) != NULL)?RES:FIND_NONNULL_10(RES,__VA_ARGS__))
    
    #define FIND_NONNULL_12(RES, VAR, ...) \
      (((RES = (char *)(VAR)) != NULL)?RES:FIND_NONNULL_11(RES,__VA_ARGS__))
    
    // etc ...
    
    #define FIND_NONNULLS_(N, ...) \
      SPLICE(FIND_NONNULL_, N)(__VA_ARGS__)
    
    #define FIND_NONNULLS(...) \
    ({ \
      char *FIND_NONNULLS; \
      FIND_NONNULLS_(PP_NARG(FIND_NONNULLS, __VA_ARGS__), FIND_NONNULLS, __VA_ARGS__); \
      FIND_NONNULLS; \
    })
    
    char *side_effect_null(void)
    {
      printf("!!null!!\n");
      return NULL;
    }
    
    char *side_effect_test(void)
    {
      printf("!!test!!\n");
      return "test";
    }
    
    int main(void)
    {
      printf( "result:%s\n", FIND_NONNULLS(0,side_effect_null(),0,side_effect_test(),0,0,side_effect_test(),"govno", side_effect_test()) );
      return EXIT_SUCCESS;
    }

    Это типа как short-circuit evaluation чтоб по цепочке хрень возвращающую строку вызывать, и там те функции хуйпойми сколько аргументов могут принимать (но там может быть константа, тогда естественно нихрена не надо вызывать) пока оно не вернет не-NULL. Как только вернуло не-NULL то вернуть это и дальше ничего не вызывать, а то там сайд эффекты всякие ненужные будут. А если не-NULL так и не нашло, вернуть NULL

    j123123, 09 Апреля 2021

    Комментарии (24)
  6. 1C / Говнокод #26995

    0

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка)
    	
    	Если Данные.Свойство("Ссылка") И ЗначениеЗаполнено(Данные.Ссылка) Тогда
    		СтандартнаяОбработка = Ложь;
    		Представление = Данные.Ссылка.Наименование;
    	КонецЕсли; 
    	
    КонецПроцедуры

    У ребят не заладилось с этой процедурой. Смысла в этих действиях 0. Объект справочник.

    NioGoth, 01 Октября 2020

    Комментарии (24)
  7. JavaScript / Говнокод #26729

    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
    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
    import * as React from 'react';
    import {CityFromSelector} from './components/cityFromSelector';
    import {CountryToSelector} from './components/countryToSelector';
    import {MealsTypeSelector} from './components/mealsTypeSelector';
    import {DepartureDatesRangeSelector} from './components/departureDatesRangeSelector';
    import {HotelCategoriesSelector} from './components/hotelCategoriesSelector';
    import {ResortSelector} from './components/resortSelector';
    import {HotelsSelector} from './components/hotelsSelector';
    import {TouristsSelector} from './components/touristsSelector';
    import {OperatorsSelector} from './components/operatorsSelector';
    import {NightsCountRangeSelector} from './components/nightsCountRangeSelector';
    import {PriceRangeSelector} from './components/priceRangeSelector';
    import {FlightInfo} from './components/flightInfo';
    import {SearchFormActionCreator} from './search/searchFormActionCreator';
    import {HotelsCountPopup} from './components/hotelsCountLimitPopup';
    import * as throttle from 'lodash/throttle';
    import * as filter from 'lodash/filter';
    import * as union from 'lodash/union';
    import * as merge from 'lodash/merge';
    import * as reduce from 'lodash/reduce';
    import * as chunk from 'lodash/chunk';
    import * as difference from 'lodash/difference';
    import * as differenceBy from 'lodash/differenceBy';
    import { Tour } from 'sletat-api-services/lib/ModuleApiServices/Main.svc/GetTours/Tour';
    import { logViewedTours } from 'sletat-api-services/lib/GraphApiServices/Main.svc/LogViewedTours/LogViewedTours';
    import { OilTax } from 'sletat-api-services/lib/ModuleApiServices/Main.svc/GetTours/OilTax';
    import { VisaFee } from 'sletat-api-services/lib/ModuleApiServices/Main.svc/GetTours/VisaFee';
    import { getHotelImageSrc } from 'sletat-common-utils/lib/tour/getHotelImageSrc';
    import { declineByCount } from 'sletat-common-utils/lib/format/declineByCount';
    import { Tour as GetToursTour } from 'sletat-api-services/lib/ModuleApiServices/Main.svc/GetTours/Tour';
    import { Tour } from './tour';
    import { IVisaFee } from './visaFee';
    import { IOilTax } from './oilTaxes';
    import { UiPopup } from 'react-sletat-uikit/lib/ui-popup/UiPopup';
    import { UiLoader } from 'react-sletat-uikit/lib/ui-loader/UiLoader';
    import {
        SendConfirmEmailResults,
        recoverySendConfirmEmail,
        registrationSendConfirmEmail
    } from 'sletat-api-services/lib/SletatServices/Services/SendConfirmEmail/SendConfirmEmail';
    import { authentification } from 'sletat-api-services/lib/SletatServices/Authentification';
    import LoginPopup from './components/Login';
    import RegistrationPopup from './components/Registration';
    import RecoveryPopup from './components/Recovery';
    import SuccessPopup from './components/Success';
    import { PopupTypes } from './constants';

    может это уже нормально в современном фронтенде

    tablecell, 02 Июня 2020

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

    +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
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    template <typename F, class = decltype(F()(E()))>
        auto map(F p) -> std::vector< decltype(p(E())) >
        {        
            std::vector< decltype(p(E())) > result;
            std::transform(get().begin(), get().end(), std::back_inserter(result), [=](auto &v) {
                return mutable_(p)(v);
            });
    
            return result;
        }
    
        template <typename F, class = decltype(F()(E(), 0))>
        auto map(F p) -> std::vector< decltype(p(E(), 0)) >
        {        
            std::vector< decltype(p(E(), 0)) > result;
            auto first = &(get())[0];
            std::transform(get().begin(), get().end(), std::back_inserter(result), [=](auto &v) {
                auto index = &v - first;
                return mutable_(p)(v, index);
            });
    
            return result;
        }
    
    // и применение (e) => f()
        auto strs = (array<int>{ 1, 2, 3 }).map([](auto x)
        {
            return "X" + x;
        });
    
    // или (e, index) => f()
    
        auto strs = (array<int>{ 1, 2, 3 }).map([](auto x)
        {
            return x + i;
        });

    как я выкрутился бля... с разными маперами... как генерики в c#

    ASD_77, 27 Мая 2020

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

    +1

    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
    CStringUtf8::iterator& CStringUtf8::iterator::operator++() 
    { 
        m_ptr += CCharUtf8Ref::s_bytesForUTF8Sequence[*m_ptr]; 
        return *this;
    }
    
    CStringUtf8 CStringUtf8::subString( size_t startChar, size_t count ) const
    {
        iterator start = this->begin();
        while( start!=this->end() && startChar>0 )
        {
            start++;
            startChar--;
        }
    
        iterator afterLast = start;
        while( afterLast!=this->end() && count!=0 )
        {
            afterLast++;
            count--;
        }
        return CStringUtf8( start.c_ptr(), afterLast.c_ptr() );
    }
    
    CStringUtf8::iterator CStringUtf8::findSubString( CStringUtf8 const& sample, CStringUtf8::iterator startFrom ) const
    {
        CStringUtf8::iterator pos = startFrom;
        CStringUtf8::iterator foundPos = pos;
        CStringUtf8::iterator samplePos = sample.begin();
    
        for( ;; )
        {
            if( samplePos==sample.end() )
                return foundPos;
    
            if( pos==this->end() )
                return this->end();
    
            if( *samplePos == *pos )
            {
                if( samplePos==sample.begin() )
                    foundPos = pos;
                samplePos++;
                pos++;
            }
            else
            {
                if( samplePos==sample.begin() )
                    pos++;
                samplePos = sample.begin();
            }
        }
    }
    
    std::vector<CStringUtf8> CStringUtf8::componentsSeparatedByString( CStringUtf8 const& separator ) const
    {
        std::vector<CStringUtf8> comps;
    
        size_t sepLen = std::distance( separator.begin(), separator.end() );
        size_t startPos = 0;
        CStringUtf8::iterator itStart = begin();
    
        if( sepLen > 0 )
        {
            CStringUtf8::iterator itEnd;
            while( ( itEnd = findSubString( separator, itStart ) ) != end() )
            {
                size_t cnt = std::distance( itStart, itEnd );
                CStringUtf8 str = subString( startPos, cnt );
                comps.push_back( str );
    
                itStart = itEnd;
                std::advance( itStart, sepLen );
    
                startPos += cnt + sepLen;
            }
        }
    
        size_t cnt = std::distance( itStart, end() );
        if( cnt > 0 )
        {
            CStringUtf8 str = subString( startPos, cnt );
            comps.push_back( str );
        }
    
        return comps;
    }

    Привычный для всех плюсовиков велосипед по работе со строкой (походу свой в каждом проекте).
    Более 10 лет не замечали тормоза в componentsSeparatedByString, который 100 Кб текст разбирал на строки за 5-10 сек (!!!).

    jojaxon, 26 Апреля 2020

    Комментарии (24)
  10. Python / Говнокод #26379

    +1

    1. 1
    2. 2
    3. 3
    4. 4
    # Python2
    
    import sys
    print sys.stderr, "Pol chasa ne mog ponyat kakoko huya nichego ne vivoditsya"

    3_dar, 23 Января 2020

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

    +1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    $s = $_REQUEST['user_str'];
    $lnk = mysqli_connect('localhost','root','1234','Jelwery') or die("Error ".mysqli_error($connection));
    mysqli_set_charset("utf8");
    $res = mysqli_query($lnk, "SELECT SUBSTRING('".$s."',1,8') as result") or $res = ("Ошибка ".mysqli_error($connection));
    $row = mysqli_fetch_assoc($res);
    $s = $row['t'];
    echo 'Truncated string: '.$s;

    Взятие подстроки (когда запретили substr($s,8) :))

    st4rkc0d3, 19 Января 2020

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