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

    Всего: 2

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

    +16

    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
    template<typename T1, typename T2, size_t OFFSET = 8>
    struct EnumMult
    {
        template<T1 t1, T2 t2>
        struct Static
        {
            static const size_t V = (t1 << OFFSET) | t2;
        };
    
        static size_t Dynamic(T1 t1, T2 t2)
        {
            return (t1 << OFFSET) | t2;
        }
    };
    
    // example
    #include <iostream>
    
    enum Suit
    {
        SPADES,
        CLUBS,
        DIAMONDS,
        HEARTS
    };
    
    enum Value
    {
        SEVEN,
        EIGHT,
        NINE,
        TEN,
        JACK,
        QUEEN,
        KING,
        ACE
    };
    
    int main()
    {
        typedef EnumMult<Suit, Value> CardMult;
        switch (CardMult::Dynamic(CLUBS, SEVEN))
        {
        case CardMult::Static<SPADES, ACE>::V:
            std::cout << "ACE OF SPADES";
            break;
        case CardMult::Static<CLUBS, SEVEN>::V:
            std::cout << "HOOK";
            break;
        default:
            std::cout << "NOTHING SPECIAL";
        }
        std::cout << std::endl;
        return 0;
    }

    Понадобилось обработать два enum'а конструкцией switch-case, подумал, что было бы круто сделать квадратный свитч-кейс, но пришла и другая идиотская идея: шаблон для декартова умножения двух енумов. Заранее извините, если паттерн известный.

    vercetti, 07 Июля 2012

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

    +111

    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
    __flash unsigned char keyGenData[256*7]={
            1*(1<<0)+1*(1<<1)+1*(1<<2)+1*(1<<3)+1*(1<<4),
            1*(1<<0)+1*(1<<1)+1*(1<<2)+1*(1<<3)+1*(1<<4),
            1*(1<<0)+1*(1<<1)+1*(1<<2)+1*(1<<3)+1*(1<<4),
            1*(1<<0)+1*(1<<1)+1*(1<<2)+1*(1<<3)+1*(1<<4),
            1*(1<<0)+1*(1<<1)+1*(1<<2)+1*(1<<3)+1*(1<<4),
            1*(1<<0)+1*(1<<1)+1*(1<<2)+1*(1<<3)+1*(1<<4),
            1*(1<<0)+1*(1<<1)+1*(1<<2)+1*(1<<3)+1*(1<<4),
    
            1*(1<<0)+1*(1<<1)+0*(1<<2)+1*(1<<3)+1*(1<<4),
            1*(1<<0)+1*(1<<1)+1*(1<<2)+0*(1<<3)+1*(1<<4),
            0*(1<<0)+0*(1<<1)+0*(1<<2)+0*(1<<3)+0*(1<<4),
            1*(1<<0)+1*(1<<1)+1*(1<<2)+0*(1<<3)+1*(1<<4),
            1*(1<<0)+1*(1<<1)+0*(1<<2)+1*(1<<3)+1*(1<<4),
            1*(1<<0)+1*(1<<1)+1*(1<<2)+1*(1<<3)+1*(1<<4),
            1*(1<<0)+1*(1<<1)+1*(1<<2)+1*(1<<3)+1*(1<<4),
    
            1*(1<<0)+1*(1<<1)+1*(1<<2)+1*(1<<3)+1*(1<<4),
            1*(1<<0)+1*(1<<1)+0*(1<<2)+1*(1<<3)+1*(1<<4),
            1*(1<<0)+1*(1<<1)+1*(1<<2)+0*(1<<3)+1*(1<<4),
            0*(1<<0)+0*(1<<1)+0*(1<<2)+0*(1<<3)+0*(1<<4),
            1*(1<<0)+1*(1<<1)+1*(1<<2)+0*(1<<3)+1*(1<<4),
            1*(1<<0)+1*(1<<1)+0*(1<<2)+1*(1<<3)+1*(1<<4),
            1*(1<<0)+1*(1<<1)+1*(1<<2)+1*(1<<3)+1*(1<<4),
    
            1*(1<<0)+1*(1<<1)+1*(1<<2)+1*(1<<3)+1*(1<<4),
            1*(1<<0)+1*(1<<1)+1*(1<<2)+1*(1<<3)+1*(1<<4),
            1*(1<<0)+1*(1<<1)+0*(1<<2)+1*(1<<3)+1*(1<<4),
            1*(1<<0)+1*(1<<1)+1*(1<<2)+0*(1<<3)+1*(1<<4),
            0*(1<<0)+0*(1<<1)+0*(1<<2)+0*(1<<3)+0*(1<<4),
            1*(1<<0)+1*(1<<1)+1*(1<<2)+0*(1<<3)+1*(1<<4),
            1*(1<<0)+1*(1<<1)+0*(1<<2)+1*(1<<3)+1*(1<<4),
    
            0*(1<<0)+1*(1<<1)+1*(1<<2)+0*(1<<3)+1*(1<<4), //"4"
            0*(1<<0)+1*(1<<1)+1*(1<<2)+0*(1<<3)+1*(1<<4),
            0*(1<<0)+1*(1<<1)+1*(1<<2)+0*(1<<3)+1*(1<<4),
            0*(1<<0)+0*(1<<1)+0*(1<<2)+0*(1<<3)+1*(1<<4),
            1*(1<<0)+1*(1<<1)+1*(1<<2)+0*(1<<3)+1*(1<<4),
            1*(1<<0)+1*(1<<1)+1*(1<<2)+0*(1<<3)+1*(1<<4),
            1*(1<<0)+1*(1<<1)+1*(1<<2)+0*(1<<3)+1*(1<<4),
    
            0*(1<<0)+0*(1<<1)+0*(1<<2)+0*(1<<3)+1*(1<<4), //"5"
            0*(1<<0)+1*(1<<1)+1*(1<<2)+1*(1<<3)+1*(1<<4),
            0*(1<<0)+0*(1<<1)+0*(1<<2)+1*(1<<3)+1*(1<<4),
            1*(1<<0)+1*(1<<1)+1*(1<<2)+0*(1<<3)+1*(1<<4),
            1*(1<<0)+1*(1<<1)+1*(1<<2)+0*(1<<3)+1*(1<<4),
            0*(1<<0)+1*(1<<1)+1*(1<<2)+0*(1<<3)+1*(1<<4),
            1*(1<<0)+0*(1<<1)+0*(1<<2)+1*(1<<3)+1*(1<<4),

    Нарыл в институте.

    Забивают цифры для показывания на светодиодной панельке 5x7 (если присмотритесь, можете увидеть картинку, образуемую нулями). Такой простыни 96 КБ.

    vercetti, 30 Апреля 2012

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