1. C++ / Говнокод #27403

    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
    #include <cstdio>
    
    template<size_t Len>
    struct Literal
    {
      constexpr static size_t StrLen = Len;
      char m_data[Len];
    
      constexpr Literal(const char (&data)[Len])
      {
        for (size_t i = 0; i < Len; ++i)
          m_data[i] = data[i];
      }
    };
    
    template<Literal Lit>
    void withString()
    {
      printf("%zu %s\n", Lit.StrLen, Lit.m_data);
    }
    
    int main()
    {
      withString<"foobar">();
    }

    Какой багор )))

    https://i.imgur.com/1q9UfVW.png

    j123123, 08 Мая 2021

    Комментарии (36)
  2. JavaScript / Говнокод #27402

    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
    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
    // Define the man site module
    define(function(require) {
        // Require function that runs when button is clicked
        var run = require('./run').run;
    
        // Where the application starts its work
        var genTextButton = document.getElementById("button-gen-text");
        genTextButton.onclick = run;
    });
    
    define(function(require) {
      // Require value error
      var ValueError = require('./errors/value_errors').ValueError;
    
      // Require EmptyListError
      var EmptyListError = require('./errors/property_errors').EmptyListError;
    
      // Require functions that returns data for text generation
      var getData = require('./utils/get_data');
      var getTextLength = getData.getTextLength;
      var getTemplateList = getData.getTemplateList;
      var getWordList = getData.getWordList;
      var getStyleOption = getData.getStyleOption;
    
      // Require function for setting output text
      var makeText = require('./utils/set_text');
    
      // Require function for validating form and validate form
      var validateForm = require('./utils/validateForm');
      validateForm({
        formId : 'form-text-gen',
        inputErrorClass : 'input-error',
        formInvalidClass : 'form-invalid'
      });
    
      // Runs tasks for text generation
      var run = function() {
        try {
          var textLength = getTextLength();
          var templateList = getTemplateList();
          var wordList = getWordList();
          var styleOption = getStyleOption();
    
          makeText({
            styleOption : styleOption,
            textLength : textLength,
            templateList : templateList,
            wordList : wordList
          });
        } catch (error) {
           if (error instanceof ValueError) {
             console.log(error.stack);
           } else if (error instanceof EmptyListError)  {
              console.log(error.stack);
           } else {
             throw error;
           }
        }
      }
    
      return {
        run : run
      }
    });

    Божественная кнопка

    JaneBurt, 08 Мая 2021

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

    +1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    vector<int> res;
    ...
    for (int i = 0; i < res.size(); i++) {
        printf("%d%c", res[i], " \n"[i + 1 == res.size()]);
    }

    Решил вспомнить как олимпиадные задачки решать.

    3_dar, 07 Мая 2021

    Комментарии (30)
  4. Куча / Говнокод #27400

    +1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    %% Generates a Normal-distributed random variable using Box-Muller method
    %% from: https://github.com/basho/basho_stats/blob/develop/src/basho_stats_rv.erl
    -spec rnd_normal(integer(), integer()) -> non_neg_integer().
    rnd_normal(Mean, Sigma) ->
      Rv1 = random:uniform(),
      Rv2 = random:uniform(),
      Rho = math:sqrt(-2 * math:log(1-Rv2)),
      abs(trunc(Rho * math:cos(2 * math:pi() * Rv1) * Sigma + Mean)).

    Это норма.

    CHayT, 07 Мая 2021

    Комментарии (21)
  5. JavaScript / Говнокод #27399

    0

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    function display(id:number, name:string)
    {
        print("Id = " + id + ", Name = " + name);
    }
    
    function main() {                                                 
    	display(1, "asd");
    }

    А ваш говно компайлер умеет так делать?

    >> Output:
    Id = 1., Name = asd

    ASD_77, 07 Мая 2021

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

    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
    template<typename T>
    struct method_traits;
    
    template<typename T, typename RetT, typename... Args>
    struct method_traits<RetT(T::*)(Args...)> {
        using this_type = T;
        using ret_type = RetT;
    
        template<size_t ArgIdx>
        using arg_type = typename std::tuple_element<ArgIdx, std::tuple<Args...>>::type;
    
        static constexpr size_t args_count = sizeof...(Args);
        static constexpr bool is_const = false;
        static constexpr bool is_lvalue = false;
        static constexpr bool is_rvalue = false;
    };
    
    template<typename T, typename RetT, typename... Args>
    struct method_traits<RetT(T::*)(Args...) const> : public method_traits<RetT(T::*)(Args...)> {
        static constexpr bool is_const = true;
    };
    
    template<typename T, typename RetT, typename... Args>
    struct method_traits<RetT(T::*)(Args...) &> : public method_traits<RetT(T::*)(Args...)> {
        static constexpr bool is_lvalue = true;
    };
    
    template<typename T, typename RetT, typename... Args>
    struct method_traits<RetT(T::*)(Args...) &&> : public method_traits<RetT(T::*)(Args...)> {
        static constexpr bool is_rvalue = true;
    };
    
    template<typename T, typename RetT, typename... Args>
    struct method_traits<RetT(T::*)(Args...) const &> : public method_traits<RetT(T::*)(Args...)> {
        static constexpr bool is_const = true;
        static constexpr bool is_lvalue = true;
    };
    
    template<typename T, typename RetT, typename... Args>
    struct method_traits<RetT(T::*)(Args...) const &&> : public method_traits<RetT(T::*)(Args...)> {
        static constexpr bool is_const = true;
        static constexpr bool is_rvalue = true;
    };

    А вдруг в новом стандарте ещё модификаторов в тип завезут? Страшня стало...

    PolinaAksenova, 07 Мая 2021

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

    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
    // https://habr.com/ru/company/yandex_praktikum/blog/555704/
    // Стандарт C++20: обзор новых возможностей C++. Часть 2 «Операция ''Космический Корабль''»
    
    // Предположим, вы определили структуру, содержащую одно число:
    
    struct X {
        int a;
    };
    
    // Мы хотим сделать так, чтобы значения этой структуры можно было сравнивать друг с другом.
    // Для этого придётся написать шесть операций:
    
    bool operator== (X l, X r) { return l.a == r.a; }
    bool operator!= (X l, X r) { return l.a != r.a; }
    bool operator>= (X l, X r) { return l.a >= r.a; }
    bool operator<= (X l, X r) { return l.a <= r.a; }
    bool operator< (X l, X r) { return l.a < r.a; }
    bool operator> (X l, X r) { return l.a > r.a; }
    
    // А теперь представьте, что мы хотим сравнивать элементы этой структуры не только между собой,
    // но также с числами int. Количество операций возрастает с шести до 18:
    
    bool operator== (X l, int r) { return l.a == r; }
    bool operator!= (X l, int r) { return l.a != r; }
    bool operator>= (X l, int r) { return l.a >= r; }
    bool operator<= (X l, int r) { return l.a <= r; }
    bool operator< (X l, int r) { return l.a < r; }
    bool operator> (X l, int r) { return l.a > r; }
    
    bool operator== (int l, X r) { return l == r.a; }
    bool operator!= (int l, X r) { return l != r.a; }
    bool operator>= (int l, X r) { return l >= r.a; }
    bool operator<= (int l, X r) { return l <= r.a; }
    bool operator< (int l, X r) { return l < r.a; }
    bool operator> (int l, X r) { return l > r.a; }
    
    // Что делать? Можно позвать штурмовиков. Их много, и они быстро напишут 18 операций.
    
    // Или воспользоваться «космическим кораблём». Эту новую операцию в C++ называют
    // «космический корабль», потому что она на него похожа: <=>. Более формальное название
    // «трёхстороннее сравнение» фигурирует в документах Стандарта.

    А можно добавить гомоиконность, которой можно наметушить не только какой-то там космический корабль (ради которого в крестокомпиляторах надо синтаксический анализатор менять, чтоб добавить новое синтаксиальное говно для этого <=>), а хоть целую, блядь, эскадрилью космических кораблей, которая работает не только для "больше меньше равно", но и для любой вообразимой поебени

    Но крестушкам конечно привычней добавить какой-то ad-hoc хуиты для частных случаев.

    j123123, 07 Мая 2021

    Комментарии (9)
  8. JavaScript / Говнокод #27396

    +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
    // Define the module
    define(function(require) {
      // Require empty list error
      var EmptyListError = require('../errors/property_errors').EmptyListError;
    
      // Character-rank list class
      function WeightedList(/* ...keys */) {
        this._total = 0;
        this._generateList.apply(this, arguments);
      }
    
      WeightedList.prototype._generateList = function() {
        var collection;
        if (typeof arguments[0] == 'object') {
          collection = arguments[0];
        } else {
          collection = arguments;
        }
    
    
        for (var i = 0; i < collection.length; i++) {
          this[collection[i]] = this[collection[i]] === undefined ? 1 : this[collection[i]] + 1;
          this._total++;
        }
      }
    
      WeightedList.prototype.getRandomKey = function() {
        if (this._total < 1)
          throw new EmptyListError();
    
        var num = Math.random();
        var lowerBound = 0;
    
        var keys = Object.keys(this);
        for (var i = 0; i < keys.length; i++) {
          if (keys[i] != "_total") {
            if (num < lowerBound + this[keys[i]] / this._total) {
              return keys[i];
            }
            lowerBound += this[keys[i]] / this._total;
          }
        }
    
        return keys[keys.length - 1];
      };
    
      WeightedList.prototype.increaseRank = function(key) {
        if (key !== undefined && key != "_total") {
          if (this[key] !== undefined) {
            this[key]++;
          } else {
            this[key] = 1;
          }
    
          this._total++;
        }
      };
    
      WeightedList.prototype.clearRanks = function() {
        var keys = Object.keys(this);
        for (var i = 0; i < keys.length; i++) {
          if (keys[i] != "_total") {
            this._total -= this[keys[i]] - 1;
            this[keys[i]] = 1;
          }
        }
      };
    
      return WeightedList;
    });

    Вот почему я за четкое разделение объектов/структур и хэшей (ассоциативных массивов).

    JaneBurt, 07 Мая 2021

    Комментарии (10)
  9. Go / Говнокод #27395

    +1

    1. 1
    2. 2
    3. 3
    if req.Lang != "" {
    	req.Lang = "EN"
    }

    Я сказал английский!

    [Поставленная задача: если пришёл запрос без поля, поставить значение по умолчанию]

    anon007, 06 Мая 2021

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

    0

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    // Since C++20
    
    struct A {
      int&& r;
    };
    A a1{7}; // OK, lifetime is extended
    A a2(7); // well-formed, but dangling reference

    Удачной отладки!

    PolinaAksenova, 06 Мая 2021

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