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

    Всего: 7

  2. Куча / Говнокод #27927

    +4

    1. 1
    2. 2
    3. 3
    4. 4
    function H2I takes handle h returns integer
      return h
      return 0
    endfunction

    Return Bug. Интересно, кто-то ещё помнит?

    Soul_re@ver, 06 Января 2022

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

    +8

    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
    constexpr auto auto​()
    {
      return 1;
    }
    
    typedef decltype(auto​()) auto​​;
    const auto​​ auto​​​ = auto​();
    
    template <typename auto​​​​>
    constexpr auto auto​​​​​() {
        return auto​​​;
    }
    
    template <typename auto​​​​, typename auto​​​​​​, typename... auto​​​​​​​>
    constexpr auto auto​​​​​() {
        return auto​​​ + auto​​​​​<auto​​​​​​, auto​​​​​​​...>();
    }
    
    int main()
    {
      constexpr auto auto​​​​​​​ = auto​​​​​<auto​​,auto​​,auto​​,auto​​,auto​​,auto​​>();
      constexpr auto auto​​​​ = auto​​​​​<auto​​,auto​​,auto​​,auto​​,auto​​,auto​​,auto​​>();
      return auto​​​​​​​*auto​​​​; 
    }

    auto auto auto...
    https://twitter.com/RichardKogelnig/status/943497972481953792
    https://godbolt.org/g/Yvczo1

    Soul_re@ver, 20 Декабря 2017

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

    +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
    template<typename T>
    T* sanitize(T* p)
    {
        return reinterpret_cast<T*>(
          reinterpret_cast<uintptr_t>(p) & ~(alignof(T)-1));
    }
    
    template<typename T>
    constexpr size_t avaliable_width()
    {
      	switch(alignof(T))
        {
          case 1: return 0;
          case 2: return 1;
          case 4: return 2;
          case 8: return 3;
          case 16: return 4;
          case 32: return 5;
          case 64: return 6;
          case 128: return 7;
          case 256: return 8;
          default: return 0;
        }
    }
    
    template<size_t bit, typename T>
    T* set_tag(T* p, bool tagged = true)
    {
      	static_assert(bit < avaliable_width<T>(), "bad_width");
    
    	if(tagged) {
         	return reinterpret_cast<T*>(
            	reinterpret_cast<uintptr_t>(p) | 1 << bit); 
        }
      	return reinterpret_cast<T*>(
          	reinterpret_cast<uintptr_t>(p) & ~(uintptr_t(1) << bit));
    }
    
    template<size_t bit, typename T>
    bool get_tag(T* p)
    {
      	static_assert(bit < avaliable_width<T>(), "bad_width");
      	return reinterpret_cast<uintptr_t>(p) >> bit & 1;
    }

    Младшие биты указателей на выравненные типы всегда нулевые. Из за этого (по формуле Шеннона) указатель несёт в себе меньше информации, оставаясь того же размера. Битоёбов это расстраивает.

    Soul_re@ver, 16 Июня 2016

    Комментарии (204)
  5. Java / Говнокод #19897

    −23

    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
    package com.engineerdollery;
    
    import java.util.List;
    import java.util.Map;
    import java.util.stream.Collectors;
    import java.util.stream.IntStream;
    
    import static java.util.stream.Collectors.*;
    
    public class FizzBuzz {
        private static final String NUMBER = "\\d+";
    
        public String basic() {
            return IntStream.rangeClosed(1, 20)
                    .parallel()
                    .mapToObj(i -> i % 15 == 0 ? "fizzbuzz"
                            : i % 3 == 0 ? "fizz"
                            : i % 5 == 0 ? "buzz"
                            : Integer.toString(i))
                    .collect(joining(" "));
        }
    
        public String lucky() {
            return IntStream.rangeClosed(1, 20)
                    .parallel()
                    .mapToObj(i -> Integer.toString(i).contains("3") ? "lucky" // this is the only change from basic()
                            : i % 15 == 0 ? "fizzbuzz"
                            : i % 3 == 0 ? "fizz"
                            : i % 5 == 0 ? "buzz"
                            : Integer.toString(i))
                    .collect(joining(" "));
        }
    
        public String counter() {
            List<String> fizzBuzzList = IntStream.rangeClosed(1, 20)
                    .parallel()
                    .mapToObj(i -> Integer.toString(i).contains("3") ? "lucky"
                            : i % 15 == 0 ? "fizzbuzz"
                            : i % 3 == 0 ? "fizz"
                            : i % 5 == 0 ? "buzz"
                            : Integer.toString(i))
                    .collect(Collectors.toList());
    
            Map<String, Long> countMap = fizzBuzzList
                    .parallelStream()
                    .collect(groupingBy(s -> s.matches(NUMBER) ? "integer" : s, counting()));
    
            // reports
    
            String fizzbuzz = fizzBuzzList.parallelStream().collect(joining(" "));
    
            String counts = countMap.entrySet().parallelStream()
                    .map(e -> e.getKey() + ": " + e.getValue())
                    .collect(joining("\n"));
    
            return fizzbuzz + "\n" + counts;
        }
    }

    Поддерживаемый вариант FizzBuzz с параллелизмом и регулярными выражениями.
    Взято отсюда: http://codereview.stackexchange.com/questions/126845/interview-coding-test-fizz-buzz

    Soul_re@ver, 28 Апреля 2016

    Комментарии (8)
  6. Python / Говнокод #19632

    −43

    1. 1
    2. 2
    damage, self.magic_shield_hp = sorted([0, magic_shield_hp - damage])
    damage = -damage

    Интуитивно понятный способ реализовать урон, пробивающий защиту.

    Soul_re@ver, 15 Марта 2016

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

    +56

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    std::uint8_t octets[4];
    for(int i = 0; i < 4; ++i) {
        if(i != 0 && inp.get() != '.')
            { assert(false && "unexpected symbol"); }
        inp >> octets[i];
    }

    Два вида говна: в коде и в языке.

    Soul_re@ver, 28 Ноября 2014

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

    +8

    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
    {
        if(find(p) == board.end() || (*find(p))->suit != (*selected)->suit)[&]
        {
            {
              auto it = std::find_if(board.pieceCapturings().begin(),
                           board.pieceCapturings().end(),
                                       [&](board::Board::Movements_t::value_type const &m)
                                       {
                                           return m.first == selected && m.second == p;
                                       });
                if(it != board.pieceCapturings().end())
                {
                    for(auto jt = board.pieceCapturables().begin(); jt != board.pieceCapturables().end(); ++jt)
                    {
                        if(jt->second == p)
                        {
                            if(board.capture(selected, it, jt))
                            {
                                nextTurn();
                                return;
                            }
                        }
                    }
                }
            }
            {
                auto it = std::find_if(board.pieceTrajectories().begin(),
                                       board.pieceTrajectories().end(),
                                       [&](board::Board::Movements_t::value_type const &m)
                                       {
                                           return m.first == selected && m.second == p;
                                       });
                if(it != board.pieceTrajectories().end())
                {
                    if(board.move(selected, it))
                    {
                        nextTurn();
                    }
                }
            }
        }();
        selected = board.end(); //deselect
    }

    https://github.com/cpluspluscom/ChessPlusPlus/blob/master/src/app/ChessPlusPlusState.cpp
    When you see it...

    Soul_re@ver, 25 Июня 2014

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